首页 > 服务配置 > 用ansible-playbook安装redis的sentinel高可用集群
2016
05-11

用ansible-playbook安装redis的sentinel高可用集群

redis的高可用集群方案一般来说分为下面几种,
redis集群 redis cluster http://www.redis.io/topics/cluster-tutorial ,
redis哨兵 redis sentinel http://www.redis.io/topics/sentinel
keepalived+lvs+redis实现
codis集群 https://github.com/CodisLabs/codis

redis sentinel是redis自带的解决方法,轻量并简单,配置方法是: 1,先做一个主从     2,sentinel监控redis主从,如果发现主挂了,提升redis从为主,下面用ansible安装redis

安装redis的ansible-playbook,获取ipv4 address,更改主机的hostname,解压安装redis,sed修改redis配置,最后启动redis服务

redis的启动文件https://github.com/thinkeverytime/devops2u.com/blob/master/redis_init.sh

redis已经安装完成并启动了,下面vm01为redis主,vm02为redis从,vm03redis停止,作为sentinel

vm02的/etc/redis.conf 最后添加一行:slaveof 10.211.55.4 6379,并重启,作为vm01的从,从info replication可以获取主从关系的信息,也可以 role 命令查看master、slave、sentinel各个角色的信息

vm03 不用redis服务,启用sentinel

sentinel主要的配置就是下面一行,mymaster为哨兵的名称,后面是redis主的IP,最后面的“1”是因为现在monitor只有1台

sentinel monitor mymaster 10.211.55.4 6379 1

在redis主随便设置些数据,从肯定是有的,也可以查看/var/redis/redis.log

这时,把vm01的redis主停止,查看redis从和sentinel的变化

redis从状态的转变:

redis sentinel的日志如下:

在转换过程中,或许会提示 READONLY You can’t write against a read only instance,是因为只读的redis实例不能写入数据

redis集群结构已经发生变化,想要修复的话下一步怎么办呢,
1,把vm01的redis配置最后添加 slaveof 10.211.55.5 6379 变为此时redis主的vm02
2,启动vm01的redis,info replication 查看状态

现在的结果是vm02为redis主,vm01为redis从,sentinel一样做一个守护神

程序因为一直连接的redis sentinel的ip和port,所以不会出现问题。

如果有多个redis集群,可以用sentinel相互做高可用,sentinel既能相互依存又节省主机,如下图:

最后编辑:
作者:bbotte
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。