设计目标:
- 客户端对master的写入地址和写入端口不因为master的主备变更发生变化
- slave的读取地址和读取端口不因为slave集群的节点变化而变化
- 通过端口与分片对应,不同的分片在客户端映射到不同的写入或者读取地址与端口
- 可以基于一个ip地址添加端口方式增加分片的承载服务器master与slave集合
- 兼容2.8版本redis集群
redis3.0主机安装
master安装
slave安装
slave此处安装和原有方式略有不同,原本的salveof直接slaveof到redis的master就可以了,但是,由于3.0的数据分片机制造成了二次网络请求的坑,并且serverstack基于2.8的redis客户端对3.0的slave不能读写,所以slaveof方式发生点改变。同时为了支持2.8版本,将slave节点采用2.8slaveof的方式,在主机安装时产生一个master备份机的概念,顺便说一句,网上传的下图太扯了,3.0的数据压根不是这样的。3.0目前还没有数据代理功能,下面的功能没有实现。
slave在方式里直接通过keepalived的master路由代理slaveof,这样在发生master漂移时无需变更slave配置,同时此种方式也能兼容基于2.8版本的多集群部署。
方案设计
方案的设计用到了keepalived的特性
关于keepalived见【1】【2】
redis集群部署方案