基于哨兵模式的redis集群搭建及验证(一主二从三哨兵)

一、验证环境

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数据

验证结果都可以查到,主从数据同步成功!

你可能感兴趣的:(基于哨兵模式的redis集群搭建及验证(一主二从三哨兵))