基于sentinel+redis下HA集群的搭建

[摘要]之前的文章中介绍了redis+keepalived来实现HA环境的搭建,redis2.8版本以上加入了sentinel的模块,可以实现高可用,下面对sentinel+redis下HA集群的搭建进行了一下测试,首先配置redis的master+slave,其中我使用的redis版本为2.8.7。

基本环境状况:
redis-master: 192.168.100.117
redis-slave: 192.168.100.118
setinel: 192.168.100.119

sentinel配置

$ cat sentinel.conf
port 26379
sentinel monitor def_master 192.168.100.117 6379 1
sentinel auth-pass def_master 123456
sentinel down-after-milliseconds def_master 5000
sentinel can-failover def_master yes
sentinel parallel-syncs def_master 1
sentinel failover-timeout def_master 900000

(1)启动主从redis
(2)查看主从状态

# /usr/local/redis-2.8/bin/redis-cli -h 192.168.100.118 -p 6379 -a 123456 info Replication
# Replication
role:slave
master_host:192.168.100.117
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:3066
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

(3)启动sentinel,具体参数定义可以参考redis官方文档

/usr/local/redis-2.8/bin/redis-server /usr/local/redis-2.8/conf/sentinel.conf --sentinel
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 2.8.7 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in sentinel mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 26379
 |    `-._   `._    /     _.-'    |     PID: 4055
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

[4055] 17 Mar 12:33:46.397 # Sentinel runid is 954943cc4c46afa159e063953c056f2e9068ecce
[4055] 17 Mar 12:33:46.397 # +monitor master def_master 192.168.100.117 6379 quorum 1
[4055] 17 Mar 12:33:47.400 * +slave slave 192.168.100.118:6379 192.168.100.118 6379 @ def_master 192.168.100.117 6379

(4)停止Master redis,及Sentinel日志如下:

# /usr/local/redis-2.8/bin/redis-cli -h 192.168.100.117 -p 6379 -a 123456 shutdown

[4055] 17 Mar 12:35:11.755 # +sdown master def_master 192.168.100.117 6379
[4055] 17 Mar 12:35:11.755 # +odown master def_master 192.168.100.117 6379 #quorum 1/1
[4055] 17 Mar 12:35:11.755 # +new-epoch 1
[4055] 17 Mar 12:35:11.755 # +try-failover master def_master 192.168.100.117 6379
[4055] 17 Mar 12:35:11.755 # +vote-for-leader 954943cc4c46afa159e063953c056f2e9068ecce 1
[4055] 17 Mar 12:35:11.755 # +elected-leader master def_master 192.168.100.117 6379
[4055] 17 Mar 12:35:11.755 # +failover-state-select-slave master def_master 192.168.100.117 6379
[4055] 17 Mar 12:35:11.839 # +selected-slave slave 192.168.100.118:6379 192.168.100.118 6379 @ def_master 192.168.100.117 6379
[4055] 17 Mar 12:35:11.839 * +failover-state-send-slaveof-noone slave 192.168.100.118:6379 192.168.100.118 6379 @ def_master 192.168.100.117 6379
[4055] 17 Mar 12:35:11.916 * +failover-state-wait-promotion slave 192.168.100.118.:6379 192.168.100.118 6379 @ def_master 192.168.100.117 6379

(5)查看redis切换状态(原slave)

# /usr/local/redis-2.8/bin/redis-cli -h 192.168.100.118 -p 6379 -a 123456 info Replication
# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

(6)再次启动Redis master

/usr/local/redis-2.8/bin/redis-server /usr/local/redis-2.8/conf/redis.conf &

(7)查看Sentinel日志

[4055] 17 Mar 12:35:12.817 # +promoted-slave slave 192.168.100.118:6379 192.168.100.118 6379 @ def_master 192.168.100.117 6379
[4055] 17 Mar 12:35:12.818 # +failover-state-reconf-slaves master def_master 192.168.100.117 6379
[4055] 17 Mar 12:35:12.835 # +failover-end master def_master 192.168.100.117 6379
[4055] 17 Mar 12:35:12.835 # +switch-master def_master 192.168.100.117 6379 192.168.1.118 6379
[4055] 17 Mar 12:35:12.835 * +slave slave 192.168.100.117:6379 192.168.100.117 6379 @ def_master 192.168.100.118 6379
[4055] 17 Mar 12:35:17.850 # +sdown slave 192.168.100.117:6379 192.168.100.117 6379 @ def_master 192.168.100.118 6379
[4055] 17 Mar 12:36:36.204 * +convert-to-slave slave 192.168.100.117:6379 192.168.100.117 6379 @ def_master 192.168.100.118 6379

(8)再次查看redis主从状态

# /usr/local/redis-2.8/bin/redis-cli -h 192.168.100.117 -p 6379 -a 123456 info Replication
# Replication
role:slave
master_host:192.168.100.118
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:166620
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

# /usr/local/redis-2.8/bin/redis-cli -h 192.168.100.118 -p 6379 -a 123456 info Replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.100.117,port=6379,state=online,offset=167778,lag=1
master_repl_offset:167921
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:167920

可以看到主从已经恢复,不过Master和Slave做了对调,这样sentinel+redis下HA集群的搭建测试完成,不过本文只是使用了一个sentinel节点,特此说明。

u2

Related Posts

redis多数据库使用防止key冲突

【摘要】实际应用中会有多个项目都要使用redis,如果每一个…

keepalived+redis实现HA的验证

之前对Redis的使用还是中规中矩的Master+Slave…

You Missed

OpenClaw 完整使用指南:自托管 AI Agent 的架构与实战

  • u2
  • 2月 25, 2026
  • 41 views
OpenClaw 完整使用指南:自托管 AI Agent 的架构与实战

Anthropic 推出 Claude Code Security:AI 驱动的代码安全神器

  • u2
  • 2月 24, 2026
  • 37 views

来自 OWASP 的代码安全检查工具:Dependency-Check,为你消除安全隐患

  • u2
  • 10月 16, 2025
  • 20 views
来自 OWASP 的代码安全检查工具:Dependency-Check,为你消除安全隐患

技术宅如何躲开越来越垃圾的CSDN?

  • u2
  • 4月 11, 2024
  • 10 views
技术宅如何躲开越来越垃圾的CSDN?

mysql连接失败:The driver has not received any packets from the server

  • u2
  • 3月 26, 2024
  • 12 views
mysql连接失败:The driver has not received any packets from the server

几个IT小哥常用的工具挂图

  • u2
  • 3月 22, 2024
  • 4 views