一主两从
复制三份 redis.windows.conf,分别如下配置
redis-6379.windows.conf
bind 127.0.0.1
port 6379
#有密码加密码,切记参数顶头不能有空
requirepass “mxl8341”
masterauth “mxl8341”
redis-6380.windows.conf
bind 127.0.1
port 6380
#有密码加密码,切记参数顶头不能有空
requirepass “mxl8341”
masterauth “mxl8341”
slaveof 127.0.0.1 6379
redis-6381.windows.conf
bind 127.0.1
port 6381
#有密码加密码,切记参数顶头不能有空
requirepass “mxl8341”
masterauth “mxl8341”
slaveof 127.0.0.1 6379
redis-server.exe redis6379.windows.conf
redis-server.exe redis6380.windows.conf
redis-server.exe redis6381.windows.conf
验证是否成功,看到从节点状态 online 说明主从环境搭建成功了
redis-cli.exe -h 127.0.0.1 -p 6379
备注:也可以脚本启动(快速方便)
添加以下文本 后缀名.bat
@ECHO OFF
redis-server redis6379.windows.conf
pause
127.0.0.1:6379> info replication
Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6380,state=online,offset=98,lag=0
slave1:ip=127.0.0.1,port=6381,state=online,offset=98,lag=0
master_replid:677245c1292f2244597f22a12c85730f236fa707
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:98
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:98
创建三个配置文件(精简)
sentinel26379.windows.conf
bind 127.0.0.1
port 26379
sentinel monitor mymaster 127.0.0.1 6379 2
#有密码加密码
sentinel auth-pass mymaster mxl8341
sentinel26380.windows.conf
bind 127.0.0.1
port 26380
sentinel monitor mymaster 127.0.0.1 6379 2
#有密码加密码
sentinel auth-pass mymaster mxl8341
sentinel26381.windows.conf
bind 127.0.0.1
port 26381
sentinel monitor mymaster 127.0.0.1 6379 2
#有密码加密码
sentinel auth-pass mymaster mxl8341
启动哨兵
redis-server sentinel26379.conf --sentinel
redis-server sentinel26380.conf --sentinel
redis-server sentinel26381.conf --sentinel
备注:也可以脚本启动(快速方便)
添加以下文本 后缀名.bat
@echo off
redis-server.exe sentinel26379.conf --sentinel
@pause
验证是否成功,看到最后 status=ok 说明成功了
127.0.0.1:26379> info sentinel
Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3
Redis可视化工具,方便操作查看结果:查看主从关系:
根据需要输入密码连接
故障排查
提示1:
哨兵信息发现slaves的数量变多,查找配置信息ip地址要一致(redis.conf和sentinel.conf),其他局域网时要用本机IP地址.切记不能用127.0.0.1
提示2:
哨兵信息发现sentinels数量与开启的哨兵数量不符(小于实际),把哨兵配置文件中sentinel myid 行注释掉,让其自动生成,重启再查看
附件:哨兵配置文件完整,根据场景挑选配置
主配置
# 配置 sentinel 端口号
port 26379
# 以守护进程启动
daemonize yes
# 绑定只在本地使用
bind 127.0.0.1
# 日志文件名称
logfile "sentinel_26379.log"
# 日志文件存放地址
dir "./"
# 监控 master 名字叫做 mymaster,地址是 127.0.0.1 端口号是 6379,1 表示有几个 sentinel 认为该 master 出现故障,触发主备切换动作
sentinel monitor mymaster 127.0.0.1 6379 2
#有密码加密码
sentinel auth-pass mymaster mxl8341
# 指定多少毫秒之后 主节点没有应答哨兵sentinel 此时 哨兵主观上认为主节点下线 默认30秒
sentinel down-after-milliseconds mymaster 30000
# 主备切换时,多少个从服务器同步更新数据,数值越小越好
sentinel parallel-syncs mymaster 1
# 故障转移的超时时间 failover-timeout 可以用在以下这些方面:
#1. 同一个sentinel对同一个master两次failover之间的间隔时间。
#2. 当一个slave从一个错误的master那里同步数据开始计算时间。直到slave被纠正为向正确的master那里同步数据时。
#3.当想要取消一个正在进行的failover所需要的时间。
#4.当进行failover时,配置所有slaves指向新的master所需的最大时间。不过,即使过了这个超时,slaves依然会被正确配置为指向master,但是就不按parallel-syncs所配置的规则来了
# 默认三分钟
sentinel failover-timeout mymaster 180000
从配置
# 配置 sentinel 端口号
port 26380
# 以守护进程启动
daemonize yes
# 绑定只在本地使用
bind 127.0.0.1
# 日志文件名称
logfile "sentinel_26380.log"
# 日志文件存放地址
dir "./"
# 监控 master 名字叫做 mymaster,地址是 127.0.0.1 端口号是 6379,1 表示有几个 sentinel 认为该 master 出现故障,触发主备切换动作
sentinel monitor mymaster 127.0.0.1 6379 2
# 指定多少毫秒之后 主节点没有应答哨兵sentinel 此时 哨兵主观上认为主节点下线 默认30秒
sentinel down-after-milliseconds mymaster 30000
#有密码加密码
sentinel auth-pass mymaster mxl8341
# 主备切换时,多少个从服务器同步更新数据,数值越小越好
sentinel parallel-syncs mymaster 1
# 故障转移的超时时间 failover-timeout 可以用在以下这些方面:
#1. 同一个sentinel对同一个master两次failover之间的间隔时间。
#2. 当一个slave从一个错误的master那里同步数据开始计算时间。直到slave被纠正为向正确的master那里同步数据时。
#3.当想要取消一个正在进行的failover所需要的时间。
#4.当进行failover时,配置所有slaves指向新的master所需的最大时间。不过,即使过了这个超时,slaves依然会被正确配置为指向master,但是就不按parallel-syncs所配置的规则来了
# 默认三分钟
sentinel failover-timeout mymaster 180000
从配置
# 配置 sentinel 端口号
port 26381
# 以守护进程启动
daemonize yes
# 绑定只在本地使用
bind 127.0.0.1
# 日志文件名称
logfile "sentinel_26381.log"
# 日志文件存放地址
dir "./"
# 监控 master 名字叫做 mymaster,地址是 127.0.0.1 端口号是 6379,1 表示有几个 sentinel 认为该 master 出现故障,触发主备切换动作
sentinel monitor mymaster 127.0.0.1 6379 2
#有密码加密码
sentinel auth-pass mymaster mxl8341
# 指定多少毫秒之后 主节点没有应答哨兵sentinel 此时 哨兵主观上认为主节点下线 默认30秒
sentinel down-after-milliseconds mymaster 30000
# 主备切换时,多少个从服务器同步更新数据,数值越小越好
sentinel parallel-syncs mymaster 1
# 故障转移的超时时间 failover-timeout 可以用在以下这些方面:
#1. 同一个sentinel对同一个master两次failover之间的间隔时间。
#2. 当一个slave从一个错误的master那里同步数据开始计算时间。直到slave被纠正为向正确的master那里同步数据时。
#3.当想要取消一个正在进行的failover所需要的时间。
#4.当进行failover时,配置所有slaves指向新的master所需的最大时间。不过,即使过了这个超时,slaves依然会被正确配置为指向master,但是就不按parallel-syncs所配置的规则来了
# 默认三分钟
sentinel failover-timeout mymaster 180000
sentinel monitor mymaster 192.168.92.128 6379 2
改为
sentinel monitor mymaster 127.0.0.1 6379 2
1.搭建redis哨兵集群时,哨兵无法感知到其他哨兵
2.springboot+shiro-redis 使用Redis sentinel(哨兵)主从实现
3.redis三个定时监控任务和主观下线、客观下线
4.Redis及其Sentinel配置项详细说明
5.SpringBoot2.0整合Redis高可用之Sentinel哨兵
6.Redis的哨兵模式
7.Redis集群主从复制(一主两从)搭建配置教程【Windows环境】
8.SpringBoot 2.3.3 + Redis + Sentinel 测试