ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。
Zookeeper的安装和配置十分简单, 既可以配置成单机模式,也可以配置成集群模式,下面将分别进行介绍:
一、单机模式
下载Zookeeper的安装包之后,解压到合适目录,进入Zookeeper目录下的conf子目录,创建zoo.cfg:
tickTime=2000 dataDir==/tmp/zookeeper/data dataLogDir=/tmp/zookeeper/logs clientPort=2181
参数说明:
-
tickTime:Zookeeper中使用的基本时间单位,毫秒值。
-
dataDir:数据目录,可以是任意目录。
-
dataLogDir:日志目录,同样可以是任意目录。如果没有设置该参数,将使用和dataDir相同的设置。
-
clientPort:监听Client连接的端口号。
二、集群模式
以启动3个Zookeeper进程为例,将Zookeeper的目录拷贝2份,更改zookeeper{index}/conf/zoo.cfg文件:
tickTime=2000 dataDir=/tmp/zookeeper0/data dataLogDir=/tmp/zookeeper0/logs clientPort=2181 initLimit=5 syncLimit=2 server.0=127.0.0.1:8880:7770 server.1=127.0.0.1:8881:7771 server.2=127.0.0.1:8882:7772
新增了几个参数,其含义如下:
-
initLimit:Zookeeper集群中的包含多台Server,其中一台为Leader,其余的Server为Follower。initLimit参数配置初始化连接时,Follower和Leader之间的最长心跳时间。此时该参数设置为5,说明时间限制为5倍tickTime,即5 * 2000 = 10000ms = 10s。
-
syncLimit:该参数配置Leader和Follower之间发送消息,请求和应答的最大时间长度。此时该参数设置为2,说明时间限制为2倍tickTime,即4000ms。
-
server.X = A:B:C:其中X是一个数字,表示这是第几号Server。A是该Server所在的IP地址。B配置该Server和集群中的Leader交换消息所使用的端口。C配置选举Leader时所使用的端口。
在之前设置的dataDir中新建myid文件, 写入一个数字, 该数字表示这是第几号Server. 该数字必须和zoo.cfg文件中的server.X中的X一一对应:
- /tmp/zookeeper0/data/myid文件中写入0
- /tmp/zookeeper1/data/myid文件中写入1
- /tmp/zookeeper2/data/myid文件中写入2
tickTime=2000 dataDir==/tmp/zookeeper/data dataLogDir=/tmp/zookeeper/logs clientPort=2181参数说明:
-
tickTime:Zookeeper中使用的基本时间单位,毫秒值。
-
dataDir:数据目录,可以是任意目录。
-
dataLogDir:日志目录,同样可以是任意目录。如果没有设置该参数,将使用和dataDir相同的设置。
-
clientPort:监听Client连接的端口号。
tickTime=2000 dataDir=/tmp/zookeeper0/data dataLogDir=/tmp/zookeeper0/logs clientPort=2181 initLimit=5 syncLimit=2 server.0=127.0.0.1:8880:7770 server.1=127.0.0.1:8881:7771 server.2=127.0.0.1:8882:7772新增了几个参数,其含义如下:
-
initLimit:Zookeeper集群中的包含多台Server,其中一台为Leader,其余的Server为Follower。initLimit参数配置初始化连接时,Follower和Leader之间的最长心跳时间。此时该参数设置为5,说明时间限制为5倍tickTime,即5 * 2000 = 10000ms = 10s。
-
syncLimit:该参数配置Leader和Follower之间发送消息,请求和应答的最大时间长度。此时该参数设置为2,说明时间限制为2倍tickTime,即4000ms。
-
server.X = A:B:C:其中X是一个数字,表示这是第几号Server。A是该Server所在的IP地址。B配置该Server和集群中的Leader交换消息所使用的端口。C配置选举Leader时所使用的端口。