利用docker-compose 搭建redis哨兵集群
1.搭建搭建redis
mkdir /data/redis/{redis,sentinel} -pv
cd /data/redis/redis
vim docker-compose.yml
version: "4.1"
services:
master:
image: redis:latest
container_name: redis-master
restart: always
command: bash -c "redis-server --protected-mode no --slave-announce-ip 192.168.2.11 --slave-announce-port 6377 --requirepass 'redis-123' --cluster-enabled yes"
ports:
- 6377:6379
slave1:
image: redis:latest
container_name: redis-slave-1
restart: always
ports:
- 6380:6379
command: bash -c "redis-server --protected-mode no --slaveof 192.168.2.11 6377 --slave-announce-ip 192.168.2.11 --slave-announce-port 6380 --requirepass 'redis-123' --masterauth 'redis-123'"
slave2:
image: redis:latest
container_name: redis-slave-2
restart: always
ports:
- 6381:6379
command: bash -c "redis-server --protected-mode no --slaveof 192.168.2.11 6377 --slave-announce-ip 192.168.2.11 --slave-announce-port 6381 --requirepass 'redis-123' --masterauth 'redis-123'"
networks:
default:
name: redis_default
external: true
2.搭建哨兵集群
cd /data/redis/sentinel
vim docker-compose.yml
version: '4.1'
services:
sentinel1:
image: redis:latest
container_name: redis-sentinel-1
ports:
- 26379:26379
command: redis-sentinel /usr/local/etc/redis/sentinel.conf
restart: always
volumes:
- ./sentinel1.conf:/usr/local/etc/redis/sentinel.conf
sentinel2:
image: redis:latest
container_name: redis-sentinel-2
ports:
- 26380:26379
command: redis-sentinel /usr/local/etc/redis/sentinel.conf
restart: always
volumes:
- ./sentinel2.conf:/usr/local/etc/redis/sentinel.conf
sentinel3:
image: redis:latest
container_name: redis-sentinel-3
ports:
- 26381:26379
command: redis-sentinel /usr/local/etc/redis/sentinel.conf
restart: always
volumes:
- ./sentinel3.conf:/usr/local/etc/redis/sentinel.conf
networks:
default:
name: redis_default
external: true
vim sentinel.conf
protected-mode no
sentinel monitor mymaster 192.168.2.11 6379 2
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
# mymaster 为集群名字,可以自定义
# IP 改为自己的ip
vim sentinel1.conf
protected-mode no
port 26379
daemonize no
sentinel monitor mymaster 192.168.2.11 6377 2
sentinel auth-pass mymaster 'redis-123'
sentinel down-after-milliseconds mymaster 3000
sentinel failover-timeout mymaster 180000
#注:登录密码改为自己上百年配置文件设置的密码
#6377 为master的端口
cp sentinel1.conf sentinel2.conf
cp sentinel1.conf sentinel3.conf
2.2启动脚本
vim redis-cluster-start.sh
cd /data/redis/
docker-compose up -d
sleep 25s
echo "wait 25 second"
cd data/redis/sentinel/
docker-compose up -d
3.验证集群
注:只能使用ip登录,回环地址不能登录
6377 是master 的端口