一、验证环境
1、操作系统:win10
2、redis版本:redis-2.8.22
二、验证步骤:
本次验证方案为:采用一主(master)二从(slave)三(sentinel)的架构模式
master ip:127.0.0.1 port:6379
slave0 ip:127.0.0.1 port:6380
slave1 ip:127.0.0.1 port:6381
sentinel-26379 ip:127.0.0.1 port:26379
sentinel-26380 ip:127.0.0.1 port:26380
sentinel-26381 ip:127.0.0.1 port:26381
1.下载Redis安装包
解压并且复制三份,名字分别为,Redis-x64-2.8.2-6379,Redis-x64-2.8.2-6380,Redis-x64-2.8.2-6381
2.修改配置文件(redis.windows.conf)
2.1.主配置文件修改内容(6379)
#redis访问端口号
port 6379
#绑定redis访问地址
bind 127.0.0.1
2.2. 从配置文件修改内容(6380)
#redis访问端口号
port 6380
#绑定redis访问地址
bind 127.0.0.1
#绑定master服务ip port
slaveof 127.0.0.1 6379
2.3. 从配置文件修改内容(6381)
#redis访问端口号
port 6381
#绑定redis访问地址
bind 127.0.0.1
#绑定master服务ip port
slaveof 127.0.0.1 6379
3.启动redis服务
分别切换到对应目录启动master,slave0,slave1,执行启动命令:
redis-server.exe redis.windows.conf
启动后页面
验证是否6379是master,6380和6381是slave
1.使用连接工具
连接redis分别执行命令:
info replication
主服务
从服务80
从服务81
验证主从绑定成功!
4.三哨兵搭建
4.1.在redis文件夹下建一个 sentinel-26379.conf,sentinel-26380.conf ,sentinel-26381.conf
4.2 哨兵配置文件内容分别是:
主配置文件内容(6379)
# 配置 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 此时 哨兵主观上认为主节点下线 默认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
从配置文件(6380)
# 配置 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 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
从配置文件(6381)
# 配置 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 此时 哨兵主观上认为主节点下线 默认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
5. 启动三哨兵
分别启动sentinel-26379.conf,sentinel-26380.conf ,sentinel-26381.conf
启动命令分别如下:
redis-server.exe sentinel-26379.conf --sentinel
redis-server.exe sentinel-26380.conf --sentinel
redis-server.exe sentinel-26381.conf --sentinel
启动后界面
6.验证主从服务切换
场景:当主服务master6379宕机,剩下两个从服其中一个替换为新的master
主从切换验证成功!
如果原来的Master6379又恢复了,理论上他不能成为master,就变成slave,验证步骤
1,恢复6379服务
查看各个服务信息
79服务信息
80服务信息
81服务信息
验证成功!
7.验证主从服务数据同步
场景:在master80上添加数据,如set name 'fans'
查看79和81从服能否查到name数据
验证结果都可以查到,主从数据同步成功!