ZooKeeper安装笔记

ZookKeeper 是Apache的顶级项目之一,我们可用它来做配置管理集群管理消息队列等。

安装相对简单,同样有单机和分布式俩种安装模式,单机少一些配置,本文给出安装方法和一些常用管理命令等。

环境要求

  1. linux 或者 windows(生产环境最好不用)

  2. jdk1.6 以上

设置Java heap 大小。避免内存与磁盘空间的交换,能够大大提升ZK的性能,设置合理的heap大小则能有效避免此类空间交换的触发。在正式发布上线之前,建议是针对使用场景进行一些压力测试,确保正常运行后内存的使用不会触发此类交换。通常在一个物理内存为4G的机器上,最多设置-Xmx为3G。

  1. 下载ZK,http://zookeeper.apache.org/releases.html
    并解压到usr/local/zookeeper
  2. 三台虚拟机:
    server.1=zoo1:2888:3888
    server.2=zoo2:2888:3888
    server.3=zoo3:2888:3888

Zookeeper配置

编辑配置文件,在conf目录:

move ./zoo_sample.cfg ./zoo.cfg
vim zoo.cfg

内容如下:

tickTime=2000
dataDir=/var/lib/zookeeper/data
clientPort=2181
initLimit=5
syncLimit=2

##单机不需要以下配置
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888

设置Myid,单机不需要

server.id=host:port:port 的格式,server固定,后面的数字是此服务器在集群中的序号[1~255],并需要data目录下创建文件myid来存储当前server的id。

设置服务器id:

echo 1 >> /var/lib/zookeeper/data/myid

其他俩台分别执行:

echo 2 >> /var/lib/zookeeper/data/myid
和
echo 3 >> /var/lib/zookeeper/data/myid

启动ZK

cd /usr/local/zookeeper/bin
./zkServer.sh start (windows下是zkServer.cmd)

查看启动状态:

./zkServer.sh status

通过ZK客户端连接ZK

./zkCli.sh 或者 ./zkCli.sh -server 127.0.0.1:2181

需要注意的是在集群模式下,ZK不能像Hadoop那样只需要在master下执行启动命令Hadoop自动启动slaves,ZK需要手动去启动每个节点!

至此,ZK安装配置结束!

Zookeeper配置参数说明

  1. tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,单位毫秒。

  2. dataDir:是 Zookeeper 保存数据和日志的目录。

  3. clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口。

  4. initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒

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

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

JMX远程支持

Zookeeper默认开启JMX,只限本地连接,远程连接需要修改启动脚本

打开 ./bin/zkServer.sh 找到:

ZOOMAIN="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=$JMXLOCALONLY org.apache.zookeeper.server.quorum.QuorumPeerMain"

加入启动参数:

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

如:

ZOOMAIN="-Dcom. sun.management.jmxremote.port=5000 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false org.apache.zookeeper.server.quorum.QuorumPeerMain"

Zookeeper四字命令

ZK服务提供了下列命令让管事员来测试服务的运行情况。

  1. stat: 查看ZK结点follower或leader情况。
  2. srst: 重置通过stat查看的统计结果信息。
  3. ruok: 测试Server,若回复imok表示已经启动。
  4. dump: 列出未经处理的会话和临时节点。
  5. kill: 关掉server, 必须在ZK服务运行的机器上执行。
  6. conf: 输出相关服务配置的详细信息。
  7. cons: 列出所有连接到服务器的客户端的完全的连接 / 会话的详细信息。
  8. crst: 重置 connection/session 所有连接的统计信息。
  9. envi: 输出关于服务环境的详细信息。
  10. reqs: 列出未经处理的请求。
  11. wchs: 列出服务器 watch 的详细信息。
  12. wchc: 通过 session 列出服务器 watch 的详细信息,它的输出是一个与 watch 相关的会话的列表。
  13. wchp: 通过路径列出服务器 watch 的详细信息。它输出一个与 session 相关的路径。
  14. srvr: 列出服务的详细信息。
  15. mntr: 打印所有可以用来监控集群服务健康状态信息的变量。

用法:
linux: echo mntr|nc 127.0.0.1 2181

zk_version  3.4.0
zk_avg_latency  0
zk_max_latency  0
zk_min_latency  0
zk_packets_received 70
zk_packets_sent 69
zk_outstanding_requests 0
zk_server_state leader
zk_znode_count   4
zk_watch_count  0
zk_ephemerals_count 0
zk_approximate_data_size    27
zk_followers    4                   - only exposed by the Leader
zk_synced_followers 4               - only exposed by the Leader
zk_pending_syncs    0               - only exposed by the Leader
zk_open_file_descriptor_count 23    - only available on Unix platforms
zk_max_file_descriptor_count 1024   - only available on Unix platforms

windows: telnet 127.0.0.1 2181 然后输入:stat等四字命令。

更多ZK管理内容请参考:http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html

Zookeeper客户端常用命令

进入zkCli后敲入help,或者随便敲几个字符ZK会打印出如下信息:

get path [watch]
ls path [watch]
set path data [version]
rmr path
delquota [-n|-b] path
quit 
printwatches on|off
create [-s] [-e] path data acl
stat path [watch]
close 
ls2 path [watch]
history 
listquota path
setAcl path acl
getAcl path
sync path
redo cmdno
addauth scheme auth
delete path [version]
setquota -n|-b val path

注:path 要以 / 打头;使用监听如:get /t watch

参考网址

http://zookeeper.apache.org/doc/trunk/zookeeperStarted.html
http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html
http://www.cnblogs.com/haippy/archive/2012/07/19/2599989.html

posted @ 2013-05-18 20:59  土豆的奥特之父  阅读(1631)  评论(0编辑  收藏  举报