哨兵,英文名 Sentinel,是一个分布式系统,用于对主从结构中的每一台服务器进行监控,当主节点出现故障后通过投票机制来挑选新的主节点,并且将所有的从节点连接到新的主节点上。
Redis Sentinel 包含若干个 Sentinel 节点和 Redis 数据节点,每个 Sentinel 节点会对数据节点和其余 Sentinel 节点进行监控,当它发现节点不可达时,会对节点做下线标识。如果被标识的是主节点,它还会和其他 Sentinel 节点进行“协商”,当大多数 Sentinel 节点都认为主节点不可达时,它们会选举出一个 Sentinel 节点来完成自动故障转移的工作,同时会将这个变化实时通知给 Redis 应用方。整个过程完全是自动的,不需要人工来介入,所以这套方案很有效地解决了 Redis 的高可用问题
1. 快速部署主从复制
请参考之前的文章搭建
依照之前的步骤搭建完主从复制后,我们需要再增加一个redis从服务器
创建映射数据卷
[root@192 ~]# mkdir -p /redis/slave2/data
[root@192 ~]# mkdir -p /redis/slave2/conf
[root@192 ~]# cd ..
[root@192 /]# cd redis
[root@192 redis]# ls
master slave slave2
配置文件
vi /redis/slave2/conf/redis.conf
# 内容
[root@192 redis]# cat /redis/slave2/conf/redis.conf
# 开启密码验证(可选)
# requirepass xxx
# 允许redis外地连接,需要注释掉绑定的IP
bind 0.0.0.0
# 关闭保护模式(可选)
protected-mode no
# 注释掉daemonize yes,或者配置成 daemonize no。因为该配置和 docker run中的 -d 参数冲突,会导致容器一直启动失败
daemonize no
# 开启redis数据持久化, (可选)
appendonly yes
# 设置主从复制密码
# redis auth与主从复制密码需要一致
# masterauth xxx
# 主从配置 最为重要
replicaof 192.168.1.42 6371
[root@192 redis]#
创建新的redis从容器,并将之前的redis容器启动
docker run --name redis-slave2 --privileged=true \
> -p 6373:6379 \
> -v /redis/slave2/data:/data \
> -v /redis/slave2/conf/redis.conf:/etc/redis/redis.conf \
> -d redis redis-server /etc/redis/redis.conf
测试数据
主机:
从1:
从2:
测试通过后,一主双从的redis复制就部署完成了。流程与之前博文的介绍一样,大家依照操作,很快就能搭建完成。
2.哨兵准备
角色 |
IP |
端口 |
服务运行模式 |
哨兵1 |
192.168.1.42 |