实现RedisZookeeper多集群高可用的搞法(多Redis zk高可用)
随着用户的增多,服务的高可用是每个互联网企业必须实现的要求,尤其是数据库、缓存等中间件,其可用性不仅事关客户体验,同时也是企业服务向上发展最基础的保障。搭建一套高可用的Redis、Zookeeper集群虽然会增加服务的维护成本,但实现后可以收到质的飞跃。
在搭建Redis、Zookeeper集群之前,可以先评估出集群的需求,再从带宽、硬件配置、部署地点等维度拟定架构,根据服务的拓扑结构和部署架构对不同节点的信息分发,确定好每个节点的具体任务,可以有效的降低出现突发错误的可能性。
针对Redis集群,一般会使用两个及以上节点,分别作为母服务器和从服务器,且节点间不要部署在同一台物理服务器上,母服务器作为主服务器运行,配合集群节点实现缓存服务的高可用。以下是基于Redis Cluster的一个简单配置示例:
# 启动母服务器
redis-server --port 7000 --cluster-enabled yes --cluster-config-file 7000.conf --cluster-node-timeout 15000
# 启动从服务器redis-server --port 7001 --cluster-enabled yes --cluster-config-file 7001.conf --cluster-node-timeout 15000
对于Zookeeper集群,一般也是要求至少有3个节点,具体采用副本机制也要求三个节点,最新版本的部署也可以考虑将两个副本放在一台服务器上,分别部署不同服务,如下示例所示。
# 单服务器部署ZK
server.0=0.0.0.0:2888:3888server.1=0.0.0.1:2888:3888
server.2=0.0.0.2:2888:3888# 将两个服务部署在一台服务器上
server.0=0.0.0.0:2888:3888server.1=0.0.0.1:3188:4188
server.2=0.0.0.2:2888:3888
如上所示,实现Redis、Zookeeper集群的高可用,除了对部署的后的节点数量要求都得以保证外。同时,为了确保集群内节点数据时一致,应定期执行节点同步测试,进而及时处理错误,保证节点之间高可用性。