一、搭建环境:
Linux CentOS6.5
Redis V2.8.13
在一台机器上模拟,所以redis的端口号需要修改,master的为6379,salve的为6380
二、搭建步骤:
1、安装好redis后,在redis下新建一个conf文件夹【mkdir conf】,将根目录下的redis.conf复制到conf中;
2、将conf目录下的redis.conf配置文件复制2份,分别命名为redis-master.conf以及redis-salve.conf;
3、redis-master.conf文件中的配置暂不需要该,如果个人想修改原配置或者新增配置另说;
4、修改redis-salve.conf,主要的修改以下方面:
①将端口修改成6380;
②加上 : salveof 本机IP master端口号 【例如:salveof 192.168.100.77 6379】
5、添加redis sentinel集群监控配置文件 : redis-sentinel.conf;配置如下:
port 26379 # 监听地址
dir "/tmp" # 工作目录
sentinel monitor mymaster 127.0.0.1 6379 1 # 监控的地址是127.0.0.1,端口是6379, 主redis是mymaster(随意), 1表示有一个哨兵发现有问题即有问题, 需要failover
sentinel down-after-milliseconds mymaster 5000 # 表示如果5s内mymaster没响应,就认为SDOWN(Subjective Down)
sentinel failover-timeout mymaster 15000 # 表示如果15秒后,mysater仍没活过来,则启动failover,从剩下的slave中选一个升级为master
sentinel parallel-syncs mymaster 1 # 表示如果master重新选出来后,其它slave节点能同时并行从新master同步缓存的台数有多少个
到这里redis 的 sentinel集群环境已经搭建好了,接下来进行测试搭建是否成功。
三、测试
1、启动sentinel监听 : ./redis-server ../conf/redis-sentinel.conf --sentinel;
2、启动master : ./redis-server ../conf/redis-master.conf
3、启动salve : ./redis-server ../conf/redis-salve.conf
4、登录master终端,写入一个字符串
5、登录salve终端,执行keys * 操作,查看在master中加入的testString是否存在
6、在salve终端尝试写入一个字符串,会发现无法操作,因为redis-salve.conf配置文件中定义salve为只读状态
7、我们停止master服务器来模拟主服务器当机的情况,执行命令 ./redis-server redis-master.conf shutdown
8、此时原来端口为6380的salve服务器成为了master服务器,redis-sentinel监控日志中的日志输出:
9、再打开端口为6380的服务终端,并尝试写入一个字符串,发现写入成功
10、再次打开端口为6379的服务器,redis-sentinel监控日志中的日志输出:
显示当前6379服务器为salve,而6380服务器为master
11、打开salve终端,执行keys * 操作,查看master插入的string是否能够获取,并尝试写入一个字符串
发现无法写入,因为此时端口为6379的服务器由原先的master已经成为salve。
【Redis sentinel集群服务,会把上次的master加入到服务中,但是它不再是master,而是变成了salve】