docker部署redis集群(Sentinel版)

拉取Redis镜像

1
docker pull redis

通过镜像启动容器(Redis集群实例*3 1主2从,集群部署完再设密码)

1
2
3
4
5
6
7
docker run -it --name redis9000 -d -p 9000:6379 redis redis-server --requirepass 123456 --port 6379
docker run -it --name redis9001 -d -p 9001:6379 redis redis-server --requirepass 123456 --port 6379
docker run -it --name redis9002 -d -p 9002:6379 redis redis-server --requirepass 123456 --port 6379

#docker run -it --name redis9003 -d -p 9003:6379 redis redis-server --requirepass 123456 --port 6379
#docker run -it --name redis9004 -d -p 9004:6379 redis redis-server --requirepass 123456 --port 6379
#docker run -it --name redis9005 -d -p 9005:6379 redis redis-server --requirepass 123456 --port 6379

查询各个实例的容器IP

1
2
3
docker inspect redis9000 | grep IPAddress
docker inspect redis9001 | grep IPAddress
...以及其他的...

进入某个容器执行命令(修改各个redis节点密码)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 
docker exec -it redis9000 bash
# 连接第1个实例,设置密码
redis-cli -a 123456 -p 6379 -h 172.17.0.9
config set masterauth 123456
ctrl+c退出
# 连接第2个实例,设置密码&设置为第1个节点的从节点
redis-cli -a 123456 -p 6379 -h 172.17.0.10
config set masterauth 123456
slaveof 172.17.0.9 6379
ctrl+c退出
# 连接第3个实例,设置密码&设置为第1个节点的从节点
redis-cli -a 123456 -p 6379 -h 172.17.0.11
config set masterauth 123456
slaveof 172.17.0.9 6379


检查主从集群部署情况:
`info Replication`
<div align=center><img src="/images/docker/redis-sentinel/redis主从部署情况.png" alt="通过Redis哨兵查看集群信息"/></div>

ctrl+c退出

下载sentinel.conf

1
http://download.redis.io/redis-stable/sentinel.conf

修改配置

1
2
3
4
5
6
7
8
# mymaster:自定义集群名,如果需要监控多个redis集群,只需要配置多次并定义不同的<master-name> <master-redis-ip>:主库ip <master-redis-port>:主库port <quorum>:最小投票数,由于有三台redis-sentinel实例,所以可以设置成2
sentinel monitor mymaster <master-redis-ip> <master-redis-port> <quorum>

# 注:redis主从库搭建的时候,要么都不配置密码(这样下面这句也不需要配置),不然都需要设置成一样的密码
sentinel auth-pass mymaster redispassword

# 添加后台运行
daemonize yes

创建redis-sentinel集群

1
2
3
4
# sentinel900*.conf不需要修改 但需要时不同的副本,供不同容器使用
docker run -it --name redis-sentinel9000 -v d:/user/01390559/desktop/tmp-setting/sentinel9000.conf:/usr/local/etc/redis/sentinel.conf -d -p 29000:26379 redis /bin/bash
docker run -it --name redis-sentinel9001 -v d:/user/01390559/desktop/tmp-setting/sentinel9001.conf:/usr/local/etc/redis/sentinel.conf -d -p 29001:26379 redis /bin/bash
docker run -it --name redis-sentinel9002 -v d:/user/01390559/desktop/tmp-setting/sentinel9002.conf:/usr/local/etc/redis/sentinel.conf -d -p 29002:26379 redis /bin/bash

启动哨兵

1
2
3
4
docker exec -it redis-sentinel9000 bash
redis-sentinel /usr/local/etc/redis/sentinel.conf

...启动其他哨兵...

查看集群信息验证

1
2
3
4
5
6
7
docker exec -it redis-sentinel9000 bash
redis-cli -p 26379 -h 172.17.0.12
## 通过哨兵获取mymaster集群的master节点信息
sentinel master mymaster
## 通过哨兵获取mymaster集群的slave节点信息
sentinel slaves mymaster
<div align=center><img src="/images/docker/redis-sentinel/sentinel master mymaster.png" alt="通过Redis哨兵查看集群信息"/></div>

结束

至此,完事

作者

神奇宝贝大师

发布于

2019-12-10

更新于

2021-06-08

许可协议

评论