上一篇以说明的形式介绍了redis哨兵模式的一些内容,本篇将一步一步的动手搭建一个redis多机器多哨兵的服务。

1.准备

三台服务器(或者虚拟机),系统CentOS6.5

ip

主机名

192.168.72.133

hadoop1

192.168.72.129

hadoop2

192.168.72.135

hadoop3

2.一台服务器一个哨兵

按照如下的配置,将每台服务器上面的主从环境搭建好(如果这一步搭建有问题,可参考前几篇有关redis主从复制的博客)

ip

主机名

服务名称

端口

192.168.72.133

hadoop1

master

6379

192.168.72.133

hadoop1

slave

6380

192.168.72.133

hadoop1

slave

6381

192.168.72.133

hadoop1

slave

6382

修改sentinel.conf配置文件

vim sentinel.conf

修改如下内容

port 26379
sentinel monitor mymaster 127.0.0.1 6379 1

启动

redis-sentinel sentinel.conf
或者使用
redis-server sentinel.conf –sentinel

redis 哨兵认为多少个哨兵下线的配置参数 redis哨兵需要几台机器_redis

启动完成后sentinel.conf配置文件内容发生变化

redis 哨兵认为多少个哨兵下线的配置参数 redis哨兵需要几台机器_配置文件_02

测试哨兵切换主备

redis 哨兵认为多少个哨兵下线的配置参数 redis哨兵需要几台机器_配置文件_03

redis 哨兵认为多少个哨兵下线的配置参数 redis哨兵需要几台机器_配置文件_04

关闭redis的6379主服务

redis 哨兵认为多少个哨兵下线的配置参数 redis哨兵需要几台机器_redis_05

主服务关闭之后,通过投票选举6380服务被提升为主服务role:master,6381和6382为从服务。

redis 哨兵认为多少个哨兵下线的配置参数 redis哨兵需要几台机器_配置文件_06

重新启动6379服务,日志显示convert-to-slave,主服务恢复后转换为slave角色

redis 哨兵认为多少个哨兵下线的配置参数 redis哨兵需要几台机器_配置文件_07

查看6379服务,显示role:slave。

redis 哨兵认为多少个哨兵下线的配置参数 redis哨兵需要几台机器_配置文件_08

相应的刚才创建sentinel.conf文件也发生了变化,配置的6379转变为现在的主服务6380。

redis 哨兵认为多少个哨兵下线的配置参数 redis哨兵需要几台机器_配置文件_09

3.一台服务器多个哨兵

一台服务器放四个redis服务器,分别为一个主三个从。
同时这台服务器放三个sentinel哨兵。

ip

主机名

服务名称

端口

192.168.72.133

hadoop1

master

6379

192.168.72.133

hadoop1

slave

6380

192.168.72.133

hadoop1

slave

6381

192.168.72.133

hadoop1

slave

6382

配置了一个哨兵,如果该哨兵挂掉了,那么整个主从架构就回复到了原始的情况,所以我们可以配置多个哨兵,每个哨兵监控Redis信息,并且哨兵之间也会互相监控。
在原有一个哨兵26379的基础之上新增两个哨兵264379和265379。

修改sentinel.conf中的最低通过票数2,同时新增两个配置文件,端口号分别为26479和26579。

redis 哨兵认为多少个哨兵下线的配置参数 redis哨兵需要几台机器_配置文件_10

分别启动26479和26579两个哨兵。

redis 哨兵认为多少个哨兵下线的配置参数 redis哨兵需要几台机器_hadoop_11

关闭redis主服务6380,哨兵之间已经开始投票

redis 哨兵认为多少个哨兵下线的配置参数 redis哨兵需要几台机器_hadoop_12

此时6379重新回到master的角色

redis 哨兵认为多少个哨兵下线的配置参数 redis哨兵需要几台机器_redis_13

重新启动6380服务,让6380回到slave的角色。

4.多台服务器多个哨兵

三台服务器每台服务器放一个redis服务和一个哨兵
redis主从架构

ip

主机名

服务名称

端口

192.168.72.133

hadoop1

master

6379

192.168.72.129

hadoop2

slave

6380

192.168.72.135

hadoop3

slave

