a.在安装zookeeper的时候我们要去修改zookeeper预装是conf目录下面的zoo_sample.cfg这个文件,首先我们要做的事就是重命名这个文件

mv zoo_sample.cfg  zoo.cfg
b.预装的zoo.cfg下面默认有五个属性,他们分别是:1.tickTime,2.initLimit,3.syncLimit,4.dataDir,5.clientPort

下面我们来对这五个属性做详细的分析

英文说明:# The number of milliseconds of each tick

 (1)tickTime   

——CS通信心跳时间

tick翻译成中文的话就是滴答滴答的意思,连起来就是滴答滴答的时间,寓意心跳间隔,单位是毫秒,系统默认是2000毫秒,也就是间隔两秒心跳一次。

tickTime的意义:客户端与服务器或者服务器与服务器之间维持心跳,也就是每个tickTime时间就会发送一次心跳。通过心跳不仅能够用来监听机器的工作状态,还可以通过心跳来控制Flower跟Leader的通信时间,默认情况下FL的会话时常是心跳间隔的两倍。


# The number of ticks that the initial  synchronization phase can take

(2)initLimit

集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。

(3)syncLimit

集群中flower服务器(F)跟leader(L)服务器之间的请求和答应最多能容忍的心跳数。   

(4)dataDir

该属性对应的目录是用来存放myid信息跟一些版本,日志,跟服务器唯一的ID信息等。

 来看注释

 # the directory where the snapshot is stored. do not use /tmp for storage, /tmp here is just   example sakes.

不要使用/tmp来做存储快照的目录,/tmp这只是一个案例。在集群zookeeper服务在启动的时候回去读取zoo.cfg这个文件,从这个文件中找到这个属性然后获取它的值也就是dataDir 的路径,它会从这个路径下面读取mydi这个文件,从这个文件中获取要启动的当前服务器的地址,当它找不到这个地址的时候就会抛出异常,我们可以去查看状态

[hadoop@hadoop06 data]$ zkServer.sh status
JMX enabled by default
Using config: /app/zookeeper-3.4.5/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
这是一个很常见的错误,要想解决这个bug,去查看日志就会有很精准的提示:

java.lang.RuntimeException: My id 5 not in the peer list



所以在创建myid的时候给的值是多少,那么在zoo.cfg里面配置集群信息的时候要准确指出!

c.集群信息的配置

在zoo.cfg这个文件中,配置集群信息是存在一定的格式:service.N =YYY: A:B

N:代表服务器编号(也就是myid里面的值)

YYY:服务器地址

A:表示 Flower 跟 Leader的通信端口,简称服务端内部通信的端口(默认2888)

B:表示 是选举端口(默认是3888)

例如:

server.1=hadoop05:2888:3888
server.2=hadoop06:2888:3888
server.3=hadoop07:2888:3888

(5)clientPort

客户端连接的接口,客户端连接zookeeper服务器的端口,zookeeper会监听这个端口,接收客户端的请求访问!这个端口默认是2181。


启动服务器,可以使用下面 的命令来来查看端口监听情况

netstat -tan


画红线的地方就是当前Zookeeper服务器的监听的端口,粉色圈起来的地方我们还可以分析出哪台服务器的2888端口已经打开在监听客户端的请求,也就是说IP地址是

192.168.2.16这太服务器就是当前的Leader,还可以看出另外两台服务器的3888选举端口已经在监听。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