中间件:Redis-x64-5.0.14.1高可用集群-哨兵(Sentinel)模式(Win10)

发布时间 2023-11-28 17:43:18作者: MaxBruce

 

原文:https://blog.csdn.net/chenyang_wei/article/details/127846656

在 Redis 主从复制模式中,因为系统不具备自动恢复的功能,所以当主服务器(master)宕机后,需要手动把一台从服务器(slave)切换为主服务器。在这个过程中,不仅需要人为干预,而且还会造成一段时间内服务器处于不可用状态,同时数据安全性也得不到保障,因此主从模式的可用性较低,不适用于线上生产环境。
Redis 官方推荐一种高可用方案,也就是 Redis Sentinel 哨兵模式,它弥补了主从模式的不足。Sentinel 通过监控的方式获取主机的工作状态是否正常,当主机发生故障时, Sentinel 会自动进行 Failover(即故障转移),并将其监控的从机提升主服务器(master),从而保证了系统的高可用性。

哨兵模式是一种特殊的模式,Redis 为其提供了专属的哨兵命令,它是一个独立的进程,能够独立运行。

哨兵主要有两个重要作用:

1、哨兵节点会以每秒一次的频率对每个 Redis 节点发送PING命令,并通过 Redis 节点的回复来判断其运行状态;

2、当哨兵监测到主服务器发生故障时,会自动在从节点中选择一台将机器,并其提升为主服务器,然后使用 PubSub 发布订阅模式,通知其他的从节点,修改配置文件,跟随新的主服务器。

在实际生产情况中,Redis Sentinel 是集群的高可用的保障,为避免 Sentinel 发生意外,它一般是由 3~5 个节点组成,这样就算挂了个别节点,该集群仍然可以正常运转。

本例环境配置:

master : 127.0.0.1 6380

slave1:127.0.0.1 6381

slave2:127.0.0.1 6382

sentinel1:127.0.0.1 16380

sentinel2:127.0.0.1 16381

sentinel3:127.0.0.1 16382

一、Redis集群配置
可参考:中间件:Redis-x64-5.0.14.1集群主从复制(Win10)

二、哨兵Sentinel配置


1、给master 6380中增加哨兵配置文件 sentinel.conf

哨兵全部配置主服务器信息,因为master有slave信息

#当前Sentinel服务运行端口
port 16380
# 哨兵监听的主服务器
sentinel monitor mymaster 127.0.0.1 6380 2
# 3s内mymaster无响应,则认为mymaster宕机了
sentinel down-after-milliseconds mymaster 3000
#如果10秒后,mysater仍没启动过来,则启动failover
sentinel failover-timeout mymaster 10000
# 执行故障转移时, 最多有1个从服务器同时对新的主服务器进行同步
sentinel parallel-syncs mymaster 1
2、同样给从服务 6381、6382下增加 sentinel.conf

#当前Sentinel服务运行端口
port 16381
# 哨兵监听的主服务器
sentinel monitor mymaster 127.0.0.1 6380 2
# 3s内mymaster无响应,则认为mymaster宕机了
sentinel down-after-milliseconds mymaster 3000
#如果10秒后,mysater仍没启动过来,则启动failover
sentinel failover-timeout mymaster 10000
# 执行故障转移时, 最多有1个从服务器同时对新的主服务器进行同步
sentinel parallel-syncs mymaster 1
#当前Sentinel服务运行端口
port 16382
# 哨兵监听的主服务器
sentinel monitor mymaster 127.0.0.1 6380 2
# 3s内mymaster无响应,则认为mymaster宕机了
sentinel down-after-milliseconds mymaster 3000
#如果10秒后,mysater仍没启动过来,则启动failover
sentinel failover-timeout mymaster 10000
# 执行故障转移时, 最多有1个从服务器同时对新的主服务器进行同步
sentinel parallel-syncs mymaster 1
3、启动集群

先启动master,再启动slave 6381、6382;启动可参考:中间件:Redis-x64-5.0.14.1集群主从复制(Win10)

 

 

 

4、启动哨兵

三个哨兵启用后,可以看见生成三个不同的 Sentinel ID

 

 

 

5、集群状态

 

 

 

三、测试
1、测试主机master 6380宕机

 

 

通过选票,6382成为master,6381中的master变成 6382。

 

2、停机的原master 6380重启

6380仍是从服务器,6382是master;6380不会再变回master。

 

 

 

3、slave 6381宕机

6382中可以看到只剩6380一个从机

 

重启6381 slave,6381回归关闭前状态

 

四、其他
1、从机配置命令:slave [master ip] [master port]

2、哨兵监听的主服务器:sentinel monitor [master名称(可以自定义)] [ip] [port] [通过票数]

master宕机后,从机投票通过设定的 通过票数 后认定master宕机,设定slave为master。

3、sentinel <选项的名字> <主服务器的名字> <选项的值>

down-after-milliseconds 选项指定了 Sentinel 认为服务器已经断线所需的毫秒数;

如果服务器在给定的毫秒数之内, 没有返回 Sentinel 发送的 PING 命令的回复, 或者返回一个错误, 那么 Sentinel 将这个服务器标记为主观下线(subjectively down,简称 SDOWN )。
不过只有一个 Sentinel 将服务器标记为主观下线并不一定会引起服务器的自动故障迁移: 只有在足够数量的 Sentinel 都将一个服务器标记为主观下线之后, 服务器才会被标记为客观下线(objectively down, 简称 ODOWN ), 这时自动故障迁移才会执行。将服务器标记为客观下线所需的 Sentinel 数量由对主服务器的配置决定。

parallel-syncs 选项指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步, 这个数字越小, 完成故障转移所需的时间就越长。

4、Windows cmd启动redis:redis-server.exe redis.windows.conf;

5、Windows cmd启动哨兵:redis-server.exe sentinel.conf --sentinel;

6、Windows cmd redis cli:redis-cli.exe -h IP -p 端口;

7、Windows cmd redis cli查看redis状态信息:info replication;
————————————————
版权声明:本文为CSDN博主「我也不清楚」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chenyang_wei/article/details/127846656