Redis Sentinel配置

简介

Redis Sentinel为Redis提供高可用性。主要有以下功能

  • 监控,Sentinel会不断检查主节点和从节点是否按预期工作。
  • 通知。Sentinel可以通过API通知系统管理员,一个受监控的Redis实例出现问题。
  • 自动故障转移。如果主服务器未按预期工作,Sentinel可以启动故障转移过程,其中从节点升级为主节点,其他服务器重新配置向新主同步数据

Sentinel本身设计为在多个Sentinel进程协同工作的配置中运行。让多个Sentinel进程协作的优势如下:

  • 当多个Sentinels同意给定主设备不再可用时,将执行故障检测。这降低了误报的可能性。
  • 即使并非所有Sentinel进程都正常工作,哨兵也能正常工作,从而使系统能够抵御故障。毕竟,拥有故障转移系统并不是一件好事,而故障转移系统本身就是一个单一的故障点。

配置前的几个说明

  1. Sentinel会自动发现从节点,也就是我们只需要配置好监控的主节点,Sentinel会自己找到主节点的从节点,已经同样在监控主节点的其他Sentinel
  2. 配置Sentinel节点个数一般大于3 且是奇数,如果只有2个,那么发生网络分区的时候只需要1票就可以认为节点down了,这个就很不合理了。

配置

在这里插入图片描述

第一步:配置主从

在所有从节点的客户端命令行中执行下面命令设置主节点位置

192.168.253.168:26379>slaveof 192.168.253.128 6379  

第二步:主节点查看复制相关信息

在这里插入图片描述
这里可以看到主从复制完成了

第三步:配置哨兵

在所有节点修改配置文件

logfile "/var/log/sentinel.log"  #日志文件
bind 192.168.253.128   #监听的ip地址,根据节点不同进行调整
sentinel monitor mymaster 192.168.253.128 6379 2  
#配置监控的主节点
#这个配置项格式为sentinel monitor <master-group-name> <ip> <port> <quorum>
#意义为监视一个名为mymaster的主节点(这里的mymaster可以自定义,主要是为了标识这个集群)
#主节点ip地址是192.168.253.128,端口为6379
#法定票数为2票。表示至少需要2个哨兵认为节点down了,才算down了。

启动sentinel

redis-sentinel  /etc/sentinel.conf

在这里插入图片描述

第四步:测试

查看主节点信息

[root@localhost ~]# redis-cli  -h 192.168.253.128 -p 26379
192.168.253.128:26379> sentinel master mymaster
 1) "name"  #标识名
 2) "mymaster"
 3) "ip"  #主节点ip
 4) "192.168.253.128"
 5) "port" #端口
 6) "6379"
 7) "runid"  #运行id
 8) "c634d35abc11f54fc7df2c19b4739803a0461698"
 9) "flags" #标识,这里表示是一个主节点
10) "master"
11) "link-pending-commands"
12) "0"
13) "link-refcount"
14) "1"
15) "last-ping-sent"
16) "0"
17) "last-ok-ping-reply"
18) "1006"
19) "last-ping-reply"
20) "1006"
21) "down-after-milliseconds"
22) "30000"
23) "info-refresh"
24) "2513"
25) "role-reported"
26) "master"
27) "role-reported-time"
28) "122978"
29) "config-epoch"  #配置文件版本号,发生故障转移这个值会变化
30) "0"
31) "num-slaves"  #从节点数量
32) "2"
33) "num-other-sentinels"  #哨兵数量
34) "2"
35) "quorum"  ##法定票数
36) "2"
37) "failover-timeout" #故障转移的超时时间
38) "180000"
39) "parallel-syncs"  #支持多少个slave同时同步数据,值太大对主库有压力。太小的话整个集群同步时间慢
40) "1"

查看从节点信息

192.168.253.128:26379> sentinel slaves mymaster

查看其他sentinel信息

192.168.253.128:26379> sentinel sentinels mymaster

测试故障转移

在主节点输入命令

redis-cli -h 192.168.253.128 -p 6379 DEBUG sleep 100

然后查看日志文件信息,复制下来分析一下
192.168.253.168节点的sentinel日志信息 (有删减)

#+sdown (subject down)表示192.168.253.168这个哨兵主观上认为192.168.253.128这个主节点down了
6031:X 08 Nov 2018 11:00:18.373 # +sdown master mymaster 192.168.253.128 6379

#+odown  (object down)表示192.168.253.128这个主节点已经至少有2个哨兵认为它down了
#(达到了法定票数2)从而进入了客观down状态
6031:X 08 Nov 2018 11:00:18.444 # +odown master mymaster 192.168.253.128 6379 #quorum 2/2

#表示配置文件的版本(因为每次故障转移,需要设置新主,其他从节点要跟新主同步数据,避免混乱,所以设置了配置的版本)
6031:X 08 Nov 2018 11:00:18.445 # +new-epoch 1

