ZooKeeper的安装模式分为三种,分别为:单机模式(stand-alone)、集群模式和集群伪分布模式。node
一. 单机安装、配置:
1. 下载zookeeper二进制安装包
下载地址:http://apache.dataguru.cn/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gzshell
2.解压zookeeper安装包到安装路径
3.建立并配置zoo.cfg配置文件,主要配置或修改如下参数apache
tickTime=2000
dataDir=/home/zookeeper/data
dataLogDir=/home/zookeeper/logs
clientPort=2181
参数说明:
tickTime: zookeeper中使用的基本时间单位, 毫秒值.
dataDir: 数据目录. 能够是任意目录.
dataLogDir: log目录, 一样能够是任意目录. 若是没有设置该参数, 将使用和dataDir相同的设置.
clientPort: 监听client链接的端口号服务器
在conf目录中将zoo_samle.cfg 复制并命名为zoo.cfg便可session
# cp zoo_sample.cfg zoo.cfg工具
zookeeper 环境变量配置oop
# vi /etc/profile
export ZK_HOME=/home/zookeeper/zookeeper-3.4.8
export PATH=$ZK_HOME/bin:$PATH测试
测试:ui
回到zookeeper/bin目录下,启动zookeeper服务命令行
在bin下运行 ./zkServer.sh start启动服务,运行./zkCli.sh -server 10.10.100.10:2181 就是你的服务器和端口,启动客户端链接服务
二. 伪集群安装、配置:
所谓伪集群, 是指在单台机器中启动多个zookeeper进程, 并组成一个集群. 以启动3个zookeeper进程为例.
将zookeeper的目录拷贝2份:
zookeeper0/conf/zoo.cfg文件为:
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/home/zookeeper0/data
dataLogDir=/home/zookeeper0/logs
clientPort=2181
server.0=127.0.0.1:8880:7770
server.1=127.0.0.1:8881:7771
server.2=127.0.0.1:8882:7772
新增了几个参数, 其含义以下:
1 initLimit: zookeeper集群中的包含多台server, 其中一台为leader, 集群中其他的server为follower. initLimit参数配置初始化链接时, follower和leader之间的最长心跳时间. 此时该参数设置为5, 说明时间限制为5倍tickTime, 即5*2000=10000ms=10s.
2 syncLimit: 该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度. 此时该参数设置为2, 说明时间限制为2倍tickTime, 即4000ms.
3 server.X=A:B:C 其中X是一个数字, 表示这是第几号server. A是该server所在的IP地址. B配置该server和集群中的leader交换消息所使用的端口. C配置选举leader时所使用的端口. 因为配置的是伪集群模式, 因此各个server的B, C参数必须不一样.
参照zookeeper0/conf/zoo.cfg, 配置zookeeper1/conf/zoo.cfg, 和zookeeper2/conf/zoo.cfg文件. 只需更改dataDir, dataLogDir, clientPort参数便可.
在以前设置的dataDir中新建myid文件, 写入一个数字, 该数字表示这是第几号server. 该数字必须和zoo.cfg文件中的server.X中的X一一对应.
/home/zookeeper0/data/myid文件中写入0, /home/zookeeper1/data/myid文件中写入1, /home/zookeeper2/data/myid文件中写入2.
分别进入/home/zookeeper0/bin, /home/zookeeper1/bin, /hadoop/zookeeper2/bin三个目录, 启动server.
三. 集群安装、配置:
集群模式的配置和伪集群基本一致.
因为集群模式下, 各server部署在不一样的机器上, 所以各server的conf/zoo.cfg文件能够彻底同样.
下面是一个示例:
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/home/zookeeper/data
dataLogDir=/home/zookeeper/logs
clientPort=4180
server.43=10.1.39.43:2888:3888
server.47=10.1.39.47:2888:3888
server.48=10.1.39.48:2888:3888
示 例中部署了3台zookeeper server, 分别部署在10.1.39.43, 10.1.39.47, 10.1.39.48上. 须要注意的是, 各server的dataDir目录下的myid文件中的数字必须不一样,10.1.39.43 server的myid为43, 10.1.39.47 server的myid为47, 10.1.39.48 server的myid为48.
四.zookeeper经常使用命令
ZooKeeper服务命令: 1. 启动ZK服务: ./zkServer.sh start 2. 查看ZK服务状态: ./zkServer.sh status 3. 中止ZK服务: ./zkServer.sh stop 4. 重启ZK服务: ./zkServer.sh restart zk客户端命令: ZooKeeper 命令行工具相似于Linux的shell环境,使用它能够对ZooKeeper进行访问,数据建立,数据修改等操做. 使用 zkCli.sh -server 127.0.0.1:2181 链接到 ZooKeeper 服务,链接成功后,系统会输出 ZooKeeper 的相关环境以及配置信息。 命令行工具的一些简单操做以下: 1. 显示根目录下、文件: ls / 使用 ls 命令来查看当前 ZooKeeper 中所包含的内容 2. 显示根目录下、文件: ls2 / 查看当前节点数据并能看到更新次数等数据 3. 建立文件,并设置初始内容: create /zk "test" 建立一个新的 znode节点“ zk ”以及与它关联的字符串 4. 获取文件内容: get /zk 确认 znode 是否包含咱们所建立的字符串 5. 修改文件内容: set /zk "zkbak" 对 zk 所关联的字符串进行设置 6. 删除文件: delete /zk 将刚才建立的 znode 删除 7. 退出客户端: quit 8. 帮助命令: help ZooKeeper 经常使用四字命令: ZooKeeper 支持某些特定的四字命令字母与其的交互。它们大可能是查询命令,用来获取 ZooKeeper 服务的当前状态及相关信息。用户在客户端能够经过 telnet 或 nc 向 ZooKeeper 提交相应的命令 1. 能够经过命令:echo stat|nc 127.0.0.1 2181 来查看哪一个节点被选择做为follower或者leader 2. 使用echo ruok|nc 127.0.0.1 2181 测试是否启动了该Server,若回复imok表示已经启动。 3. echo dump| nc 127.0.0.1 2181 ,列出未经处理的会话和临时节点。 4. echo kill | nc 127.0.0.1 2181 ,关掉server 5. echo conf | nc 127.0.0.1 2181 ,输出相关服务配置的详细信息。 6. echo cons | nc 127.0.0.1 2181 ,列出全部链接到服务器的客户端的彻底的链接 / 会话的详细信息。 7. echo envi |nc 127.0.0.1 2181 ,输出关于服务环境的详细信息(区别于 conf 命令)。 8. echo reqs | nc 127.0.0.1 2181 ,列出未经处理的请求。 9. echo wchs | nc 127.0.0.1 2181 ,列出服务器 watch 的详细信息。 10. echo wchc | nc 127.0.0.1 2181 ,经过 session 列出服务器 watch 的详细信息,它的输出是一个与 watch 相关的会话的列表。 11. echo wchp | nc 127.0.0.1 2181 ,经过路径列出服务器 watch 的详细信息。它输出一个与 session 相关的路径。