redis哨兵docker部署及springboot运行

redis的主从模式,如果主机挂掉,要手动切换及修改链接,这种操作在生产环境上基本是不可能,一般都会中断服务,然后再通过重启来完成 。但在redis 2.8之后可以用哨兵模式来解决这个问题 。

redis哨兵docker部署及springboot运行

文章插图
哨兵网络图
一、哨兵模式简介sentinel是redis高可用的解决方案,sentinel系统(N个sentinel实例,N >= 1)可以监视一个或者多个redis master服务,以及这些master服务的所有从服务;当某个master服务下线时,自动将该master下的某个从服务升级为master服务替代已下线的master服务继续处理请求 。
sentine哨兵l本质上是一个特殊的redis服务,所以初始化的时候跟redis服务初始化差不多,不过有几点不一样;首先sentinel不会载入RDB或者AOF文件,因为sentinel根本不使用数据库,其次,sentinel不能使用数据库键值对方面的命令,例如set、del、flushdb等等,同时,sentinel也不能使用事务、脚本、RDB或者AOF持久化命令,最后,复制命令,发布与订阅命令,文件事件处理器,时间事件处理器等只能在sentinel内部使用 。
二、哨兵模式提供主要功能Redis 的 Sentinel 的最小配置是一主一从 。Sentinel 的主要功能包括主节点存活检测、主从运行情况检测、自动故障转移 (failover)、主从切换 。
1、监控
Sentinel 会不断的检查 主服务器 和 从服务器 是否正常运行 。
2、通知
当被监控的某个 Redis 服务器出现问题,Sentinel 通过 API 脚本 向 管理员 或者其他的 应用程序 发送通知 。
3、自动故障转移
当 主节点 不能正常工作时,Sentinel 会开始一次 自动的 故障转移操作,它会将与 失效主节点 是 主从关系 的其中一个 从节点 升级为新的 主节点,并且将其他的 从节点 指向 新的主节点 。
4、配置提供者
在 Redis Sentinel 模式下,客户端应用 在初始化时连接的是 Sentinel 节点集合,从中获取 主节点 的信息 。
三、Docker部署图我们在测试的时候,将进行3个sentinel和3个redis实例,redis实例为1主2从 。
redis哨兵docker部署及springboot运行

文章插图
部署实例
具体部署成功后,如下图所示:
redis哨兵docker部署及springboot运行

文章插图
部署完成后实例
四、docker部署过程1、环境准备
在主机上安装好docker,本实例机器ip为:192.168.197.24,redis的版本为:3.2
各redis的ip和端口如下:
redis主节点:p:6379
【redis哨兵docker部署及springboot运行】redis从节点:ip:6380,ip:6381
sentinel:ip:26379,ip:26380,ip:26381
2、部署主从redis
如果网卡不存在先创建网卡 docker network create --gateway 172.18.0.1 --subnet 172.18.0.0/16 host (host一般会存在)
执行下面命令创建redis实例:
sudo docker run --name redis6379 --net=host -v $PWD/data6379:/data-d redis:3.2 redis-server --port 6379--slave-read-only nosudo docker run --name redis6380 --net=host -v $PWD/data6380:/data-d redis:3.2 redis-server --slaveof 192.168.197.24  6379 --port 6380 --slave-read-only nosudo docker run --name redis6381 --net=host -v $PWD/data6381:/data-d redis:3.2 redis-server --slaveof 192.168.197.24  6379 --port 6381 --slave-read-only no注意添加:--slave-read-only no
否则会出现下面错误:
READONLY You can't write against a read only slave.3、执行命名查看redis 同步情况
docker logs redis6379docker logs redis6380docker logs redis6381 
redis哨兵docker部署及springboot运行

文章插图
日志
4、部署sentinel
新建文件 sentinel-26379.conf、sentinel-26380.conf、sentinel-26381.conf
protected-mode nobind 0.0.0.0port 26379daemonize yessentinel monitor mymaster 192.168.2.139 6379 2sentinel down-after-milliseconds mymaster 5000sentinel failover-timeout mymaster 180000sentinel parallel-syncs mymaster 1logfile "/var/log/redis/redis.log"protected-mode nobind 0.0.0.0port 26380daemonize yessentinel monitor mymaster 192.168.197.24 6379 2sentinel down-after-milliseconds mymaster 5000sentinel failover-timeout mymaster 180000sentinel parallel-syncs mymaster 1logfile "/var/log/redis/redis.log"protected-mode nobind 0.0.0.0port 26381daemonize yessentinel monitor mymaster 192.168.197.246379 2sentinel down-after-milliseconds mymaster 5000sentinel failover-timeout mymaster 180000sentinel parallel-syncs mymaster 1logfile "/var/log/redis/redis.log"如下:
redis哨兵docker部署及springboot运行


推荐阅读