1、redis配置
本文使用docker启动的redis,启动脚本如下
- restart.sh
# BEGIN ANSIBLE MANAGED BLOCK
#!/bin/bash
HOME="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
docker rm -f redis_4.0.10_6479;
docker run --name redis_4.0.10_6479 \
--restart=always \
-v $HOME/data:/data \
-v $HOME/redis:/etc/redis \
-p 6479:6479 \
-d redis:4.0.10 \
redis-server /etc/redis/redis.conf --appendonly yes --requirepass "123456"
# END ANSIBLE MANAGED BLOCK
修改脚本启动三个redis,分别为redis_6479、redis_6579、redis_6679;暂定redis_6479为主节点,redis_6579、redis_6679为从节点
2、修改从节点(redis_6579、redis_6679)的配置文件
# 修改slaveof配置
slaveof <masterip> <masterport> // 例 slaveof 192.168.8.124 6479
如果主节点需要访问密码,修改masterauth参数
# 添加密码
masterauth <master-password> // 例 masterauth 123456
修改从节点优先级
# 节点优先级,越小说明优先级越高,主节点可不设置
slave-priority 90 // default 为 100
-
重启从节点,另一个从节点配置类似
docker restart redis_6579
出现上述信息,标识从节点已经配置成功
此时,主节点可以读写数据,从节点只能读取数据,可以在主节点 set数据,在从节点读取数据,发现数据已经同步
完成以上步骤后,一主一从的redis高可用架构就部署好了,但是当主节点挂掉以后,从节点提升为主节点这动作不是自动完成的,需要我们手动去将其中一个从节点提升为主节点,同时还需要修改调用方的主节点地址,这个太麻烦了,所以我们需要sentinel集群,它可以在主节点挂掉以后自动将其中一个从节点提升为主节点,当主节点恢复以后,自动将老的主节点设置为新主节点的从节点,同时主节点地址对调用方透明。