哨兵-sentinel
单点故障可以通过主从/主备解决,但是需要人工维护主的故障问题,此时可以用HA高可用哨兵模式解决。
1.监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
2.提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
3.自动故障迁移(Automatic failover):当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。
新建 26379.conf ,26380.conf ,26381.conf 文件
port 26379 //哨兵端口号 26380 26381
sentinel monitor mymaster 127.0.0.1 6379 //监控该ip端口号的redis实例
redis-server /root/test/26379.conf --sentinel
[root@iZuf6ir4og87e245nh5ltuZ ~]# redis-server /root/test/26379.conf --sentinel
28108:X 10 Jan 2022 21:48:33.355 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
28108:X 10 Jan 2022 21:48:33.355 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=28108, just started
28108:X 10 Jan 2022 21:48:33.355 # Configuration loaded
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 5.0.5 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in sentinel mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 26379
| `-._ `._ / _.-' | PID: 28108
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
28108:X 10 Jan 2022 21:48:33.357 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
28108:X 10 Jan 2022 21:48:33.358 # Sentinel ID is 5e872f7f1f80229199314ea18e0963cbac4f6d48
28108:X 10 Jan 2022 21:48:33.358 # +monitor master mymaster 127.0.0.1 6379 quorum 2
28108:X 10 Jan 2022 21:48:33.359 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6379 6380跟随6379
28108:X 10 Jan 2022 21:48:33.360 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6379 6381跟随6379
28108:X 10 Jan 2022 21:49:01.032 * +sentinel sentinel eafc0c81e7a958f1317b896d980f04d58b032528 127.0.0.1 26380 @ mymaster 127.0.0.1 6379
28108:X 10 Jan 2022 21:49:18.668 * +sentinel sentinel ed7c6f838052f628a9373e661b2a5214dd505976 127.0.0.1 26381 @ mymaster 127.0.0.1 6379
28108:X 10 Jan 2022 21:54:54.497 # +sdown master mymaster 127.0.0.1 6379
28108:X 10 Jan 2022 21:54:54.566 # +new-epoch 1
28108:X 10 Jan 2022 21:54:54.568 # +vote-for-leader eafc0c81e7a958f1317b896d980f04d58b032528 1
28108:X 10 Jan 2022 21:54:54.597 # +odown master mymaster 127.0.0.1 6379 #quorum 3/2 2个哨兵认为6379挂了 一多半
28108:X 10 Jan 2022 21:54:54.597 # Next failover delay: I will not start a failover before Mon Jan 10 22:00:54 2022
28108:X 10 Jan 2022 21:54:55.507 # +config-update-from sentinel eafc0c81e7a958f1317b896d980f04d58b032528 127.0.0.1 26380 @ mymaster 127.0.0.1 6379
28108:X 10 Jan 2022 21:54:55.507 # +switch-master mymaster 127.0.0.1 6379 127.0.0.1 6380
28108:X 10 Jan 2022 21:54:55.507 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6380 选举6380
28108:X 10 Jan 2022 21:54:55.507 * +slave slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6380
28108:X 10 Jan 2022 21:55:25.509 # +sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6380
[root@iZuf6ir4og87e245nh5ltuZ ~]# redis-server /root/test/26380.conf --sentinel
28112:X 10 Jan 2022 21:48:58.984 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
28112:X 10 Jan 2022 21:48:58.984 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=28112, just started
28112:X 10 Jan 2022 21:48:58.984 # Configuration loaded
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 5.0.5 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in sentinel mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 26380
| `-._ `._ / _.-' | PID: 28112
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
28112:X 10 Jan 2022 21:48:58.986 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
28112:X 10 Jan 2022 21:48:58.988 # Sentinel ID is eafc0c81e7a958f1317b896d980f04d58b032528
28112:X 10 Jan 2022 21:48:58.988 # +monitor master mymaster 127.0.0.1 6379 quorum 2
28112:X 10 Jan 2022 21:48:58.988 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6379
28112:X 10 Jan 2022 21:48:58.990 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6379
28112:X 10 Jan 2022 21:48:59.827 * +sentinel sentinel 5e872f7f1f80229199314ea18e0963cbac4f6d48 127.0.0.1 26379 @ mymaster 127.0.0.1 6379
28112:X 10 Jan 2022 21:49:18.668 * +sentinel sentinel ed7c6f838052f628a9373e661b2a5214dd505976 127.0.0.1 26381 @ mymaster 127.0.0.1 6379
28112:X 10 Jan 2022 21:54:54.473 # +sdown master mymaster 127.0.0.1 6379
28112:X 10 Jan 2022 21:54:54.563 # +odown master mymaster 127.0.0.1 6379 #quorum 2/2
28112:X 10 Jan 2022 21:54:54.563 # +new-epoch 1
28112:X 10 Jan 2022 21:54:54.563 # +try-failover master mymaster 127.0.0.1 6379
28112:X 10 Jan 2022 21:54:54.565 # +vote-for-leader eafc0c81e7a958f1317b896d980f04d58b032528 1
28112:X 10 Jan 2022 21:54:54.568 # 5e872f7f1f80229199314ea18e0963cbac4f6d48 voted for eafc0c81e7a958f1317b896d980f04d58b032528 1
28112:X 10 Jan 2022 21:54:54.568 # ed7c6f838052f628a9373e661b2a5214dd505976 voted for eafc0c81e7a958f1317b896d980f04d58b032528 1
28112:X 10 Jan 2022 21:54:54.641 # +elected-leader master mymaster 127.0.0.1 6379
28112:X 10 Jan 2022 21:54:54.641 # +failover-state-select-slave master mymaster 127.0.0.1 6379
28112:X 10 Jan 2022 21:54:54.742 # +selected-slave slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6379
28112:X 10 Jan 2022 21:54:54.742 * +failover-state-send-slaveof-noone slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6379
28112:X 10 Jan 2022 21:54:54.797 * +failover-state-wait-promotion slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6379
28112:X 10 Jan 2022 21:54:55.442 # +promoted-slave slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6379
28112:X 10 Jan 2022 21:54:55.442 # +failover-state-reconf-slaves master mymaster 127.0.0.1 6379
28112:X 10 Jan 2022 21:54:55.506 * +slave-reconf-sent slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6379
28112:X 10 Jan 2022 21:54:55.729 # -odown master mymaster 127.0.0.1 6379
28112:X 10 Jan 2022 21:54:56.444 * +slave-reconf-inprog slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6379
28112:X 10 Jan 2022 21:54:56.444 * +slave-reconf-done slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6379
28112:X 10 Jan 2022 21:54:56.521 # +failover-end master mymaster 127.0.0.1 6379
28112:X 10 Jan 2022 21:54:56.521 # +switch-master mymaster 127.0.0.1 6379 127.0.0.1 6380
28112:X 10 Jan 2022 21:54:56.521 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6380
28112:X 10 Jan 2022 21:54:56.521 * +slave slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6380
28112:X 10 Jan 2022 21:55:26.538 # +sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6380
[root@iZuf6ir4og87e245nh5ltuZ ~]# redis-server /root/test/26381.conf --sentinel
28116:X 10 Jan 2022 21:49:16.651 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
28116:X 10 Jan 2022 21:49:16.651 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=28116, just started
28116:X 10 Jan 2022 21:49:16.651 # Configuration loaded
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 5.0.5 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in sentinel mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 26381
| `-._ `._ / _.-' | PID: 28116
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
28116:X 10 Jan 2022 21:49:16.652 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
28116:X 10 Jan 2022 21:49:16.654 # Sentinel ID is ed7c6f838052f628a9373e661b2a5214dd505976
28116:X 10 Jan 2022 21:49:16.654 # +monitor master mymaster 127.0.0.1 6379 quorum 2
28116:X 10 Jan 2022 21:49:16.655 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6379
28116:X 10 Jan 2022 21:49:16.656 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6379
28116:X 10 Jan 2022 21:49:17.386 * +sentinel sentinel eafc0c81e7a958f1317b896d980f04d58b032528 127.0.0.1 26380 @ mymaster 127.0.0.1 6379
28116:X 10 Jan 2022 21:49:18.103 * +sentinel sentinel 5e872f7f1f80229199314ea18e0963cbac4f6d48 127.0.0.1 26379 @ mymaster 127.0.0.1 6379
28116:X 10 Jan 2022 21:54:54.419 # +sdown master mymaster 127.0.0.1 6379
28116:X 10 Jan 2022 21:54:54.566 # +new-epoch 1
28116:X 10 Jan 2022 21:54:54.568 # +vote-for-leader eafc0c81e7a958f1317b896d980f04d58b032528 1
28116:X 10 Jan 2022 21:54:55.507 # +config-update-from sentinel eafc0c81e7a958f1317b896d980f04d58b032528 127.0.0.1 26380 @ mymaster 127.0.0.1 6379
28116:X 10 Jan 2022 21:54:55.507 # +switch-master mymaster 127.0.0.1 6379 127.0.0.1 6380
28116:X 10 Jan 2022 21:54:55.507 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6380
28116:X 10 Jan 2022 21:54:55.507 * +slave slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6380
28116:X 10 Jan 2022 21:55:25.540 # +sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6380
6379断开6380成为新选举的主机
哨兵通过发布订阅知道主有几个从机;哨兵可以互相感知其余哨兵的存在
通过psubscribe * 查看发布订阅的通道
127.0.0.1:6379> PSUBSCRIBE *
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "*"
3) (integer) 1
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26381,ed7c6f838052f628a9373e661b2a5214dd505976,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26380,eafc0c81e7a958f1317b896d980f04d58b032528,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26379,5e872f7f1f80229199314ea18e0963cbac4f6d48,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26381,ed7c6f838052f628a9373e661b2a5214dd505976,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26380,eafc0c81e7a958f1317b896d980f04d58b032528,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26379,5e872f7f1f80229199314ea18e0963cbac4f6d48,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26381,ed7c6f838052f628a9373e661b2a5214dd505976,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26380,eafc0c81e7a958f1317b896d980f04d58b032528,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26379,5e872f7f1f80229199314ea18e0963cbac4f6d48,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26381,ed7c6f838052f628a9373e661b2a5214dd505976,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26380,eafc0c81e7a958f1317b896d980f04d58b032528,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26379,5e872f7f1f80229199314ea18e0963cbac4f6d48,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26381,ed7c6f838052f628a9373e661b2a5214dd505976,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26380,eafc0c81e7a958f1317b896d980f04d58b032528,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26379,5e872f7f1f80229199314ea18e0963cbac4f6d48,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26381,ed7c6f838052f628a9373e661b2a5214dd505976,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26380,eafc0c81e7a958f1317b896d980f04d58b032528,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26379,5e872f7f1f80229199314ea18e0963cbac4f6d48,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26381,ed7c6f838052f628a9373e661b2a5214dd505976,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26380,eafc0c81e7a958f1317b896d980f04d58b032528,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26379,5e872f7f1f80229199314ea18e0963cbac4f6d48,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26381,ed7c6f838052f628a9373e661b2a5214dd505976,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26380,eafc0c81e7a958f1317b896d980f04d58b032528,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26379,5e872f7f1f80229199314ea18e0963cbac4f6d48,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26381,ed7c6f838052f628a9373e661b2a5214dd505976,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26380,eafc0c81e7a958f1317b896d980f04d58b032528,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26379,5e872f7f1f80229199314ea18e0963cbac4f6d48,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26381,ed7c6f838052f628a9373e661b2a5214dd505976,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"
3) "__sentinel__:hello"
4) "127.0.0.1,26380,eafc0c81e7a958f1317b896d980f04d58b032528,0,mymaster,127.0.0.1,6379,0"
1) "pmessage"
2) "*"