redis-Sentinel 是我们这次来一同学习 redis 的重点,在我们现在的系统已经离不开 redis 的时候 , redis 挂掉了或者是一些其他问题都是致命的 , 那么怎么做到 redis 的高可用呢 , 官方有提供一个管理 redis 集群自动容灾的一个应用 Redis-Sentinel .那么我们就来一同搭建一个 redis 高可用的 redis 集群.
附上:
喵了个咪的博客:w-blog.cn
Redis官网:http://redis.io/
Redis Sentinel文档:http://redis.io/topics/sentinel
Sentinel可以用于管理多个Redis服务,并且会执行三个任务:
Redis Sentinel 是一个分布式系统, 你可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故障迁移, 以及选择哪个从服务器作为新的主服务器。
虽然 Redis Sentinel 释出为一个单独的可执行文件 redis-sentinel , 但实际上它只是一个运行在特殊模式下的 Redis 服务器, 你可以在启动一个普通 Redis 服务器时通过给定 --sentinel 选项来启动 Redis Sentinel 。
我们准备2台 Liunx 服务器内网 IP 分别为 192.168.0.20 和 192.168.0.21
然在两台服务器上面各配置好两个 redis 实例为:
然后我们配置好主从关系把192.168.0.20:6379作为主redis其余作为从Redis
在我们redis编译完成的目录中src目录下有一个 redis-sentinel 的程序,我们把他 cp 到 /usr/local/bin/ 下面就可以直接使用 redis-sentinel 命令了
我们分别在2台服务器上创建4个 Sentinel 实例我们先配置 192.168.0.20 这台服务器
cd /etc/redis/
vim sentinel_6379.config
port 26379
sentinel monitor master1 192.168.0.20 6379 2
sentinel down-after-milliseconds master1 60000
sentinel failover-timeout master1 180000
sentinel parallel-syncs master1 1
sentinel auth-pass master1 testpassword
然后以同样的配置配置好端口为 192.168.0.20:26380 , 192.168.0.21:26381 和 192.168.0.21:26382
然后我们使用 redis-sentinel 分表在2台服务器上面
redis-sentinel sentinel_6379.config
redis-sentinel sentinel_6380.config
redis-sentinel sentinel_6381.config
redis-sentinel sentinel_6382.config
我们观察终端的语句会出现如下输出
+slave <instance details> :一个新的从服务器已经被 Sentinel 识别并关联。
+sentinel <instance details> :一个监视给定主服务器的新 Sentinel 已经被识别并添加。
看到2个子实例都绑定上了 , 4个 sentinel 也都显示了这个时候就证明已经配置好了 redis-sentinel 然后我们在主服务上面执行如下语句
service redis_6379 stop
这个时候就可以看到在终端中在打印了一些转换的语句,我们在检查主从设置的时候就已经自动转意到了莫一个 redis 子实例上了,当我们重新把主运行起来之后,主实例会自动成为子实例
本节主要介绍了怎么配置一个 redis 集群,以及怎么把 redis-sentinel 跑起来来达到高可用容灾切换的问题,更多的操作可以参考 sentinel 官方文档来了解更多的关于 sentinel 的操作.
注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!
PhalApi官网QQ交流群:421032344 欢迎大家的加入!