专栏名称: ImportNew
伯乐在线旗下账号,专注Java技术分享,包括Java基础技术、进阶技能、架构设计和Java技术领域动态等。
目录
相关文章推荐
芋道源码  ·  代码如诗,如此优雅的代码你能够写得出来吗? ·  9 小时前  
芋道源码  ·  再见了SpringBoot,后端AI已成气候! ·  昨天  
51好读  ›  专栏  ›  ImportNew

构建高可用 ZooKeeper 集群

ImportNew  · 公众号  · Java  · 2017-01-26 21:31

正文

请到「今天看啥」查看全文


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 连接,而且一旦客户端和服务器断开连接,客户端就会自动连接到集群中的其他服务器。



那么如何运行 ZooKeeper 集群模式呢?首先假如我们有三台服务器,IP 分别为 IP1、IP2 和 IP3,则需要执行以下步骤:


1. 准备 Java 运行环境(同上)

2. 下载 ZooKeeper 安装包(同上)

3. 配置 zoo.cfg


tickTime=2000

dataDir=/var/lib/zookeeper

dataLogDir=/var/lib/log

clientPort=2181

initLimit=5

syncLimit=2

server.1=IP1:2888:3888

server.2=IP2:2888:3888

server.3=IP3:2888:3888


可以看到,相比于单机模式,集群模式多了 server.id=host:port1:port2 的配置。


其中,id 被称为 Server ID,用来标识该机器在集群中的机器序号(在每台机器的 dataDir 目录下创建 myid 文件,文件内容即为该机器对应的 Server ID 数字)。host 为机器 IP,port1 用于指定 Follower 服务器与 Leader 服务器进行通信和数据同步的端口,port2用于进行 Leader 选举过程中的投票通信。


4. 创建 myid 文件


在 dataDir 目录下创建名为 myid 的文件,在文件第一行写上对应的 Server ID。


5. 按照相同步骤,为其他机器配置 zoo.cfg 和 myid文件


6. 启动服务


1.3 伪集群模式


这是一种特殊的集群模式,即集群的所有服务器都部署在一台机器上。当你手头上有一台比较好的机器,如果作为单机模式进行部署,就会浪费资源,这种情况下,ZooKeeper允许你在一台机器上通过启动不同的端口来启动多个 ZooKeeper 服务实例,以此来以集群的特性来对外服务。


这种模式下,只需要把 zoo.cfg 做如下修改:


tickTime=2000







请到「今天看啥」查看全文