当前位置: 首页 > news >正文

Rocky8 部署 Redis 7.0.15 一主两从哨兵模式

一、环境说明

服务器 IP 节点角色 Redis 端口 哨兵端口 系统版本
192.168.2.62 Master 36380 37380 Rocky Linux 8.x
192.168.2.61 Slave 36380 37380 Rocky Linux 8.x
192.168.2.63 Slave 36380 37380 Rocky Linux 8.x

二、前置准备(所有节点执行)

1. 关闭防火墙和 SELinux

# 关闭防火墙并禁用开机自启
systemctl stop firewalld && systemctl disable firewalld
# 临时关闭SELinux
setenforce 0
# 永久关闭SELinux(重启生效)
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

2. 安装依赖包

Rocky8 与 CentOS7 依赖包存在差异,优化适配版本:

yum install -y make zlib-devel openssl-devel gcc gcc-c++ wget ruby rubygems

3. 内核调优(适配 Rocky8 内核特性)

# 关闭透明大页(临时+永久)
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local
chmod +x /etc/rc.local# 调整内存过度提交策略
echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
# 新增Rocky8推荐的内核参数(提升Redis性能)
echo "net.core.somaxconn = 1024" >> /etc/sysctl.conf
echo "vm.swappiness = 0" >> /etc/sysctl.conf
sysctl -p

4. 创建目录结构(规范化目录)

mkdir -p /data/{redis,log/redis,log/sentinel}
mkdir -p /etc/redis/conf.d
#若使用普通用户,需赋予权限
chown -R 用户:用户 /data/redis /etc/redis
chmod -R 755 /data/log

三、Redis 安装(所有节点执行)

1. 下载并解压 Redis 7.0.15

cd /root
wget http://download.redis.io/releases/redis-7.0.15.tar.gz --no-check-certificate
tar -zxvf redis-7.0.15.tar.gz
cd redis-7.0.15

2. 编译安装(适配 Rocky8 编译环境)

