docker-compose.yml
/root/redis/docker-compose.yml
,同时cd
到yml
所在⽬录中version: '3.7'
services:
master:
image: 'redis:5.0.9'
container_name: redis-master
restart: always
command: redis-server --appendonly yes
ports:
- 6379:6379
slave1:
image: 'redis:5.0.9'
container_name: redis-slave1
restart: always
command: redis-server --appendonly yes --slaveof redis-master 6379
ports:
- 6380:6379
slave2:
image: 'redis:5.0.9'
container_name: redis-slave2
restart: always
command: redis-server --appendonly yes --slaveof redis-master 6379
ports:
- 6381:6379
docker-compose up -d
docker-compose logs
redis-sentinel
放到和上⾯的Redis的同⼀个yml
中进⾏容器编排,但此处分成两组,主要是为了两⽅⾯:
redis-sentinel
redis-sentinel
的话,可能触发额外的选举过程,混淆视听docker-compose.yml
/root/redis-sentinel/docker-compose.yml
,同时cd
到yml
所在⽬录中version: '3.7'
services:
sentinel1:
image: 'redis:5.0.9'
container_name: redis-sentinel-1
restart: always
command: redis-sentinel /etc/redis/sentinel.conf
volumes:
- ./sentinel1.conf:/etc/redis/sentinel.conf
ports:
- 26379:26379
sentinel2:
image: 'redis:5.0.9'
container_name: redis-sentinel-2
restart: always
command: redis-sentinel /etc/redis/sentinel.conf
volumes:
- ./sentinel2.conf:/etc/redis/sentinel.conf
ports:
- 26380:26379
sentinel3:
image: 'redis:5.0.9'
container_name: redis-sentinel-3
restart: always
command: redis-sentinel /etc/redis/sentinel.conf
volumes:
- ./sentinel3.conf:/etc/redis/sentinel.conf
ports:
- 26381:26379
networks:
default:
external:
name: redis-data_default
sentinel1.conf
、sentinel2.conf
、sentinel3.conf
,三分文件的内容是完全相同的,都放在/root/redis-sentinel/
⽬录中bind 0.0.0.0
port 26379
sentinel monitor redis-master redis-master 6379 2
sentinel down-after-milliseconds redis-master 1000
sentinel monitor
:
redis-master
的设备ip
sentinel monitor 主节点名 主节点 ip 主节点端⼝ 法定票数
sentinel down-after-milliseconds
:
redis-sentinel
在运⾏中可能会对配置进⾏rewrite
,修改⽂件内容docker-compose up -d
docker-compose logs
哨兵发现了主节点sdown
,进⼀步的由于主节点宕机得票达到
2
/
3
2/3
2/3,达到法定得票,于是master
被判定为odown
master
确实下线了接下来,哨兵们挑选出了⼀个新的master
,上图中,是172.22.04:6379
这个节点
此时,对于Redis来说仍然是可以继续使用的
redis-master
被当成了slave
leader
,得票更容易超过半数