编程实践3—redis主从备份和高可用

来源:互联网 发布:域名授权 编辑:程序博客网 时间:2024/06/11 12:45

关于如何搭建lvs+keepalived实现VIP对多台服务器的访问,就不再赘述,参考:http://wenku.baidu.com/link?url=9b0VGQcwNJoUz61Cn2tU9EJge8lWiHA4rFMaN4iNBy4S_GIj0K7gWCwn_5SxUc83nss9dfCSdwHNIkK5OymWIkioHYewCxxCeFOeaa4iwL_  多提一句:现在已经不需要配置vrrp_instance ,你也可以配置

redis通过在配置文件中添加 slaveof  master-ip master-port 来指定一个redis实例是另一个实例的从实例,主(master) 上的数据会自动同步到从(slave)上;当master挂了怎么办呢? 这里可以使用redis提供的redis-sentinel (很多人称其为哨兵)来选举新的master了。

redis-sentinel 其实比较简单,提供一个sentinel.conf文件即可 ,主要原理: redis-sentinel本身相互之间是可以通信的,每个redis-sentinel 实例会去监听一个 master-ip 和端口,当master挂了的时候,所有的sentinel 会相互通信进行新的master选举。因此sentinel实例只要配置好监听的master 的ip和端口就差不多了,当然还有其他的次要的信息,如需要多少个sentinel实例同意才选举成功新的master。最简洁的配置如:

port 5001sentinel monitor mymaster 121.16.233.145 6379 1sentinel down-after-milliseconds mymaster 5000sentinel failover-timeout mymaster 20000

需要注意的是,其实sentinel在将slave选举为master后,会修改redis.conf  文件:如果redis实例是master,则删掉slaveof 行;否则更新slaveof 行,让其指向新的master 的ip和端口,从而完成新的master-slave 配置 。 另外,当之前的redis重新启动,会作为slave加入到之前的主从配置中。

PS:启动的时候先启动redis,后启动sentinel,每一个redis都有一个sentinel实例来监听

${CURRENT_PATH}/bin/redis-server ${CURRENT_PATH}/conf/redis.conf &${CURRENT_PATH}/bin/redis-sentinel ${CURRENT_PATH}/conf/sentinel.conf > ${CURRENT_PATH}/redis.log 2>&1 &




0 0