Redis-Sentinel(哨兵)

Posted 三花

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis-Sentinel(哨兵)相关的知识,希望对你有一定的参考价值。

1. 哨兵的作用

(1)监控主库状态
(2)自动选主,切换(6381 slaveof no one)
(3)2号从库(6382)指向新主库(6381)
(4)应用透明(切换过程用户无法感知,不影响体验)
(5)自动处理故障节点(自愈)

2. 哨兵搭建过程

mkdir /data/26380  #26380为哨兵的端口,生产环境中为一个全新的节点
cd /data/26380
cat > sentinel.conf << EOF
port 26380
dir "/data/26380"
sentinel monitor mymaster 127.0.0.1 6380 1   #mymaster为自定义的集群名称,后面的IP和端口为主库的信息。后面的1,表示的是如果有一台哨兵监控到主库宕机,则视为真的宕机。
如果哨兵大于1台,数量根据实际情况而定。
如有3台哨兵,上述最后的1改为2,(因为判断主库是否宕机,在多台哨兵之间是投票制的,n/2+1)

sentinel down-after-milliseconds mymaster 5000  #主库发生宕机后,会有5秒的启动机会,超过5秒,就进行切换,此处5000的单位为毫秒。

sentinel auth-pass mymaster 123  #集群主库的密码
EOF

启动:
redis-sentinel /data/26380/sentinel.conf &>/tmp/sentinel.log &

切换演示

关闭主库
[root@redis-01 /data/26380]# redis-cli -p 6380 -a 123 shutdown

查看从库信息
[root@redis-01 /data/26380]# redis-cli -p 6381 -a 123 info replication
# Replication
role:slave   #当前还是从库
master_host:127.0.0.1
master_port:6382   #主库发生了改变
……省略部分内容

[root@redis-01 /data/26380]# redis-cli -p 6382 -a 123 info replication
# Replication
role:master   #6382变成了主
connected_slaves:1
slave0:ip=127.0.0.1,port=6381,state=online,offset=3286,lag=1  #因为6380宕机了,所以这里只有一台slave
master_repl_offset:3419
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:3418

把宕机的6380重新加入集群
[root@redis-01 /data/26380]# redis-server /data/6380/redis.conf 
[root@redis-01 /data/26380]# redis-cli -p 6382 -a 123 info replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6381,state=online,offset=7649,lag=1
slave1:ip=127.0.0.1,port=6380,state=online,offset=7649,lag=0
master_repl_offset:7782
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:7781
[root@redis-01 /data/26380]# redis-cli -p 6380 -a 123 info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6382
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:8328
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

以上是关于Redis-Sentinel(哨兵)的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点#--快速上手redis-sentinel(哨兵)

redis基础之redis-sentinel(哨兵集群)

Redis-sentinel哨兵模式集群方案配置

Redis-sentinel哨兵模式集群方案配置

入门指南|redis-Sentinel(哨兵机制)你学废了么?

Redis-sentinel哨兵模式集群方案配置