构建高可用ZooKeeper集群
ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效、高可用的分布式协调服务,提供了诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知和分布式锁等分布式基础服务。因为 ZooKeeper 便捷的使用方式、卓越的性能和良好的稳固性,被广泛地应用于诸如 Hadoop、HBase、Kafka 和 Dubbo 等大型分布式系统中。
本文的目标读者是对 ZooKeeper 有肯定理解的技术人员,将从 ZooKeeper 运行模式、集群组成、容灾和水平扩容四方面逐渐深入,最终构建出高可用的 ZooKeeper 集群。
一、运行模式
Zookeeper 有三种运行模式:单机模式、伪集群模式和集群模式。
1.1 单机模式
这种模式一般适用于开发测试环境,一方面我们没有那么多机器资源,另外就是平常的开发调试并不需要极好的稳固性。
在 Linux 环境下运行单机模式需要执行以下步骤:
1. 准备 Java 运行环境
安装 Java 1.6 或者更高版本的 JDK,并配置好 Java 相关的环境变量 $JAVA_HOME 。
2. 下载 ZooKeeper 安装包
下载地址:http://zookeeper.apache.org/releases.html。选择最新的 stable 版本并解压到指定目录,我们用 $ZK_HOME 表示该目录。
3. 配置 zoo.cfg
初次使用 ZooKeeper,需要将 $ZK_HOME 下的 zoo_sample.cfg 文件重命名为 zoo.cfg,并进行以下配置
tickTime=2000 ##Zookeeper最小时间单元,单位毫秒(ms),默认值为3000
dataDir=/var/lib/zookeeper ##Zookeeper服务器存储快照文件的目录,必需配置
dataLogDir=/var/lib/log ##Zookeeper服务器存储事务日志的目录,默认为dataDir
clientPort=2181 ##服务器对外服务端口,一般设置为2181
initLimit=5 ##Leader服务器等待Follower启动并完成数据同步的时间,默认值10,表示tickTime的10倍
syncLimit=2 ##Leader服务器和Follower之间进行心跳检测的最大延时时间,默认值5,表示tickTime的5倍
4. 启动服务
使用 $ZK_HOME/bin 目录下的 zkServer.sh 脚本进行服务的启动。
1.2 集群模式
一个 ZooKeeper 集群通常由一组机器组成,一般 3 台以上即可以组成一个可用的 ZooKeeper 集群了。
组成 ZooKeeper 集群的每台机器都会在内存中维护当前的服务器状态,并且每台机器之间都会互相保持通信。
重要的一点是,只需集群中存在超过一半的机器能够正常工作,那么整个集群就能够正常对外服务。
ZooKeeper 的用户端程序会选择和集群中的任意一台服务器创立一个 TCP 连接,而且一旦用户端和服务器断开连接,用户端就会自动连接到集群中的其余服务器。

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 构建高可用ZooKeeper集群