docker-compose 搭建redis HA集群
一、概要
本次搭建redis集群采用docker进行构建,采用哨兵模式防止集群宕机
二、创建redis及sentinel目录
创建redis目录: mkdir -pv /usr/local/docker/redis
创建sentinel目录:mksir -pv /usr/local/docker/sentinel
三、创建redis服务
1、进入redis目录
cd /usr/local/docker/redis
2、创建docker-compose文件
touch docker-compose.yml
3、编辑docker-compose文件
vim docker-compose.yml
4、将下面的信息粘贴到docker-compose.yml中,并保存
version: '3.4'
services:
master:
image: redis
container_name: redis-master
restart: always
command: redis-server --port
ports:
- 6379:6379
#network_mode: "host"
slave1:
image: redis
container_name: redis-slave-1
restart: always
command: redis-server --slaveof redis-master 6379
ports:
- 6380:6379
#network_mode: "host"
slave2:
image: redis
container_name: redis-slave-2
restart: always
command: redis-server --slaveof redis-master 6379
ports:
- 6381:6379
#network_mode: "host"
5、启动redis集群
docker-compose up -d
6、查看集群是否启动成功
docker ps
如果启动出现如下图标识启动成功
四、创建sentinel服务
1、进入sentinel目录
cd /usr/local/docker/sentinel
2、创建docker-compose文件
touch docker-compose.yml
3、编辑docker-compose文件
vim docker-compose.yml
4、将下面的信息粘贴到docker-compose.yml中,并保存
version: '3'
services:
sentinel1:
image: redis
container_name: redis-sentinel-1
command: redis-sentinel /usr/local/etc/sentinel.conf
restart: always
#network_mode: "host"
ports:
- 26379:26379
volumes:
- ./sentinel1.conf:/usr/local/etc/sentinel.conf
sentinel2:
image: redis
container_name: redis-sentinel-2
command: redis-sentinel /usr/local/etc/sentinel.conf
restart: always
#network_mode: "host"
ports:
- 26380:26379
volumes:
- ./sentinel2.conf:/usr/local/etc/sentinel.conf
sentinel3:
image: redis
container_name: redis-sentinel-3
command: redis-sentinel /usr/local/etc/sentinel.conf
restart: always
#network_mode: "host"
ports:
- 26381:26379
volumes:
- ./sentinel3.conf:/usr/local/etc/sentinel.conf
5、创建sentinel.conf文件
touch /usr/local/docker/sentinel/sentinel.conf
6、编辑sentinel.conf文件
vim /usr/local/docker/sentinel/sentinel.conf
7、将下面的信息粘贴到sentinel.conf中,并保存
port 26379
dir /tmp
sentinel monitor mymaster 192.168.88.134 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
8、将刚刚创建的sentinel.conf在创建3份,一模一样就可以了
cp sentinel.conf sentinel1.conf
cp sentinel.conf sentinel2.conf
cp sentinel.conf sentinel3.conf
9、启动sentinel服务
docker-compose up -d
10、查看集群是否启动成功
docker ps
如果启动出现如下图标识启动成功
五、查看进入哨兵节点,查看是否有主节点
1、进入运行中的sentinel容器
docker exec -it b1eb09f2700a bash
2、连接到redis中
redis-cli -p 26379
3、输入如下命令“sentinel master mymaster”查看集群是否成功,如果出现下面信息表示集群搭建成功
GitHub样例请参见:https://github.com/LuckyToMeet-Dian-N/DevelopmentUtils
注意:GitHub样例为转载