一 应用场景描述
线上业务有使用到Redis作为缓存,但是一直都是单点应用,这样整个业务随时都有可能中断。也是之前部门遗留的历史问题。所以需要抽空时间结合业务对Redis缓存这一块作整改,避免单点故障同时提高缓存的性能。在之前的公司使用过很有名的Redis代理工具twemproxy。由于Redis是单线程服务,所以之前是通过在一台服务器上部署多个Redis实例然后通过twemproxy根据一致性哈希算法将不同的KEY分配到后端不同的Redis实例上。twemproxy可以通过HAProxy+Keepalived的方式来确保负载均衡和高可用。但是twemproxy最大的缺点就是扩展性非常低,几乎不能扩展.假设刚开始在twemproxy里面配置了6个Redis实例,那么一旦上线后,twemproxy根据算法分配KEY到后端不同的Redis实例,但是当新增或减少Redis实例后,分配原则将会被打乱,原来的KEY将会找不到.所以很多人建议在使用twemproxy来部署Redis分片集群的时候需要考虑后期的业务扩展情况,尽量多的分配Redis实例,例如一开始就分配64个Redis实例,即使在同一台服务器上也可以,然后对每个Redis实例部署从库,这样业务量增长,就可以把一些实例扩展出去,只要Redis实例的总数不变和顺序不变,那么twemproxy使用一致性哈希算法分配到后端Redis实例的规则就不变.twemproxy的监控可以使用zabbix来监控。Redis官方的Cluster方案由于长期以来都没有很多线上实际部署的案例,所以直接不用考虑了。考虑到Codis比twemproxy改进了许多,所以考虑直接使用codis来部署。Codis是由豌豆荚公司开发的Redis代理,说是在豌豆荚公司内部得到广泛应用,在国内很多公司也得到推广。
二 安装并测试Codis
Codis新增一个group的概念,
三 线上部署Codis
参考文档:
http://www.infoq.com/cn/articles/effective-ops-part-03
http://john88wang.blog.51cto.com/2165294/1620409
http://john88wang.blog.51cto.com/2165294/1623309
https://github.com/CodisLabs/codis
本文出自 “Linux SA John” 博客,请务必保留此出处http://john88wang.blog.51cto.com/2165294/1742742
原文:http://john88wang.blog.51cto.com/2165294/1742742