docker容器部署redis 主从从状态+哨兵服务(哨兵模式)
一、安装redis
- 可以使用 docker pull redis 拉取官网上面的镜像,作者使用的是5.0.3版本的redis
- 启动redis 服务
docker run --name redis1 -p 6379:6379 -d redis:5.0.3
-v /redis/conf/redis.conf:/etc/redis/redis.conf 后面映射的是容器里面存放配置文件的目录
-v /redis/data:/data 后面映射的是容器里面存储数据的目录
redis-server /etc/redis/redis.conf 开启就执行容器里面的这个配置文件,一定要加这个并且放在最后
之前亲测 redis-server 命令放在前面害我配置文件一直找不到,说不定也跟环境有关,是个坑,可以自行排除
redis.conf 文件需要自己去官网下载然后拷贝下来然后自己修改
我这里就示范启动一个容器的命令,大家后面可以照抄,端口修改一下就行了,可以一台服务器启动,也可以分三台
二、redis.conf 文件配置
需要修改内容以及解释如下:
# bind 127.0.0.1 ::1 允许远程访问的地址 可以改成 bind 0.0.0.0 允许所有地址连接
提示:进入到容器内 redis-cli -h 地址 -p 端口 -a 密码 就可以远程连接redis服务了
# protected-mode no 保护模式是否开启 关掉就好了 或者注释掉
# port 6379 使用端口号 6379
如果要开启 rdb持久化 就设置成下面这样,具体要用那种持久卡可以自己选择,也可以两种都开
save 900 1 900秒内进行一次操作就持久化
save 300 10 300内十次操作
save 60 10000 60秒内10000次操作
可以自己进行设置修改
# dbfilename "dump.rdb" rbd持久化文件名称,可以自定义
# dir "/data" 存放rdb文件的位置
开启 aof持久化
# appendonly yes 开启
# appendfsync everysec 开启每一秒的持久化备份
# masterauth "123456" 提前设置好你要做的主从连接 主的redis密码
# requirepass "123456" 本服务的redis 密码
#符号只是为了这篇文章高亮显示的,在配置文件里面是注释掉的效果
还有很多其他配置是可以修改的,各位可以自行去网上搜索自己想要修改的配置信息
三、指定主从
info replication 可以看到
role:master 状态
然后手动指定主
指定前需要 auth 123456 输入自己的机器密码 因为前面我们设置了密码
slaveof 主服务的IP地址 端口
指定成功后

两台机器都指定同一个主,形成主从从状态,在主里面可以看到从的信息地址端口
主从指定好了之后,就可以进行操作了,主可以读写,从只能读
可以在主服务器上面 set 1 1 插入一条数据(随便举个例子实践的)
在从服务器上面 keys * 查看
能查看到信息的话,恭喜你已经完成主从状态可以进行下一步的哨兵配置了
四、配置哨兵服务
1、配置哨兵服务的配置文件
protected-mode no 是否开启了保护模式,配置文件里面开启了就写yes,没写就no
daemonize no 是否开启了守护进程,同上
port 26379 占用端口号,哨兵可以配多个
dir "/data" 存放配置文件启动路径
sentinel monitor mymaster 192.168.1.135 6379 1 mymaster 是自己命名的主名称,可以随便命名
然后指定IP地址+端口号 最后一个是指的有几台哨兵判定宕机就可以切换主从
一般设置为单数哨兵,如果设置三台,就写2,两台哨兵判断宕机就可以切换,可以自行设置
sentinel auth-pass mymaster 123456 最后是密码,如果你前面redis没设置密码就不用这一行
sentinel down-after-milliseconds mymaster 30000
#指定多少毫秒之后 主节点没有应答哨兵sentinel 此时 哨兵主观上认为主节点下线 默认30秒
sentinel parallel-syncs mymaster 1
# 这个配置项指定了在发生failover主备切换时最多可以有多少个slave同时对新的master进行 同步,
一般来说三台机器就不用设置了,一台宕机之后,只剩下两台机器了
sentinel failover-timeout mymaster 180000
# 故障转移的超时时间 failover-timeout
最后三个配置可写可不写,不写的话就是上面默认的数值,如果想要自己改变数值就添加上去
2.启动哨兵容器
docker run -d --name sentinel(自定义命名容器) --restart=always (docker开启之后自启动)
--net=host(占用主机网络和端口) -v /redis/sentinel.conf:/data/sentinel.conf (挂载配置文件)
redis:5.0.3 redis-sentinel sentinel.conf (开启容器及运行哨兵服务)
上面命令运行之后每次自己虚拟机开启就会开始这个容器,并且执行哨兵服务,自动监控
3.查看哨兵服务日志的情况
可以开多一个界面用 docker logs --tail=30 -f 容器名称 实时观看最后三十行的日志

看一下你的主是否指定成功,从是否是这几个端口号,如果都没问题就可以把主容器宕机掉
日志会实时出现主从漂移的情况

排错思路: 如果最后不能进行自动切换的话,有可能是端口,或者配置文件密码的问题,仔细对比一下哪些细节可能出现了错误,我之前漂移失败就是从上面两个突破口找到的问题,redis.conf配置文件如果设置了密码,那么哨兵也需要在配置文件里面写上,还有端口的问题,看看容器端口是否对的上哨兵里面显示的端口号,你端口号对不上的话也是可以进行主从同步的,但是哨兵服务不会成功。
版权声明:本文为m0_52154270原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。