make 
make install PREFIX=/usr/local/redis
# 创建软链接,方便全局调用
ln -s /usr/local/redis/bin/* /usr/bin/

四、Redis 配置(分节点配置)

1. 通用配置模板(所有节点基础配置)

创建 /etc/redis/conf.d/36380.conf,内容如下:

# 基础网络配置
protected-mode no
bind 0.0.0.0
port 36380
tcp-backlog 511
timeout 0
tcp-keepalive 300# 后台运行配置
daemonize yes
pidfile "/var/run/redis_36380.pid"
logfile "/data/log/redis/36380.log"
loglevel notice# 数据存储配置
dir "/data/redis"
dbfilename "36380.rdb"
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes# 安全配置
rename-command flushall jjxtflushall
requirepass redis@123
masterauth redis@123# 主从复制配置
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
repl-backlog-size 2G
repl-timeout 3600# AOF配置
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble no# 性能优化配置
databases 10
always-show-logo yes
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hz 10
aof-rewrite-incremental-fsync yes# 客户端缓冲区限制
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60# 数据结构优化
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes

2. 分节点差异化配置

(1)Master 节点(192.168.2.62)

无需新增主从配置,通用配置已满足。

(2)Slave 节点(192.168.2.61/63)

/etc/redis/conf.d/36380.conf 末尾添加:

replicaof 192.168.2.62 36380

五、启动 Redis(所有节点执行)

1. 启动命令(绑定 CPU 核心,提升性能,根据需要执行)

# 绑定2-5核心启动(根据服务器CPU核数调整)
taskset -c 2-5 redis-server /etc/redis/conf.d/36380.conf
# 验证启动状态
ps -ef | grep redis-server | grep 36380

2. 配置开机自启

[Unit]
Description=Redis 36380 Service
After=network.target[Service]
Type=forking
ExecStart=/usr/bin/redis-server /etc/redis/conf.d/36380.conf
ExecStop=/usr/bin/redis-cli -p 36380 -a redis@123 shutdown
Restart=on-failure
RestartSec=5
CPUAffinity=2-5[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now redis-36380.service

3. 验证主从状态(Master 节点执行)

redis-cli -h 192.168.2.62 -p 36380 -a redis@123 info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.2.61,port=36380,state=online,offset=xxx,lag=1
slave1:ip=192.168.2.63,port=36380,state=online,offset=xxx,lag=1
master_failover_state:no-failover
...

六、哨兵配置(所有节点执行)

1. 创建哨兵配置文件 /etc/redis/conf.d/sentinel_37380.conf

# 基础配置
bind 0.0.0.0
port 37380
protected-mode no
daemonize yes
pidfile "/var/run/redis-sentinel_37380.pid"
dir "/data/log/sentinel"
logfile "/data/log/sentinel/37380.log"
loglevel notice# 主节点监控配置(quorum=2,需2个哨兵确认主节点故障)
sentinel monitor redis-master 192.168.2.62 36380 2
# 节点不可达超时时间(毫秒)
sentinel down-after-milliseconds redis-master 30000
# 故障转移超时时间
sentinel failover-timeout redis-master 180000
# 主节点认证密码
sentinel auth-pass redis-master redis@123
# 并行同步从节点数(一主两从场景设为1,避免带宽占用过高)
sentinel parallel-syncs redis-master 1

2. 启动哨兵

redis-sentinel /etc/redis/conf.d/sentinel_37380.conf
# 验证启动状态
ps -ef | grep redis-sentinel | grep 37380

3. 哨兵开机自启

创建 /usr/lib/systemd/system/redis-sentinel-37380.service

[Unit]
Description=Redis Sentinel 37380 Service
After=network.target redis-36380.service[Service]
Type=forking
ExecStart=/usr/bin/redis-sentinel /etc/redis/conf.d/sentinel_37380.conf
ExecStop=/usr/bin/redis-cli -p 37380 shutdown
Restart=on-failure
RestartSec=5[Install]
WantedBy=multi-user.target

加载并启用服务:

systemctl daemon-reload
systemctl enable --now redis-sentinel-37380.service

七、故障测试(验证哨兵功能)

1. 停止 Master 节点 Redis 服务

# 在192.168.2.62执行
systemctl stop redis-36380.service

2. 验证故障转移(任意 Slave 节点执行)

redis-cli -h 本机IP -p 36380 -a redis@123 info replication

预期结果:其中一个 Slave 节点切换为 Master,另一个 Slave 节点指向新 Master,原 Master 重启后变为 Slave。

3. 查看哨兵日志(确认故障转移过程)

tail -f /data/log/sentinel/37380.log

4. 恢复原 Master 节点

# 在192.168.2.62执行
systemctl start redis-36380.service
# 验证角色(应为Slave)
redis-cli -h 192.168.2.62 -p 36380 -a redis@123 info replication

八、ACL 用户配置(增强安全)

1. 创建管理员用户

redis-cli -h 192.168.2.62 -p 36380 -a redis@123 ACL SETUSER admin on >StrongPass123! allcommands allkeys

2. 创建只读用户

redis-cli -h 192.168.2.62 -p 36380 -a redis@123 ACL SETUSER readonly on >ReadPass456! ~* +@read

3. 保存 ACL 规则(永久生效)

redis-cli -h 192.168.2.62 -p 36380 -a redis@123 ACL SAVE

九、日常运维命令

1. 查看 Redis 状态

redis-cli -h 节点IP -p 36380 -a redis@123 info

2. 查看哨兵状态(确认主节点信息)

redis-cli -h 节点IP -p 37380 info sentinel

3. 手动触发故障转移(测试场景使用)

redis-cli -h 哨兵IP -p 37380 sentinel failover redis-master

4. 查看主从复制延

redis-cli -h Slave节点IP -p 36380 -a redis@123 info replication | grep lag
http://www.gsyq.cn/news/71383.html

相关文章:

  • MATLAB实现:基于博弈论的全双工系统无线资源分配
  • 云主机带宽与传输速度的关系
  • 2025年AI自习室加盟推荐:AI自习室加盟风险与选择建议
  • 2025AI 自习室加盟值吗?优质代理品牌有哪些
  • 在windows平台上通过ssh-agent实现git凭证持久化
  • 2025 共聚焦显微镜厂家推荐:聚焦核心技术,优选靠谱合作伙伴
  • 2025年11月学习机品牌推荐:找准适配款,提分更高效
  • 安卓-本地asr语音识别-将非流式处理成流式-应用层面简单处理转换
  • MySQL 表误操作(RENAME + DROP)数据恢复技术文档
  • Redis主从哨兵模式连接踩坑全记录
  • 精细化+强执行 路尚控股集团股东会议为管理升级提供新思路
  • 新中心聚焦可信机器学习安全与隐私技术
  • 老年痴呆的早期干预治疗方案是什么?2025十大产品全面分析,KOUND脑醒素具有实际作用
  • 国标GB28181算法算力平台EasyGBS打造大型企业园区一体化安防监控新体系
  • 选择四川耀霖交通:您专业的四川道路交通标志牌厂家推荐
  • 2025年五大数控插齿机实力厂商推荐,专业插齿机厂家技术与服
  • 2025年度中国铁艺冲压配件厂家排名:助力精准匹配高品质铁艺
  • 2025佛山财产分割律师服务TOP5权威推荐:知名律所深度测
  • 2025年金华苹果售后维修点推荐:哪家口碑更出色?多维度比较与选购建议
  • 还在用 Nginx Ingress?这份阿里云迁移实操指南,让你无缝切换,功能升级!
  • 制造业上云怎么选?深信服托管云给出最优解
  • 2025 年砂磨机厂家最新推荐榜,技术实力与市场口碑深度解析纳米卧式砂磨机/实验室砂磨机/棒销砂磨机/卧式砂磨机/立式砂磨机/涡轮式砂磨机/实验室纳米砂磨机公司推荐
  • 2025年修补防水涂料生产厂家推荐榜,助你轻松选择可靠供应商
  • 基于Python+Vue开发的体育用品商城管理系统源码+运行步骤+适合计算机专业
  • 2025 年坡口机厂家最新推荐榜,技术实力与市场口碑深度解析,精选高性能可靠品牌自走式坡口机/板材坡口机/钢板铣边机/管道坡口机/封头坡口机/台式铣边机/管道坡口机/钢板倒棱坡口机公司推荐
  • 2025年内磁喇叭可靠供应商TOP5权威推荐:看哪家内磁喇叭
  • 2025年重庆微信小程序怎么推广公司权威推荐榜单:网站定制开发‌/朋友圈广告计费方式‌/学校怎么投朋友圈广告‌源头公司精选
  • 2025年四诊仪直销厂家权威推荐榜单:体质辨识仪‌/经络仪‌/红外偏振光治疗仪‌源头厂家精选
  • 2025佛山财产分割律师服务TOP5权威推荐:看看哪家律师比
  • 地铁隧道风机公司排行榜To1!地铁隧道风机哪个品牌好?