#正在进行新的故障转移,等待由多数人选举
6031:X 08 Nov 2018 11:00:18.445 # +try-failover master mymaster 192.168.253.128 6379

#投票选一个领头的哨兵进行故障转移,那些一长串字符是哨兵的runid,标识哨兵
6031:X 08 Nov 2018 11:00:18.446 # +vote-for-leader dbf42eceb20259b692a6b1cf15afb893b575a325 1
6031:X 08 Nov 2018 11:00:18.451 # c131e1a763049d61569652bf3a99fbc0c8c1c998 voted for dbf42eceb20259b692a6b1cf15afb893b575a325 1
6031:X 08 Nov 2018 11:00:18.451 # 8139bbdd2654b1d4a527959f24cb649d0221782a voted for dbf42eceb20259b692a6b1cf15afb893b575a325 1

#192.168.253.128 这个哨兵赢得选举,可以做故障转移
6031:X 08 Nov 2018 11:00:18.500 # +elected-leader master mymaster 192.168.253.128 6379

#选择新的主节点
6031:X 08 Nov 2018 11:00:18.500 # +failover-state-select-slave master mymaster 192.168.253.128 6379

#选择了192.168.253.168作为新主
6031:X 08 Nov 2018 11:00:18.553 # +selected-slave slave 192.168.253.168:6379 192.168.253.168 6379 @ mymaster 192.168.253.128 6379

#正在尝试将提升的slave为新master,等待它切换。
6031:X 08 Nov 2018 11:00:18.553 * +failover-state-send-slaveof-noone slave 192.168.253.168:6379 192.168.253.168 6379 @ mymaster 192.168.253.128 6379
6031:X 08 Nov 2018 11:00:18.654 * +failover-state-wait-promotion slave 192.168.253.168:6379 192.168.253.168 6379 @ mymaster 192.168.253.128 6379

#提升192.168.253.168为新主
6031:X 08 Nov 2018 11:00:19.494 # +promoted-slave slave 192.168.253.168:6379 192.168.253.168 6379 @ mymaster 192.168.253.128 6379

#故障转移状态已更改为reconf-slave 修改从节点配置
6031:X 08 Nov 2018 11:00:19.494 # +failover-state-reconf-slaves master mymaster 192.168.253.128 6379

#赢得选举的哨兵将SLAVEOF命令发送到此实例,以便从节点重新配置主节点
6031:X 08 Nov 2018 11:00:19.557 * +slave-reconf-sent slave 192.168.253.158:6379 192.168.253.158 6379 @ mymaster 192.168.253.128 6379

#从节点配置新主完成,但同步过程尚未完成
6031:X 08 Nov 2018 11:00:20.536 * +slave-reconf-inprog slave 192.168.253.158:6379 192.168.253.158 6379 @ mymaster 192.168.253.128 6379

#从节点与新主同步完成
6031:X 08 Nov 2018 11:00:20.536 * +slave-reconf-done slave 192.168.253.158:6379 192.168.253.158 6379 @ mymaster 192.168.253.128 6379

#故障转移成功。所有从节点配置完成
6031:X 08 Nov 2018 11:00:20.598 # +failover-end master mymaster 192.168.253.128 6379

#主配置新IP和地址是配置更改后指定的IP地址
6031:X 08 Nov 2018 11:00:20.598 # +switch-master mymaster 192.168.253.128 6379 192.168.253.168 6379

然后我们可以看一下新的主节点是不是192.168.253.168

192.168.253.168:26379> SENTINEL get-master-addr-by-name mymaster

在这里插入图片描述

相关的配置项

  • port 26379
    监听的端口

  • sentinel monitor <master-name> <ip> <port> <quorum>

    • <master-name> 标识集群,这个可以自定义名称
    • <ip>主节点ip
    • <port>主节点的端口
    • <quorum>表示sentinel集群的quorum机制,即至少有quorum个sentinel节点同时判定主节点故障时,才认为其真的故障;如果没有达到这个法定票数则是s_down: subjectively down (主观down),达到票数之后就是o_down: objectively down (客观down)
  • sentinel auth-pass <master-name> <password>
    认证的口令

  • sentinel down-after-milliseconds
    监控到指定的集群的主节点异常状态持续多久方才将标记为“故障”;

  • sentinel parallel-syncs
    指在failover过程中,能够被sentinel并行配置的从节点的数量;

  • sentinel failover-timeout
    sentinel必须在此指定的时长内完成故障转移操作,否则,将视为故障转移操作失败;

  • sentinel notification-script
    通知脚本,此脚本被自动传递多个参数;

sentinel常用的几个命令

SENTINEL masters   #查看主节点信息
SENTINEL slaves <MASTER_NAME>  #查看对应集群的从节点信息
SENTINEL failover <MASTER_NAME>  #进行故障转移
SENTINEL get-master-addr-by-name <MASTER_NAME> #查看当前的主节点地址

官方文档: https://redis.io/topics/sentinel

猜你喜欢

转载自blog.csdn.net/L835311324/article/details/83870657