安装部署
首先当然需要有java环境啦,java环境搭建具体可参考Linux常用便利工具 虚拟机安装jdk1.8 无需配置环境变量这一篇,然后我们开始搭建zookeeper吧。从zookeeper官网(https://zookeeper.apache.org/releases.html#download)中选择合适的releases版本下载,这里以3.4.12.为例
放到虚拟机中解压(zookeeper]# tar -zvxf zookeeper-3.4.12)
单机
进入conf文件夹,将zoo_sample.cfg复制一份命名为zoo.cfg(cp zoo_sample.cfg zoo.cfg)
修改zoo.cfg,基本上改一下dataDir的地址,其余用默认值便可
进入/root/zookeeper/zookeeper-3.4.12/bin目录,通过./zkServer.sh start启动zookeeper
通过./zkServer.sh status查看zookeeper启动状态,目前是状态单点的
后续就可以通过./zkCli.sh来查看节点信息啦
伪集群
Zookeeper使用的是一致性协议,所以建议每个群组应该包含奇数个节点(比如3个、5个等),因为只有当群组里的大多数节点处于可用状态,zookeeper才能处理外部请求。这里以3个为例,我们先创建一个目录用于放zookeeper集群(mkdir zookeeperservers)
再将解压的zookeeper-3.4.12复制到该目录下作为server1,(cp -r zookeeper-3.4.12 ./zookeeperservers/server1)
进入到server1下的conf中,修改zoo.cfg,主要修改dataDir位置,clientPort端口以及新增server配置
其中新增的server.后面的数值即为ServerID,与每台server下的myid相对应,所以我们去data目录下创建myid
并写入ServerID即1
第一个server就配置完成啦,接下去我们将server1复制到server2和server3中
并分别对server2和server3中的配置做修改,此时只要改dataDir和clientPort就可以
Server2:
Server3:
并分别对server2和server3 data的myid做修改,
Server2:
Server3:
到此,伪集群就搭建完啦,接下来我们分别启动三个server看一下吧:
三台都启动成功啦,来看一下它们的状态吧
Server1:
Serverr2:
Server3:
从这里可以看出中间的Server2是主节点,server1和server3是从节点
基本配置详解
tickTime:
配置zookeeper中最小时间单元长度,单位毫秒。很多运行时的时间间隔都是用tickTime倍数表示,如zookeeper中会话最小超时时间默认2* tickTime。
initLimit:
配置leader等待follower启动,并完成数据同步的时间,默认值10,表示10倍tickTime的时间。通常使用默认值即可,随着zookeeper集群管理数据量增大,follower启动并同步leader上数据的时间也会变长,此时可适当调大该参数值。
syncLimit:
用于配置leader和follower之间心跳检测的最大时间延时时间,默认5,表示5倍tickTime的时间。通常使用默认值即可,随着zookeeper集群的网络质量降低,可适当调大该参数。
dataDir:
配置zookeeper存储快照文件的目录。
clientPort:
当前zookeeper服务器对外的服务端口
server.id=host:port:port
该参数在单机模式下不可配置,用于配置组成zookeeper集群的机器列表。其中id为ServerID,与每台zookeeper服务器myid中的数值一致;host为当前zookeeper服务器机器名或ip地址;第一个port用于指定follower与leader进行通信和数据同步所使用的tcp端口;第二个port指定leader选举中投票通信的tcp端口。
Zookeeper启动时会根据myid中配置的ServerID来确定自己是那台服务器,并使用配置的对应端口启动,如果在一台服务器上部署多个zookeeper构成伪集群的话,所有端口都要配成不同的哦。
参考:《从Paxos到ZooKeeper》