Redis哨兵集群搭建

Posted 阅历笔记

tags:

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

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超时时长

以上是关于Redis哨兵集群搭建的主要内容,如果未能解决你的问题,请参考以下文章

redis集群介绍与搭建(主从哨兵cluster集群)!

redis集群介绍与搭建(主从哨兵cluster集群)!

Redis主从哨兵和集群搭建

Redis单机,主从集群,哨兵集群,分片集群的搭建

Redis单机,主从集群,哨兵集群,分片集群的搭建

NoSQL 之Redis主从复制哨兵和集群介绍及详细搭建步骤