Linux个人心得27 (redis哨兵模式实战)

OpenEuler Redis Sentinel 哨兵模式(一主二从 + 三哨兵)完整配置流程环境

Master(主机):192.168.95.88(Redis 端口 6379)Slave1:192.168.95.133(Redis 端口 6379)Slave2:192.168.95.131(Redis 端口 6379)Sentinel 端口:每台机器统一使用 26379(与 Redis 6379 端口不同,符合"配置不同端口"要求)操作系统:OpenEuler已完成主从复制(如果还未配置,请先执行上一次的主从步骤)不考虑 SELinux 和防火墙

架构说明:三台机器每台部署 1 个 Sentinel 实例(共 3 个哨兵),组成 Sentinel 集群。Sentinel 互相发现、共同监控 Master,quorum=2(至少 2 个哨兵同意才能执行故障转移)。

  1. 三台机器统一操作:准备 Sentinel 配置文件在 88、133、131 三台机器上全部执行: Bash# 备份(如果存在默认文件) sudo cp /etc/redis/sentinel.conf /etc/redis/sentinel.conf.bak 2>/dev/null || true

创建/覆盖 sentinel.conf(推荐使用此完整配置)

sudo cat > /etc/redis/sentinel.conf << 'EOF'

Sentinel 基本配置(端口与 Redis 不同)

port 26379bind 0.0.0.0protected-mode nodaemonize yes

日志和数据目录

logfile "/var/log/redis/sentinel.log"dir "/var/lib/redis"

监控 Master(关键配置)

mymaster 是自定义的集群名称,192.168.95.88 是当前 Master IP

6379 是 Redis 端口,2 是 quorum(3 个哨兵中至少 2 个同意才 failover)

sentinel monitor mymaster 192.168.95.88 6379 2

其他常用参数(推荐默认值)

sentinel down-after-milliseconds mymaster 10000sentinel failover-timeout mymaster 180000sentinel parallel-syncs mymaster 1sentinel deny-scripts-reconfig yesEOF

授权和目录权限

sudo chown redis:redis /etc/redis/sentinel.confsudo mkdir -p /var/log/redis /var/lib/redissudo chown -R redis:redis /var/log/redis /var/lib/redis

  1. 三台机器启动 Sentinel在 88、133、131 三台机器上全部执行: Bash# 启动 Sentinel(使用 --sentinel 参数) sudo redis-server /etc/redis/sentinel.conf --sentinel

或者使用 redis-sentinel 命令(效果相同)

sudo redis-sentinel /etc/redis/sentinel.conf

查看进程是否启动

ps -ef | grep sentinel

设置开机自启(推荐方式,创建 systemd 服务)

sudo tee /etc/systemd/system/redis-sentinel.service > /dev/null << 'EOF'UnitDescription=Redis SentinelAfter=network.target redis.service

ServiceType=simpleUser=redisGroup=redisExecStart=/usr/bin/redis-server /etc/redis/sentinel.conf --sentinelRestart=alwaysRestartSec=5LimitNOFILE=65535

InstallWantedBy=multi-user.targetEOF

sudo systemctl daemon-reloadsudo systemctl enable --now redis-sentinelsudo systemctl status redis-sentinel

  1. 详细验证过程(必须一步步操作)步骤①:验证 Sentinel 集群是否正常 在任意一台机器(推荐在 Master 88 上)执行: Bash# 连接任意 Sentinel redis-cli -h 192.168.95.88 -p 26379

查看 Sentinel 信息(关键命令)

INFO sentinel

预期输出关键内容:

sentinel_masters:1

sentinel_tilt:0

sentinel_running_scripts:0

sentinel_scripts_queue_length:0

sentinel_simulate_failure_flags:0

master0:name=mymaster,status=ok,address=192.168.95.88:6379,slaves=2,sentinels=3

在三台机器上都执行一次 INFO sentinel,确认每台 Sentinel 都看到:

sentinels=3(三个哨兵互相发现)slaves=2status=ok

步骤②:查看 Sentinel 对 Master/Slave 的监控状态Bashredis-cli -p 26379 SENTINEL mastersredis-cli -p 26379 SENTINEL slaves mymasterredis-cli -p 26379 SENTINEL sentinels mymaster预期:能看到 Master IP、两个 Slave、三个 Sentinel 信息全部正常。步骤③:故障转移(Failover)实测(最重要验证)

在 Master(88) 上停止 Redis(模拟宕机):Bashsudo systemctl stop redis立即在任意一台 Sentinel 上持续监控(新开终端):Bashredis-cli -p 26379 -h 192.168.95.88

INFO sentinel # 反复执行,观察 status 变化查看 Sentinel 日志(实时观察切换过程):Bashtail -f /var/log/redis/sentinel.log预期日志关键字(会出现):+sdown master mymaster ...(检测到 Master 下线)+odown master mymaster ...(客观下线)+new-epoch / +vote-for-leader+failover-end master mymaster ...(切换完成)+switch-master mymaster 192.168.95.88 6379 192.168.95.xxx 6379(新 Master 出现)

切换完成后验证(大约 10~30 秒后):在原来 Slave1(133)或 Slave2(131) 上查看角色(其中一台会变成 Master):Bashredis-cli -h 192.168.95.133

INFO replication

预期其中一台显示:role:master

在新 Master 上写入测试数据:Bashredis-cli -h <新Master-IP>

SET failover_test "Sentinel 切换成功"在另一个 Slave 上读取(确认同步):Bashredis-cli -h <另一个Slave-IP>GET failover_test

恢复旧 Master(验证自动变为 Slave):Bash# 在 88 上重启 Redissudo systemctl start redis等待 10 秒后检查:Bashredis-cli -h 192.168.95.88 INFO replication

预期:role:slave + master_host 指向新的 Master IP

  1. 客户端连接 Sentinel(生产推荐方式)客户端不再直接连 Redis IP,而是连 Sentinel 询问当前 Master: Bashredis-cli -p 26379 SENTINEL get-master-addr-by-name mymaster

返回当前 Master 的 IP:端口

完成!

相关推荐
贵州诚鑫致达科技有限公司10 小时前
Linux的yum源怎么重启?源不是服务
linux·运维·服务器
骇客野人11 小时前
在麒麟操作系统上 分别安装 jdk1.8, 达梦数据库,redis ,memcache 的操作实施方案和步骤
数据库·redis·memcached
澜山奕秋13 小时前
RHCSA
linux·运维·服务器
Web极客码14 小时前
告别流式截断:我用客户端中间件解决长文本 API 跨国 SSE 断连与数据自愈
linux·agent 图
cnnews14 小时前
Chromebox3安装Ubuntu后内存化与最小化 eMMC 写入优化
linux·运维·ubuntu
.Bryce.14 小时前
在智能体中使用A2A工具:让大模型自己决定“该找谁帮忙“
android·java·服务器·redis·后端·agent·a2a
flytalei14 小时前
Ubuntu 24.04 单节点 K3s 部署实践:从环境评估到故障排查与验收
linux·运维·ubuntu
Starry-sky(jing)15 小时前
Hermes Agent 部署后怎么升级?v0.21.7 Linux 源代码版实测
linux·人工智能·ai agent·版本升级·hermes agent
水饺编程15 小时前
第2章:Linux 基础,clear 命令
linux·c语言·汇编
GeW16 小时前
新质生产力路线图Linux和数据库自主可控实践指南
linux