Redis高可用方案:主从复制+哨兵模式
经典案例:一主二从三哨兵,及springboot集成配置
第一.配置
1.主节点配置(redis.conf)
# 主节点配置 仅展示必要配置 redis.conf
# 保护模式设置为关,方便其他节点访问
protected-mode no
# redis默认端口
port 6379
# 后台启动模式
daemonize yes
# 本实例密码
requirepass 123456
# 主redis密码,不管当前是主还是从都要配置,且主从密码必须一致
masterauth 123456
# 本实例进程号文件
pidfile /var/run/redis_6379.pid
# 本实例日志文件路径
logfile /usr/local/redis/redis.log
# 本实例工作目录
dir /usr/local/redis
# slave只读模式
slave-read-only yes
2.从节点配置(redis.conf)
# 从节点配置 仅展示必要配置 redis.conf
# 保护模式设置为关,方便其他节点访问
protected-mode no
# redis默认端口
port 6379
# 后台启动模式
daemonize yes
# 本实例密码
requirepass 123456
# 配置主redis的IP和端口
slaveof 192.168.31.103 6379
# 主redis密码,不管当前是主还是从都要配置,且主从密码必须一致
masterauth 123456
# 本实例进程号文件
pidfile /var/run/redis_6379.pid
# 本实例日志文件路径
logfile /usr/local/redis/redis.log
# 本实例工作目录
dir /usr/local/redis
# slave只读模式
slave-read-only yes
3.哨兵节点配置
# 哨兵节点配置 sentinel.conf
# 保护模式设置为关,方便其他节点访问
protected-mode no
# 哨兵默认端口号
port 26379
# 后台启动模式
daemonize yes
# 哨兵机制默认进程号
pidfile /var/run/redis-sentinel.pid
# 哨兵模式的日志文件路径
logfile /usr/local/redis/sentinel/redis-sentinel.log
# 哨兵模式的工作目录
dir /usr/local/redis/sentinel
# redis-master 自定义名称 192.168.31.103 6379 主节点ip+端口 2 salve投票看让谁接替成为主机,得票数多少后成为主机
sentinel monitor redis-master 192.168.31.103 6379 2
# 设置主节点密码
sentinel auth-pass redis-master 123456
# 被哨兵任务失效的毫秒时间段,默认为30秒,单位毫秒
sentinel down-after-milliseconds redis-master 30000
# 当从节点后变为主节点后,进行配置其他的,多少个从节点进行并行复制 1 一次接一个复制 2 一次复制2个
sentinel parallel-syncs redis-master 1
#主备的切换时间,哨兵进行故障转移如果超时,则会交给哨兵集群的另一个节点处理进行故障转移
sentinel failover-timeout redis-master 180000
第二.主机说明(本案例采用六台主机,一台主,两台从,三台哨兵)
主机 | IP | 配置 |
---|---|---|
主节点 | 192.168.31.103 | 主节点配置(redis.conf) |
从节点 | 192.168.31.104 | 从节点配置(redis.conf) |
从节点 | 192.168.31.105 | 从节点配置 (redis.conf) |
哨兵节点 | 192.168.31.106 | 哨兵节点配置(sentinel.conf) |
哨兵节点 | 192.168.31.107 | 哨兵节点配置(sentinel.conf) |
哨兵节点 | 192.168.31.108 | 哨兵节点配置(sentinel.conf) |
第三.各节点状态
1.主节点 192.168.31.103
2.从节点 192.168.31.104/192.168.31.105
3.哨兵节点 192.168.31.106/192.168.31.107/192.168.31.108
第四.模拟主节点宕机
103主节点宕机,105从节点变为主节点,103节点恢复之后将变成从节点继续工作
第五.模拟哨兵节点宕机
哨兵节点106宕机
主节点105宕机
103成为新的主节点
第六.springboot配置文件
spring:
redis:
# 主从节点的密码,主从redis密码要求一致
password: 123456
sentinel:
# redis哨兵配置sentinel.conf里指定的主名称
master: redis-master
# 所有哨兵的地址
nodes: 192.168.31.106:26379,192.168.31.107:26379,192.168.31.107:26379