zookeeper集群搭建
zookeeper集群只有满足“半数以上服务器存货”才能继续工作,因此zookeeper集群中的服务器数量应该是奇数(2n+1)台,因此一个生产环境中,最少的zookeeper集群节点是3个。
本例安装3个zookeeper集群节点,并假设3个节点机器的主机名分别为zk1,zk2,zk3。配置文件如下(zoo.cfg文件):
tickTime=2000 dataDir=/home/usr/local/zookeeper/data clientPort=2181 initLimit=5 syncLimit=2 server.1=zk1:2888:3888 server.2=zk2:2888:3888 server.3=zk3:2888:3888
参数含义如下:
tickTime:zookeeper最小的时间单位,用户丈量心跳时间和超时时间等,通常设置成默认的2秒即可;
dataDir:非常重要的参数!zookeeper会在内存中保存系统快照,并定期写入该路径指定的文件夹中。生产环境中需要注意该文件夹的磁盘占用情况;
clientPort:zookeeper监听客户端连接的端口,使用默认的2181;
initLimit:指定follower节点初始连接leader节点的最大tick次数,假设是5,则表示follower节点必须在5*tickTime时间内(10s)连接上leader节点,否者将被视为超时;
syncLimit:设定了follower节点和leader节点进行同步的最大时间,也是以tickTime为单位;
server.x:配置文件中的最后三行都是这种形式的。这里的x必须是一个全局唯一的数字,并且需要与myid文件中的数字相对应(关于myid文件的设置稍后讨论)。一般设置的x为1~255的整数。这行后面还设置了两个端口,通常是2888和3888。
第一个端口用于使follower节点连接leader节点,而第二个端口用户leader节点选举。
设置好上面的配置文件,现在就需要配置上面提到的myid文件了,众所周知,每个zookeeper服务器都有一个唯一的ID。这个IDz主要用在两个地方:一个就是我们刚刚配置的zoo.cfg文件,另一个就是myid文件,myid文件放在我们配置的dataDir路径下面,内容就是一个数字,即ID。
下面以一台机器为例展示一下如何安装3个节点的zookeeper集群。其实,在一台机器上安装多节点zookeeper集群和在多台机器上安装的方法相同,只是配置文件有一些细微的调整,后面会详细介绍。
首先在zookeeper的conf目录下面创建3个配置文件zoo1.cfg,zoo2.cfg,zoo3.cfg,如下图所示。如果在多台服务器上安装集群,则配置文件的名字可以相同。
上面的配置文件中分别选取了2181,2182,2183这个3个端口,在多台服务器上,端口可以设置成一样的,只要确保没有端口冲突。同样,其他端口也是这样。
创建好配置文件,下面需要创建myid文件。命令如下:
接下来就是启动这个3个节点
如果是多节点安装方案,既可以使用上面的命令启动,也可以使用下面的命令:
当所有的zookeeper启动完成之后,需要检查一下集群的状态,分别执行以下命令
输出结果为:
从图中可以看出,当前服务器2是整个集群的leader。另外,还可以执行java的jps命令来查看zookeeper进程和集群状态,如图
zookeeper的主进程名是QuorumPeerMain。