Redis主从复制,哨兵模式搭建(Docker)
哨兵模式搭建成功!(带密码)
首先仍然是需要docker-compose(用于启动监控哨兵情况)
安装(一下网址不需要经过github):
https://blog.csdn.net/pushiqiang/article/details/78682323
redis配置文件与sentinel配置文件模板放置网盘中,如下!
链接:https://pan.baidu.com/s/1MA16xdQl_OnlRY-IJkxg0w
提取码:1234
准备搭建情况:
#主机 84:6379 #从机 85:6379 86:6379 #哨兵 84:26379 85:26379 86:26379
84机器环境搭建
1.redis搭建
vim /opt/redis/myredis/redis.conf
其中bind注释掉或者0.0.0.0 port 6379 protected-mode no masterauth 123456 requirepass 123456 其他的默认就可以
主机中之所以配置masterauth 正是为了防止主机宕机后已经选择其他机器作为主机,他要作为其他主机的从机,必须要知道他要连接主机的密码是什么
docker run -p 6379:6379 --name myredis -v /opt/redis/myredis/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf
-v 主宿机位置 容器内位置
因此这里需要确保/opt/redis/myredis/redis.conf存在,否则将以没有配置文件的方式启动使用docker ps检查下有没有启动成功,如果没成功检查下redis.conf内部是不是配置错了
3.哨兵1搭建
vim /opt/redis/myredis/sentinel.conf
进去后 :%d 将内容清除,放入如下内容 port 26379 daemonize no dir "/data" #主节点 sentinel monitor mymaster 192.168.2.84 6379 2 sentinet auth-pass mymaster 123456 #默认30s我设置5s就是便于观察(多少时间查看一次主节点通讯) sentinel down-after-milliseconds mymaster 5000 #默认180s我设置5s就是便于观察(选举失败,下次选取时间) sentinel failover-timeout mymaster 5000 sentinel config-epoch mymaster 0 sentinel leader-epoch mymaster 2 #docker无权限手动配置 报告自己的ip sentinel announce-ip 192.168.2.84 sentinel announce-port 26379
4.在同级目录下 /opt/redis/myredis
vim docker-compose.yml
输入:
version: '3.1' services: sentinel1: image: redis container_name: redis-sentinel ports: - 26379:26379 privileged: true command: redis-sentinel /usr/local/etc/redis/sentinel.conf volumes: - ./sentinel.conf:/usr/local/etc/redis/sentinel.conf
privileged: true
这个很重要,否则通过docker-composer logs -f就能看到权限不足无法启动容器了!如果没有docker-compose,最上方已经给了安装地址,几秒钟就安装完了
- 在当前 /opt/redis/myredis下执行
- docker-compose up -d
- 完成后通过docker ps查看容器是否已经启动
- 通过docker-composer logs -f 查看实时日志(这个很重要,我们启动哨兵后,断开master就要在这里看看怎么变化,如果失败则会显示没启动成功的原因,如果成功则会显示监视的主节点是哪个,以及主节点下的从节点有哪些,看不到就完蛋了...)
- docker exec -it redis-sentinel redis-cli -p 26379 后info查看
85机器搭建
和上方一直,只要不在redis配置文件修改自己是slave以及对应sentinel.conf声明为自己ip即可
1.redis搭建
vim /opt/redis/myredis/redis.conf
其中bind注释掉或者0.0.0.0 port 6379 protected-mode no #这个是必须的,因为redis模式自己是主节点 slaveof 192.168.2.84 6379 masterauth 123456 requirepass 123456 其他的默认就可以
docker run -p 6379:6379 --name myredis -v /opt/redis/myredis/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf
-v 主宿机位置 容器内位置
因此这里需要确保/opt/redis/myredis/redis.conf存在,否则将以没有配置文件的方式启动使用docker ps检查下有没有启动成功,如果没成功检查下redis.conf内部是不是配置错了
3.哨兵1搭建
vim /opt/redis/myredis/sentinel.conf
进去后 :%d 将内容清除,放入如下内容 port 26379 daemonize no dir "/data" #主节点 sentinel monitor mymaster 192.168.2.84 6379 2 sentinet auth-pass mymaster 123456 sentinel down-after-milliseconds mymaster 5000 sentinel failover-timeout mymaster 5000 sentinel config-epoch mymaster 0 sentinel leader-epoch mymaster 2 #docker无权限手动配置 报告自己的ip sentinel announce-ip 192.168.2.85 sentinel announce-port 26379
4.在同级目录下 /opt/redis/myredis
vim docker-compose.yml
输入:
version: '3.1' services: sentinel1: image: redis container_name: redis-sentinel ports: - 26379:26379 privileged: true command: redis-sentinel /usr/local/etc/redis/sentinel.conf volumes: - ./sentinel.conf:/usr/local/etc/redis/sentinel.conf
privileged: true
这个很重要,否则通过docker-composer logs -f就能看到权限不足无法启动容器了!如果没有docker-compose,最上方已经给了安装地址,几秒钟就安装完了
- 在当前 /opt/redis/myredis下执行
docker-compose up -d
完成后通过docker ps查看容器是否已经启动
通过docker-composer logs -f 查看实时日志(这个很重要,我们启动哨兵后,断开master就要在这里看看怎么变化,如果失败则会显示没启动成功的原因,如果成功则会显示监视的主节点是哪个,以及主节点下的从节点有哪些,看不到就完蛋了...)
86机器搭建
和上方一直,只要不在redis配置文件修改自己是slave以及对应sentinel.conf声明为自己ip即可
1.redis搭建
vim /opt/redis/myredis/redis.conf
其中bind注释掉或者0.0.0.0 port 6379 protected-mode no #这个是必须的,因为redis模式自己是主节点 slaveof 192.168.2.84 6379 masterauth 123456 requirepass 123456 其他的默认就可以
docker run -p 6379:6379 --name myredis -v /opt/redis/myredis/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf
-v 主宿机位置 容器内位置
因此这里需要确保/opt/redis/myredis/redis.conf存在,否则将以没有配置文件的方式启动使用docker ps检查下有没有启动成功,如果没成功检查下redis.conf内部是不是配置错了
3.哨兵1搭建
vim /opt/redis/myredis/sentinel.conf
进去后 :%d 将内容清除,放入如下内容 port 26379 daemonize no dir "/data" #主节点 sentinel monitor mymaster 192.168.2.84 6379 2 sentinet auth-pass mymaster 123456 sentinel down-after-milliseconds mymaster 5000 sentinel failover-timeout mymaster 5000 sentinel config-epoch mymaster 0 sentinel leader-epoch mymaster 2 #docker无权限手动配置 报告自己的ip sentinel announce-ip 192.168.2.86 sentinel announce-port 26379
4.在同级目录下 /opt/redis/myredis
vim docker-compose.yml
输入:
version: '3.1' services: sentinel1: image: redis container_name: redis-sentinel ports: - 26379:26379 privileged: true command: redis-sentinel /usr/local/etc/redis/sentinel.conf volumes: - ./sentinel.conf:/usr/local/etc/redis/sentinel.conf
privileged: true
这个很重要,否则通过docker-composer logs -f就能看到权限不足无法启动容器了!如果没有docker-compose,最上方已经给了安装地址,几秒钟就安装完了
- 在当前 /opt/redis/myredis下执行
docker-compose up -d
完成后通过docker ps查看容器是否已经启动
通过docker-composer logs -f 查看实时日志(这个很重要,我们启动哨兵后,断开master就要在这里看看怎么变化,如果失败则会显示没启动成功的原因,如果成功则会显示监视的主节点是哪个,以及主节点下的从节点有哪些,看不到就完蛋了...)
【我们可以通过docker stop方式关闭redis容器,但是最好不要直接关机,因为直接关机的话,当前机器上的哨兵也没了,我这边就出现了一台从机变为主机,但是另一台从机仍然认为已经宕机的节点作为自己的主节点!】
整个要先启动redis节点,节点全部启动完毕后再启动哨兵!
如果要搭建不要密码的,那么把redis配置中masterauth 与 requirepass去掉,把sentinel配置中sentinet auth-pass去掉即可,当然还是建议要配置密码的,要不然很不安全!