6381

哨兵架构

ip

主机名

服务名称

端口

192.168.72.133

hadoop1

sentinel

26379

192.168.72.129

hadoop2

sentinel

26380

192.168.72.135

hadoop3

sentinel

26381

本次演示三台机器的redis安装目录都为/usr/app/redis-3.2.11

cd /usr/app/redis-3.2.11

修改redis.conf和sentinel.conf两个文件。

1.配置redis.conf文件

a.hadoop1主服务redis.conf配置文件对应项改成如下内容

bind 0.0.0.0
protected-mode no
port 6379
daemonize yes
masterauth “redis”
requirepass “redis”

b.hadoop2从服务redis.conf配置文件对应项改成如下内容

bind 0.0.0.0
protected-mode no
port 6380
daemonize yes
masterauth “redis”
requirepass “redis”
slaveof 192.168.72.133 6379

c.hadoop3从服务redis.conf配置文件对应项改成如下内容

bind 0.0.0.0
protected-mode no
port 6381
daemonize yes
masterauth “redis”
requirepass “redis”
slaveof 192.168.72.133 6379

bind 0.0.0.0表示可供远程访问
daemonize yes 表示后台运行,不然在启动redis服务后,会一直停留在启动界面。
masterauth “redis”表示设置auth密码为redis,为了方便可以不配置
requirepass “redis”表示设置密码为redis,为了方便可以不配置

2.配置sentinel.conf文件

a.hadoop1哨兵配置文件sentinel.conf配置文件对应项改成如下内容

port 26379
bind 0.0.0.0
sentinel monitor mymaster 192.168.72.133 6379 2
sentinel auth-pass mymaster redis

b.hadoop2哨兵配置文件sentinel.conf配置文件对应项改成如下内容

port 26380
bind 0.0.0.0
sentinel monitor mymaster 192.168.72.133 6379 2
sentinel auth-pass mymaster redis

c.hadoop3哨兵配置文件sentinel.conf配置文件对应项改成如下内容

port 26381
bind 0.0.0.0
sentinel monitor mymaster 192.168.72.133 6379 2
sentinel auth-pass mymaster redis

如果上面没有配置masterauth requirepass 两项配置,这里的sentinel auth-pass mymaster redis也可以不用配置

3.启动redis服务
先启动主服务,再启动从服务。

redis-server redis.conf

由于上面配置了auth为redis,所以在登录客户端的时候需要验证身份,然后才能进入到客户端。

auth redis

redis 哨兵认为多少个哨兵下线的配置参数 redis哨兵需要几台机器_redis_14

redis 哨兵认为多少个哨兵下线的配置参数 redis哨兵需要几台机器_hadoop_15

redis 哨兵认为多少个哨兵下线的配置参数 redis哨兵需要几台机器_redis_16

三个服务启动正常。

4.启动哨兵

redis-sentinel sentinel.conf

redis 哨兵认为多少个哨兵下线的配置参数 redis哨兵需要几台机器_配置文件_17

三个哨兵启动正常。

5.故障演示

关闭6379主服务

redis 哨兵认为多少个哨兵下线的配置参数 redis哨兵需要几台机器_hadoop_18

屏幕显示6380变更为主服务

redis 哨兵认为多少个哨兵下线的配置参数 redis哨兵需要几台机器_redis_19

验证变更结果

redis 哨兵认为多少个哨兵下线的配置参数 redis哨兵需要几台机器_hadoop_20

redis 哨兵认为多少个哨兵下线的配置参数 redis哨兵需要几台机器_hadoop_21

结果显示哨兵已经对主服务进行了切换。

6.恢复原主服务

重新启动刚才挂掉的redis主服务

redis 哨兵认为多少个哨兵下线的配置参数 redis哨兵需要几台机器_hadoop_22

结果显示挂掉的主服务convert-to-slave。

redis 哨兵认为多少个哨兵下线的配置参数 redis哨兵需要几台机器_redis_23

redis 哨兵认为多少个哨兵下线的配置参数 redis哨兵需要几台机器_hadoop_24

查看角色显示,原有的主服务降级为从服务继续运行。

到此单机器多机器的哨兵框架搭建全部完毕。