上一篇以说明的形式介绍了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
启动完成后sentinel.conf配置文件内容发生变化
测试哨兵切换主备
关闭redis的6379主服务
主服务关闭之后,通过投票选举6380服务被提升为主服务role:master,6381和6382为从服务。
重新启动6379服务,日志显示convert-to-slave,主服务恢复后转换为slave角色
查看6379服务,显示role:slave。
相应的刚才创建sentinel.conf文件也发生了变化,配置的6379转变为现在的主服务6380。
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。
分别启动26479和26579两个哨兵。
关闭redis主服务6380,哨兵之间已经开始投票
此时6379重新回到master的角色
重新启动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
三个服务启动正常。
4.启动哨兵
redis-sentinel sentinel.conf
三个哨兵启动正常。
5.故障演示
关闭6379主服务
屏幕显示6380变更为主服务
验证变更结果
结果显示哨兵已经对主服务进行了切换。
6.恢复原主服务
重新启动刚才挂掉的redis主服务
结果显示挂掉的主服务convert-to-slave。
查看角色显示,原有的主服务降级为从服务继续运行。
到此单机器多机器的哨兵框架搭建全部完毕。