zookeeper 3.4.2集群安装

 

集群安装

1.安装JDK。下载地址:http://java.sun.com/javase/downloads/index.jsp 
   设置JAVA_HOME ,$JAVA_HOME/bin 加到PATH变量里。

2.下载Zookeeper 地址:http://hadoop.apache.org/zookeeper/releases.html 解压到相应目录。

3.创建配置文件。conf/zoo.cfg 内容例如:

#tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 毫秒时间就会发送一个心跳。

 

tickTime=2000

 

#dataDirZookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。

 

dataDir=/tmp/zookeeper/data

 

#dataLogDir:日志文件保存的位置

 

dataLogDir=/tmp/zookeeper/log

 

#clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。

 

clientPort=2181

 

#initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。

#当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。

 

initLimit=10 

 

#syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 5*2000=10 

 

syncLimit=5

 

#server.A=BCD:其中 是一个数字,表示这个是第几号服务器;是这个服务器的 ip 地址;表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

#如果是伪集群的配置方式,由于 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。

 

server.1=192.168.211.1:2888:3888 

server.2=192.168.211.2:2888:3888 

server.3=192.168.211.3:2888:3888

 

#自动清理功能是3.4.0之后提供的功能。较低的版本需要手工运行清理工具。

#自动清理时保存在datadir里的数据快照数。最小值3

 

autopurge.snapRetainCount=3

 

#自动清理任务的间隔小时数

 

autopurge.purgeInterval=1

 


4.创建myid文件。
myid文件只包含一个单行文本,内容为机器的编号。server.A=BC其中的数字A 进入到dataDirecho A > myid 。

5.测试
全部配置完成后,进入各机器Zookeeperbin目录,执行./zkServer.sh start 

之后执行echo stat | nc localhost 2181 查看当前节点状态。

 


Observers配置

为提高zookeeper伸缩性而设计。Observers不参与投票的服务器,可以接受客户端的连接,将写请求转发给领导节点

 

设置 ZooKeeper 使用 Observers 非常简单,只需要在配置文件中有两处改动。

首先是每个 Observer 的配置文件中都要有这么一行:

peerType=observer

这行让服务器作为一个 Observer 来工作。之后,在每个服务器配置文件中,你必须在服务器定义行给每个 Observer 加入 :observer  。比如:

Server.4=192.168.211.4:2888:3888:observer

这让每个其他服务器知道 server.4 是一个 Observer,就不会让它进行投票了。

 

有关Obervers的说明详见gnawux的译文 http://wangxu.me/blog/p/320 

 

系统监控

使用命令监控

例如:

echo stat | nc ip port 

echo conf | nc ip port 

或者telnet ip port 输入 stat conf等。

常用指令如下:

conf :显示配置参数

cons :列出所有的连接

crst  :重置连接/session的统计信息

dump Lists the outstanding sessions and ephemeral nodes. Leader节点有效。

envi :输出环境变量

ruok 是否runok.

Srst重置服务器统计信息。

Srvr:显示服务器信息。平均等待时间,运行的模式等。

Stat:显示服务状态。

wchs Lists brief information on watches for the server. 显示多少个连接多少个被watchpath等。

wchc Lists detailed information on watches for the server, by session 小心使用,可能影响性能。

wchp  Lists detailed information on watches for the server, by path 小心使用,可能影响性能。

mntr  输出集群健康监测相关的信息。

 

使用jmx监控

修改zkServer.sh, ZOOMAIN部分的内容修改类似如下:

 

ZOOMAIN="-Dcom.sun.management.jmxremote  -Dcom.sun.management.jmxremote.local.only=$JMXLOCALONLY -Djava.rmi.server.hostname=10.10.249.197

-Dcom.sun.management.jmxremote.port=1911

-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false

 org.apache.zookeeper.server.quorum.QuorumPeerMain"

 

启动后,可在远程启动jconsole通过jmx连接后监控。

 

问题处理

 当文件损坏导致无法启动时,解决方法如下:

1.启动其它能正常启动的zookeeper,并用echo ruok| nc ip port 判断正常运行。

2.删除 datadir/version-2 and datalogdir/version-2/ 目录。

3.启动zookeeper

 

猜你喜欢

转载自attend.iteye.com/blog/1454212