部署redis 的主从 + Sentinel 哨兵模式
前提环境:redis的主从复制,已搭建一主一从,可参考前一篇文章:redis主从复制
主从 + Sentinel
哨兵模式
Redis Sentinel是Redis官方的高可用性
解决方案。
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 服务器。
此种模式下,客户端要访问的 服务 IP 不是主节点,而是 sentiner
服务器的 IP。
- 架构图
-
Redis Sentinel 故障转移
image -
架构的扩展应用
image
实验
配置第二个从redis服务器:
docker run -it --name redis-s2 centos7-python3.7 bash
配置三个哨兵服务器
docker run -it --name redis-sent1 centos7-python3.7 bash
docker run -it --name redis-sent2 centos7-python3.7 bash
docker run -it --name redis-sent3 centos7-python3.7 bash
在所有docker中安装
yum install epel-release &&yum install -y redis supervisor
六个docker
配置第二个redis从服务器
修改/etc/redis/6379.conf
与上篇文章修改第一个从redis服务器
一样
-
将bind改为0.0.0.0
image.png - 添加主服务器信息
slaveof 172.17.0.2 6379
image.png
回到主redis服务器
,可看到配置的从服务器的信息
配置三个哨兵配置文件
vi /etc/redis-sentinel.conf
bind:绑定ip网段,默认为127.0.0.1,为让所有网段使用,现使用0.0.0.0
protected-mode:安全模式
daemonize:是否以守护进程启动
- 启动
启动哨兵服务:/usr/bin/redis-sentinel /etc/redis-sentinel.conf
其余两个哨兵服务器一样操作
- 查看哨兵信息:
redis-cli -p 27000 info sentinel
查看哨兵信息.png