欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

docker部署redis集群主从,哨兵模式(一主,二从,三哨兵)

程序员文章站 2022-05-21 23:53:55
...

首先拉取redis镜像

docker pull redis

拉取完成后运行redis容器,

运行主节点

docker run --name redis-6379 -p 6379:6379 -v /home/redis/master/data:/data  -d redis redis-server --appendonly yes

运行从节点

docker run --name redis-6380 -p 6380:6379 -v /home/redis/redis6380/data:/data  -d redis  redis-server
docker run --name redis-6381 -p 6381:6379 -v /home/redis/redis6381/data:/data  -d redis  redis-server

3个容器都运行起来后用docker inspect 容器id命令查看主节点内网ip

docker inspect redis-6379

docker部署redis集群主从,哨兵模式(一主,二从,三哨兵)

找到这个就是内网ip,记下来

分别进入6380 6381容器内 执行

docker exec -it redis-6380 /bin/bash
redis-cli
SLAVEOF 172.18.0.2 6379

docker部署redis集群主从,哨兵模式(一主,二从,三哨兵)

info replication

docker部署redis集群主从,哨兵模式(一主,二从,三哨兵)

两个容器内的操作相同

这时候主从配置就完成了

进入主节点查看

docker部署redis集群主从,哨兵模式(一主,二从,三哨兵)
出现这个就说明主从配置完成了

接下来配置哨兵

Redis Sentinel 是一个分布式系统, 你可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故障迁移, 以及选择哪个从服务器作为新的主服务器。

虽然 Redis Sentinel 释出为一个单独的可执行文件 redis-sentinel , 但实际上它只是一个运行在特殊模式下的 Redis 服务器, 你可以在启动一个普通 Redis 服务器时通过给定 --sentinel 选项来启动 Redis Sentinel 。

首先cd到redis目录
执行

touch sentinel.conf && touch log.txt

docker部署redis集群主从,哨兵模式(一主,二从,三哨兵)

然后编辑sentinel.conf

vim sentinel.conf

输入

sentinel monitor mymaster 172.18.0.2 6379 1
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
#添加为后台运行
daemonize yes
#指定日志目录
logfile "/log.txt"

第一行配置指示 Sentinel 去监视一个名为 mymaster 的主服务器, 这个主服务器的 IP 地址为 172.18.0.2 , 端口号为 6379 , 而将这个主服务器判断为失效至少需要 1 个 Sentinel 同意 (只要同意 Sentinel 的数量不达标,自动故障迁移就不会执行)。

down-after-milliseconds 选项指定了 Sentinel 认为服务器已经断线所需的毫秒数。
如果服务器在给定的毫秒数之内, 没有返回 Sentinel 发送的 PING 命令的回复, 或者返回一个错误, 那么 Sentinel 将这个服务器标记为主观下线(subjectively down,简称 SDOWN )。
不过只有一个 Sentinel 将服务器标记为主观下线并不一定会引起服务器的自动故障迁移: 只有在足够数量的 Sentinel 都将一个服务器标记为主观下线之后, 服务器才会被标记为客观下线(objectively down, 简称 ODOWN ), 这时自动故障迁移才会执行。

将服务器标记为客观下线所需的 Sentinel 数量由对主服务器的配置决定。
parallel-syncs 选项指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步, 这个数字越小, 完成故障转移所需的时间就越长。

保存配置文件

执行命令启动哨兵

redis-sentinel /sentinel.conf

这里我们选择部署3个哨兵,上面的操作需要在3个redis容器中都执行一编

完成后,我们进入一个redis容器中,查看哨兵状态

执行
docker部署redis集群主从,哨兵模式(一主,二从,三哨兵)

docker exec -it redis-6379 /bin/bash
redis-cli -p 26379
info

docker部署redis集群主从,哨兵模式(一主,二从,三哨兵)
最终如果看到上面图中的信息就说明成功了