使用docker搭建redis哨兵sentinel集群

目录

1.准备

2.授权

3.创建redis容器

4.创建sentinel容器

5.进入sentinel容器

6.常见问题&解决办法

6.1、redis集群slave节点的master ip地址和端口问题:

6.2 sentinel.conf文件配置信息

7.检查是否安装成功:

  7.1进入master 节点,执行info replication

  7.2 进入任意一个slave节点,执行info replicaiton

 7.3进入任意一个sentinel节点

 7.3.1执行 SENTINEL master mymaster

 7.3.2 执行 SENTINEL slaves mymaster

 7.3.3 执行SENTINEL sentinels mymaster

8.测试master 故障并转移


1.准备

建议redis三个节点(一主二从),sentinel三个节点

在/home/dockergz/sentinelRedis/

目录下创建三个文件夹redis9379、redis9380、redis9381,每个文件夹下各包含两个文件,
redis.conf和sentinel.conf

使用docker搭建redis哨兵sentinel集群_第1张图片

2.授权
给redis9379、redis9380、redis9381文件夹及其下面所有文件授权

执行

chmod 777 -R redis9379

chmod 777 -R redis9380

chmod 777 -R redis9381

因为重新选举master,要修改redis.conf和sentinel.conf配置文件,所以需要给这些文件分配读写权限
3.创建redis容器
docker run -itd --name redis9379 -p 9379:6379 
-v /home/dockergz/sentinelRedis/redis9379/redis.conf:/etc/redis/redis.conf 
--network bridge redis redis-server /etc/redis/redis.conf 
--requirepass "pwdtest"

4.创建sentinel容器
docker run -itd --name sentinel26379 -p 26379:26379 
-v /home/dockergz/sentinelRedis/redis9379/sentinel.conf:/etc/sentinelRedis/sentinel.conf 
--network bridge docker.io/redis redis-sentinel /etc/sentinelRedis/sentinel.conf 
--requirepass "pwdtest"

5.进入sentinel容器

如果出现:bash: vim: command not found

解决方法如下:

(1)、apt-get update 

(2)、apt-get install vim

6.常见问题&解决办法
6.1、redis集群slave节点的master ip地址和端口问题:

slave 配置的 master ip地址和端口,必须是redis master启动后,通过 docker inspect 获取到的ip地址和端口,而不是宿主机的地址和宿主机的端口

使用docker搭建redis哨兵sentinel集群_第2张图片

因此 slave配置的master信息是:

replicaof 172.17.0.6 6379

而不是 replicaof 47.112.153.193 9379

使用docker搭建redis哨兵sentinel集群_第3张图片

6.2 sentinel.conf文件配置信息

sentinel.conf 中 sentinel monitor 配置是redis-master分配的地址和端口 172.17.0.6 6379

使用docker搭建redis哨兵sentinel集群_第4张图片

7.检查是否安装成功:
  7.1进入master 节点,执行info replication

   看到master下面有两个slave

使用docker搭建redis哨兵sentinel集群_第5张图片

  7.2 进入任意一个slave节点,执行info replicaiton

看到slave的master ip地址replicaof 172.17.0.6 6379 配置的一致

使用docker搭建redis哨兵sentinel集群_第6张图片

 7.3进入任意一个sentinel节点
 7.3.1执行 SENTINEL master mymaster

  看到一个master的info和两个slave

使用docker搭建redis哨兵sentinel集群_第7张图片

 7.3.2 执行 SENTINEL slaves mymaster

看到两个slave的info及master的ip和端口

使用docker搭建redis哨兵sentinel集群_第8张图片

使用docker搭建redis哨兵sentinel集群_第9张图片

 7.3.3 执行SENTINEL sentinels mymaster

看到哨兵信息

使用docker搭建redis哨兵sentinel集群_第10张图片

使用docker搭建redis哨兵sentinel集群_第11张图片

8.测试master 故障并转移
进入redis master节点,执行redis-cli -a pwdtest -p 6379 DEBUG sleep 60,让主节点睡眠60秒

再执行 docker logs -f sentinel26379

使用docker搭建redis哨兵sentinel集群_第12张图片

发现主节点 先主观下线sdown->客观下线odown,然后进行选举,选举6380为master,并执行故障转移failover

说明sentinel哨兵集群是成功的

附.进入redis-cli的方式

方式1:

docker exec -it redis9380 bash

redis-cli -a pwdtest -p 6380

方式2:

docker exec -it redis9380 bash

redis-cli -p 6380

AUTH pwdtest

使用docker搭建redis哨兵sentinel集群_第13张图片

参考:

Docker容器下Redis的主从配置以及Sentinel哨兵配置 - 灰信网(软件开发博客聚合)

https://www.cnblogs.com/yq055783/p/14496449.html

你可能感兴趣的:(docker,redis,docker,redis,sentinel)