首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Redis-哨兵(Sentinel)集群部署

Redis-哨兵(Sentinel)集群部署

作者头像
运维小路
发布2026-01-26 12:57:52
发布2026-01-26 12:57:52
2300
举报
文章被收录于专栏:运维小路运维小路

作者介绍:简历上没有一个精通的运维工程师 ,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

数据库是一个系统(应用)最重要的资产之一,所以我们的数据库将从以下几个数据库来进行介绍。

MySQL

PostgreSQL

MongoDB

Redis(本章节)

Etcd

上个小节我们介绍了哨兵(Sentinel)原理,本小节就通过一个搭建一个实际可行的哨兵集群。

架构

一主两从,配置文件参考上个小节:Redis-主从集群搭建。

代码语言:javascript
复制
# Replication
role:master
connected_slaves:2
min_slaves_good_slaves:2
slave0:ip=192.168.31.196,port=6379,state=online,offset=85,lag=1
slave1:ip=192.168.31.197,port=6379,state=online,offset=85,lag=2
master_repl_offset:85
repl_backlog_active:1
repl_backlog_size:268435456
repl_backlog_first_byte_offset:2
repl_backlog_histlen:84

部署哨兵

3个节点除了bind IP不一样,其他都一样,这里需要注意,哨兵启动以后,他会自动修改当前配置文件里面的部分信息。

代码语言:javascript
复制
vi /etc/redis-sentinel.conf

# 哨兵端口
port 26379

# 后台运行
daemonize yes

# 日志文件
logfile "/var/log/redis/sentinel.log"

# 工作目录
dir "/tmp"

# 监控的主节点信息:
# mymaster:主节点名称(可自定义)
# 192.168.31.195 6379:主节点地址和端口
# 2:quorum值(至少需要2个哨兵同意才能判定客观下线)
sentinel monitor mymaster 192.168.31.195 6379 2

# 主节点密码(如果设置了requirepass)
sentinel auth-pass mymaster your_redis_password

# 主观下线时间(毫秒)
sentinel down-after-milliseconds mymaster 5000

# 故障转移超时时间(毫秒)
sentinel failover-timeout mymaster 60000

# 并行同步的从节点数量
sentinel parallel-syncs mymaster 1

# 绑定IP(改为当前节点的IP)
bind 192.168.31.195

启动哨兵

如果是通过yum安装的Redis,则会附带哨兵(Sentinel)的服务,可以直接使用systemctl方式启动。

代码语言:javascript
复制
systemctl start redis-sentinel
systemctl enable redis-sentinel

查看哨兵信息

代码语言:javascript
复制
redis-cli -h 192.168.31.195 -p 26379 info
代码语言:javascript
复制
# 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.31.195:6379,slaves=2,sentinels=3

这里可以看到哨兵里面的信息,可以看到当前master,有2个从节点,哨兵节点有3个。

宕机测试

可以从哨兵的日志里面看哨兵选举新maste的过程,这里实际上有一个坑,看看你们有没有发现。

代码语言:javascript
复制
1137:X 18 Jan 23:32:26.642 # -odown master mymaster 192.168.31.195 6379
1137:X 18 Jan 23:33:25.601 # +failover-end-for-timeout master mymaster 192.168.31.195 6379
1137:X 18 Jan 23:33:25.601 # +failover-end master mymaster 192.168.31.195 6379
1137:X 18 Jan 23:33:25.601 * +slave-reconf-sent-be slave 192.168.31.196:6379 192.168.31.196 6379 @ mymaster 192.168.31.195 6379
1137:X 18 Jan 23:33:25.601 * +slave-reconf-sent-be slave 192.168.31.197:6379 192.168.31.197 6379 @ mymaster 192.168.31.195 6379
1137:X 18 Jan 23:33:25.601 # +switch-master mymaster 192.168.31.195 6379 192.168.31.196 6379
1137:X 18 Jan 23:33:25.601 * +slave slave 192.168.31.197:6379 192.168.31.197 6379 @ mymaster 192.168.31.196 6379
1137:X 18 Jan 23:33:25.601 * +slave slave 192.168.31.195:6379 192.168.31.195 6379 @ mymaster 192.168.31.196 6379
1137:X 18 Jan 23:33:30.603 # +sdown slave 192.168.31.195:6379 192.168.31.195 6379 @ mymaster 192.168.31.196 6379

新master配置文件

可以看到新的master里面原来链接原master信息已经被删除。

另外一个从节点

原来195的Redis配置变成新的Redis196。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-01-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MongoDB
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档