前面介绍了Redis的集群——主从结构,既然是主从结构,那么就存在单点故障的风险。因此需要搭建Redis HA集群来实现Redis集群的高可用。本节就来介绍Redis HA集群的搭建过程。
1.Redis的HA集群的原理
Redis从2.4版本开始,提供了“哨兵”机制来实现Redis的HA功能。Redis中使用命令redis-sentenel来设置哨兵。哨兵可以设置多个,用以监控master节点的心跳,一旦失去master的心跳信息,就进行master切换,具体做法就是在slave中选择一个作为新的master节点,然后将其他所有slave的master改成新的master。
2.配置Redis HA集群
需要从Redis的源文件目录下拷贝sentinel.conf文件到Redis安装目录下的conf目录中。
cp /root/tools/redis-3.0.5/sentinel.conf conf/
vim conf/sentinel.conf
# 哨兵的端口号
port 36379
# mymaster是监控主机的别名,对应的IP和port,启动几个哨兵
sentinel monitor mymaster 192.168.126.110 6379 1
# 如果主节点配置了用户名和密码,需要指定用户名和密码
sentinel auth-pass <master-name> <password>
# 如果30秒内哨兵没有收到主节点心跳,就进行HA切换
sentinel down-after-milliseconds mymaster 30000
# 选出新的master后,允许同时连接的slave的个数,一定不能太大
sentinel parallel-syncs mymaster 1
# 失败切换的时候,最大的允许时间为3分钟
sentinel failover-timeout mymaster 180000
3.启动Redis的哨兵进程
bin/redis-sentinel conf/sentinel.conf
***log***
13788:X 29 Sep 07:08:47.003 # +monitor master mymaster 192.168.157.111 6379 quorum 1
13788:X 29 Sep 07:08:48.002 * +slave slave 192.168.157.111:6381 192.168.157.111 6381 @ mymaster 192.168.157.111 6379
13788:X 29 Sep 07:08:48.011 * +slave slave 192.168.157.111:6380 192.168.157.111 6380 @ mymaster 192.168.157.111 6379
4.演示Redis HA的功能
正常情况下
ps -ef | grep redis
杀掉master节点
kill -9 13597
等30后sentinel就开始切换master
13788:X 29 Sep 07:11:38.463 # +failover-end master mymaster 192.168.157.111 6379
13788:X 29 Sep 07:11:38.463 # +switch-master mymaster 192.168.157.111 6379 192.168.157.111 6381
13788:X 29 Sep 07:11:38.464 * +slave slave 192.168.157.111:6380 192.168.157.111 6380 @ mymaster 192.168.157.111 6381
13788:X 29 Sep 07:11:38.464 * +slave slave 192.168.157.111:6379 192.168.157.111 6379 @ mymaster 192.168.157.111 6381
网友评论