docker容器部署redis 5.0 主从从状态+哨兵服务(哨兵模式)

docker容器部署redis 主从从状态+哨兵服务(哨兵模式)


一、安装redis

  1. 可以使用 docker pull redis 拉取官网上面的镜像,作者使用的是5.0.3版本的redis
  2. 启动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版权协议,转载请附上原文出处链接和本声明。