第七章、sentinel实现主从架构高可用(哨兵模式)

sentinel特点:

用于管理多个redis服务实现HA;

监控多个redis服务节点

自动故障转移

启用sentinel:

redis-sentinel可以理解为运行有着特殊代码的redis,redis自身也可以运行为sentinel,sentinel也依赖配置文件,用于保存sentinel不断收集的状态信息

两种启动方法:

redis-sentinel /path/to/file.conf
redis-server  /path/to/file.conf --sentinel

运行sentinel的步骤:

(1) 服务器自身初始化(运行redis-server中专用于sentinel功能的代码);

(2) 初始化sentinel状态,根据给定的配置文件,初始化监控的master服务器列表;

(3) 创建连向master的连接;

专用配置文件详解

文件位置:/etc/redis-sentinel.conf

(1) # sentinel monitor <master-name> <ip> <redis-port> <quorum>

//此项可以出现多次,可以监控多组redis主从架构,此项用于监控主节点

 <master-name> 自定义的主节点名称,

 <ip> 主节点的IP地址,

 <redis-port>主节点的端口号,

<quorum>主节点对应的quorum法定数量,用于定义sentinel的数量,是一个大于值尽量使用奇数,如果sentinel有3个,则指定为2即可,如果有4个,不能够指定为2,避免导致集群分裂,

 注意,<master-name>为集群名称,可以自定义,如果同时监控有多组redis集群时,<master-name>不能同样

(2) sentinel down-after-milliseconds <master-name> <milliseconds>  //sentinel连接其他节点超时时间,单位为毫秒(默认为30秒)

(3) sentinel parallel-syncs <master-name> <numslaves> //提升主服务器时,允许多少个从服务向新的主服务器发起同步请求

(4) sentinel failover-timeout <master-name> <milliseconds> //故障转移超时时间,在指定时间没能完成则判定为失败,单位为毫秒(默认为180秒)

单机多实例设置:

环境规划

sentinel部署至少要 2台以上的Redis节点,最好使用 1 主2 从三个节点的模式。

节点                                            服务器IP           配置文件            监听端口

cluster-master-1      192.168.3.71 /etc/redis/redis.conf 6379

cluster-slave-1      192.168.3.71 /etc/redis/redis.conf 6380

cluster-slave-2       192.168.3.71 /etc/redis/redis.conf 6381

cluster-sentinel     192.168.3.71 /etc/redis/sentinel.conf     26379

创建工作目录

mkdir -pv  /redis/{6380,6381}

设置主从配置

复制多个Redis配置文件,修改为从配置注意修改这几项:

port 6380   #端口更改
#257行左右 后台运行
daemonize yes
#290行左右  设置进程ID和日志位置,根据你启用的节点监听端口来命名保持一致
pidfile /var/run/redis_6380.pid
logfile /var/log/redis/redis_6380.log
#455行左右  修改工作目录,根据你启用的节点监听端口来命名保持一致
dir /redis/6380
# 477行  replicaof <masterip> <masterport>
replicaof 192.168.3.71 6379
# masterauth <master-password>
masterauth longtao   #如果设置了这个需要在主master设置这个认证密码:requirepass longtao
replica-read-only yes

启动多个实例:

redis-server redis6379.conf
redis-server redis6380.conf
redis-server redis6381.conf

修改sentinel配置:

#修改bind
bind 127.0.0.1 192.168.3.71
daemonize yes
# sentinel monitor <master-name> <master-port>   监控名称和监控节点数量
sentinel monitor mymaster 192.168.3.71 6379 1
# sentinel auth-pass <master-name> <password>  认证密码
sentinel auth-pass mymaster longtao

启用sentinel

redis-sentinel /etc/redis/sentinel.conf

运行测试:

[root@CentOS7 ~]# redis-cli -h 192.168.3.72 -p 26379

info查看命令:

192.168.3.72:26379> info

关注最后一行服务状态:

master0:name=mymaster,status=ok,address=192.168.3.72:6379,slaves=2,sentinels=1

哨兵查看主节点命令:

192.168.3.72:26379> SENTINEL masters

哨兵查看从节点命令:

192.168.3.72:26379> SENTINEL slaves mymaster

切换主节点测试

关停主节点实例6379

会自动切换,结果如下:(需要等待1到5分钟)

192.168.3.72:26379> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=odown,address=192.168.3.72:6379,slaves=2,sentinels=1

#等待1到5分钟后

192.168.3.72:26379> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=127.0.0.1:6380,slaves=2,sentinels=1
192.168.3.72:26379>

注意:故障节点恢复后,节点不会在自动切换回来,默认保持之前状态。

版权声明:
作者:WaterBear
链接:https://l-t.top/1981.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>