3台服务器Redis高可用哨兵模式

作者: ygqygq2 分类: 数据库 发布时间: 2017-05-07 02:02

3台服务器Redis高可用哨兵模式

1. 介绍


Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务:
监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。
Redis Sentinel 是一个分布式系统, 你可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故障迁移, 以及选择哪个从服务器作为新的主服务器。
虽然 Redis Sentinel 释出为一个单独的可执行文件 redis-sentinel , 但实际上它只是一个运行在特殊模式下的 Redis 服务器, 你可以在启动一个普通 Redis 服务器时通过给定 –sentinel 选项来启动 Redis Sentinel 。

环境
CentOS7.2
redis3.2.8

服务器IP redis端口 哨兵端口 服务器角色
10.1.0.160 6379 26379
10.1.0.161 6379 26379 从1
10.1.0.71 6379 26379 从2

2. redis程序安装

以下是单redis安装脚本,可适用于单redis使用。
cat install_redis.sh

redis启停脚本示例:
cat redis-server

redis-sentinel启停脚本示例:

3. 哨兵模式配置

3台主机相同设置:
1. 按照前面单redis安装方法安装程序;
2. 创建相应数据目录;

3.1 主redis配置

vim redis.conf

群集文件配置
vim sentinel.conf

3.2 从redis配置

相对主redis配置,多添加了如下行:

vim redis.conf

vim sentinel.conf

3.3 启动redis和哨兵

启动redis,主从都要启动
/usr/local/redis/sbin/redis-server start
启动群集监控,主从都要启动
/usr/local/redis/sbin/redis-sentinel start

启动报错处理

故障切换机制

  1. 启动群集之后,群集程序默认会在主从的sentinel.conf文件中加入群集信息

主:

从1:

从2:

模拟主故障

从哨兵配置文件中可以看到当前的主库的已经发生了改变

4. 总结

redis的哨兵端口26379使用redis-cli可以连接查看哨兵相关信息,要想连接此高可用redis,可使用官方的连接客户端。使用哨兵监控当主故障后会自动切换从为主,当主启动后就变成了从。至少要3哨兵和3redis节点才能允许挂一节点还能保证服务可用性。

参考资料:
https://redis.io/topics/sentinel
http://www.redis.cn/topics/sentinel.html
http://www.majunwei.com/view/201610302123020678.html

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注