1、筹备工作
哨兵节点的搭建起码须要 3 个节点、在开始之前咱们须要先来搭建一个主从集群(一主两从)具体搭建步骤请查看 https://segmentfault.com/a/1190000039261382
2、配置哨兵
哨兵的默认端口为 26397、默认端口不能和其余机器指定的端口连通,只能在本地拜访。在这里咱们应用端口 5000(能够依据本人的状况定)。
2.1 创立相应的文件夹
# 寄存哨兵配置文件
mkdir /etc/sentinel
#存放数据文件
mkdir -p /var/sentinel/5000
#寄存日志文件
mkdir -p /var/log/snetinel
cd /var/log/snetinel
tuoch /var/log/snetinel/sentinel.log
2.2 批改配置
sentinel.conf 的默认配置在 reids 的装置目录曾经有咱们将它 copy 到 /etc/sentinel 下,做如下批改
cp /usr/local/redis-6.0.6/sentinel/sentinel.conf /ect/sentinel/5000.conf
vim 5000.conf
prot 5000
bind 本机 IP 或者间接正文掉
dir /var/sentinel/5000
sentinel monitor mymaster <masterIP> <masterPort> 2
sentinel down-after-milliseconds mymaster 30000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
logfile "/var/log/snetinel/sentinel.log"
daemonize yes
#如果 redis master 配置拜访口令须要如下配置
sentinel auth-pass mymaster <password>
依照步骤咱们将其它两台哨兵都配置好。
3、启动哨兵
在三台服务器上别离启动哨兵节点
redis-sentinel /etc/sentinal/5000.conf
哨兵状态检测
redis-cli -h < 节点 IP> -p 5000
sentinel master mymaster
SENTINEL slaves mymaster
SENTINEL sentinels mymaster
SENTINEL get-master-addr-by-name mymaster
哨兵启动实现查看日志顺利完成。
⚠️ * 这里有个问题咱们在做容灾的时候,redis 集群配置了口令,如果 master 节点挂了会进行故障转移从新选举 master, 然而当原来的 master 节点重启后会发现连贯不上以后 master, 因为在原 master 配置中没有加 masterauth password
master 节点明码的配置,给加上在重启就主动成 slave 节点退出到集群中。*
4、配置解释
sentinel monitor master-group-name hostname port quorum
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
quorum 的解释如下:
(1)至多多少个哨兵要一致同意,master 过程挂掉了,或者 slave 过程挂掉了,或者要启动一个故障转移操作
(2)quorum 是用来辨认故障的,真正执行故障转移的时候,还是要在哨兵集群执行选举,选举一个哨兵过程进去执行故障转移操作
(3)假如有 5 个哨兵,quorum 设置了 2,那么如果 5 个哨兵中的 2 个都认为 master 挂掉了; 2 个哨兵中的一个就会做一个选举,选举一个哨兵进去,执行故障转移; 如果 5 个哨兵中有 3 个哨兵都是运行的,那么故障转移就会被容许执行
down-after-milliseconds,超过多少毫秒跟一个 redis 实例断了连贯,哨兵就可能认为这个 redis 实例挂了
parallel-syncs,新的 master 别切换之后,同时有多少个 slave 被切换到去连贯新 master,从新做同步,数字越低,破费的工夫越多
假如你的 redis 是 1 个 master,4 个 slave
而后 master 宕机了,4 个 slave 中有 1 个切换成了 master,剩下 3 个 slave 就要挂到新的 master 下面去
这个时候,如果 parallel-syncs 是 1,那么 3 个 slave,一个一个地挂接到新的 master 下面去,1 个挂接完,而且从新的 master sync 完数据之后,再挂接下一个
如果 parallel-syncs 是 3,那么一次性就会把所有 slave 挂接到新的 master 下来
failover-timeout,执行故障转移的 timeout 超时时长