1、到官网https://zookeeper.apache.org/releases.html#download下载zookeeper安装包,我使用的是zookeeper-3.4.13.tar.gz。
2、拷贝到linux服务器,并解压。命令:tar –zxvf zookeeper-3.4.13.tar.gz
3、将zookeeper/conf目录下的zoo_sample.cfg重命名为zoo.cfg。
备份指令:cp zoo_sample.cfg zoo.cfg
重命名:mv zoo_sample.cfg zoo.cfg
4、修改dataDir的存放目录。
5、配置服务器节点,在zoo.cfg的后面添加如下代码(如果只有四台服务器):
server.<服务器编号,从1开始>=<服务器主机名>:<当前服务器与leader服务器交换数据的端口>:<集群中选举leader使用的端口>。如下:
server.1=yc01:2888:3888
server.2=yc02:2888:3888
server.3=yc03:2888:3888
如果是作为观察者,不参与投票,则需要在后面加上observer标识。如:
server.4=yc04:2888:3888:observer
另外,需要在zoo.cfg中添加声明。在服务器节点配置前面加上:
peerType=observer。说明这个节点作为观察者。
initLimit : 此配置表示允许follower连接并同步到leader的初始化时间,它以tickTime的倍数来表示。当超过设置倍数的tickTime时间,则连接失败。
syncLimit : Leader服务器与follower服务器之间信息同步允许的最大时间间隔,如果超过次间隔,默认follower服务器与leader服务器之间断开链接。
tickTime : Leader与follower之间交互的基本时间单元(ms)
dataDir : 保存zookeeper数据路径
dataLogDir : 保存zookeeper日志路径,当此配置不存在时默认路径与dataDir一致
clientPort : 客户端访问zookeeper时经过服务器端时的端口号
maxClientCnxns : 限制连接到zookeeper服务器客户端的数量
server.id=host:port:port : 表示了不同的zookeeper服务器的自身标识,作为集群的一部分,每一台服务器应该知道其他服务器的信息。用户可以从“server.id=host:port:port” 中读取到相关信息。在服务器的data(dataDir参数所指定的目录)下创建一个文件名为myid的文件,这个文件的内容只有一行,指定的是自身的id值。比如,服务器“1”应该在myid文件中写入“1”。这个id必须在集群环境中服务器标识中是唯一的,且大小在1~255之间。这一样配置中,zoo1代表第一台服务器的IP地址。第一个端口号(port)是从follower连接到leader机器的端口,第二个端口是用来进行leader选举时所用的端口。所以,在集群配置过程中有三个非常重要的端口:clientPort:2181、port:2888、port:3888。
使用单机模式时需要注意,在这种配置方式下,如果zookeeper服务器出现故障,zookeeper服务将会停止。
6、在数据目录中创建id标志。
在数据目录下,创建一个myid文件,内容为server.后面的这个编号
7、将zookeeper目录发送到其它服务器(使用root用户)。
scp –r /home/navy/zookeeper/zookeeper-3.4.13 root@yc02:’pwd’/ home/navy/zookeeper/
scp –r /home/navy/zookeeper/zookeeper-3.4.13 root@yc02:’pwd’/ home/navy/zookeeper/
8、在其它服务中创建数据目录和myid文件。
9、可将zookeeper下的bin目录添加到环境变量中。
10、发送配置文件
scp /etc/profile root@yc02:/etc/profile、scp /etc/profile root@yc03:/etc/profile
11、启动zookeeper。zookeeper/bin/zkServer.sh start。
zkServer.sh start|stop|restart|status
12、查看运行状态。jps –ml
可以看到,QuorumPeerMain已经处于运行状态。
13、执行telnet命令,连接上服务器之后,执行stat命令进行服务启动的验证,如果出现类似下面的信息则说明服务已经正常启动,一般情况下不需要验证,启动即可正常运行。
14、运行zkServer.sh status。查看zkServer的运行状态以及mode是follower还是leader