1.docker-compose安装redis1主2从请点击
上面我已经部署了redis一主2从 三个服务器 192.168.0.11,192.168.0.12,192.168.0.13
3哨兵的话我是放在同一个服务器192.168.0.11上面去监听节点
目录接口
docker-compose.yml
version: '3.4'
services:
sentinel1:
image: redis
container_name: redis-sentinel-1
command: redis-sentinel /usr/local/etc/redis/sentinel.conf
restart: always
#network_mode: "host"
ports:
- 26379:26379
volumes:
- ./sentinel1.conf:/usr/local/etc/redis/sentinel.conf
sentinel2:
image: redis
container_name: redis-sentinel-2
command: redis-sentinel /usr/local/etc/redis/sentinel.conf
restart: always
ports:
- 26380:26379
# network_mode: "host"
volumes:
- ./sentinel2.conf:/usr/local/etc/redis/sentinel.conf
sentinel3:
image: redis
container_name: redis-sentinel-3
command: redis-sentinel /usr/local/etc/redis/sentinel.conf
restart: always
#network_mode: "host"
ports:
- 26381:26379
volumes:
- ./sentinel3.conf:/usr/local/etc/redis/sentinel.conf
sentinel.conf
port 26379
dir /tmp
sentinel monitor mymaster 192.168.0.11 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
#注意这个是对应之前部署redis的密码 要保持一直 否则连接不上
sentinel auth-pass mymaster 123456
sentinel failover-timeout mymaster 10000
sentinel deny-scripts-reconfig yes
bind 0.0.0.0
sentinel1.conf
port 26379
dir "/tmp"
sentinel myid be1648fdb4acb2c1e626a634d19e1e8e48bb5e6b
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 192.168.0.11 6379 2
sentinel auth-pass mymaster 123456
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
# Generated by CONFIG REWRITE
sentinel known-replica mymaster 192.168.0.12 6379
sentinel known-replica mymaster 192.168.0.13 6379
sentinel known-sentinel mymaster 192.168.0.11 26381 18dd3f5c502d601b4080049d1f6a35c45f32857a
sentinel known-sentinel mymaster 192.168.0.11 26380 b45ad1f2edfbab085e1fd5fa5eb589bded0d3abf
sentinel current-epoch 0
bind 0.0.0.0
sentinel2.conf
port 26380
dir "/tmp"
sentinel myid b45ad1f2edfbab085e1fd5fa5eb589bded0d3abf
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 192.168.0.11 6379 2
sentinel auth-pass mymaster 123456
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
sentinel known-replica mymaster 192.168.0.12 6379
sentinel known-replica mymaster 192.168.0.13 6379
sentinel known-sentinel mymaster 192.168.0.11 26379 be1648fdb4acb2c1e626a634d19e1e8e48bb5e6b
sentinel known-sentinel mymaster 192.168.0.11 26381 18dd3f5c502d601b4080049d1f6a35c45f32857a
sentinel current-epoch 0
bind 0.0.0.0
sentinel3.conf
port 26381
dir "/tmp"
sentinel myid 18dd3f5c502d601b4080049d1f6a35c45f32857a
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 192.168.0.11 6379 2
sentinel auth-pass mymaster zeqingev
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
sentinel known-replica mymaster 192.168.0.12 6379
sentinel known-replica mymaster 192.168.0.13 6379
sentinel known-sentinel mymaster 192.168.0.11 26380 b45ad1f2edfbab085e1fd5fa5eb589bded0d3abf
sentinel known-sentinel mymaster 192.168.0.11 26379 be1648fdb4acb2c1e626a634d19e1e8e48bb5e6b
sentinel current-epoch 0
bind 0.0.0.0
2.配置完之后启动哨兵 docker-compose up -d
3.进入容器docker exec -it 容器名称 bash
执行redis-cli -p 哨兵端口
查看主节点状态 出现这个就说明ok了
sentinel master mymaster
查看从节点状态
sentinel slaves mymaster
查询当前主节点对应的ip
SENTINEL get-master-addr-by-name mymaster
4.最后就是验证一下当前主节点宕机之后 会不会切换主节点 过程我就不演示了
步骤:真实的服务器ip我就不暴露 用的都是虚拟ip 192.168.0.11,192.168.0.12,192.168.0.13
首先进入 192.168.0.11目录 (默认是主节点)
使用docker命令docker-compose down 宕机改redis 过个20秒左右 重启改redis docker-compose up -d
执行步骤3下面的操作 最终会看到主节点的ip变为192.168.0.12或者是192.168.0.13 之前的主节点192.168.0.11自动加入从节点