ZooKeeper是一个为分布式应用所设计的分布的、开源的协调服务,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper本身可以以Standalone模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。
ZooKeeper是作为分布式协调服务,是不需要依赖于Hadoop的环境,也可以为其他的分布式环境提供服务。
2. zookeeper单节点安装Standalones模式
系统环境:
•Linux Ubuntu 12.04.2 LTS 64bit server
•Java: 1.6.0_29 64-Bit Server VM
•下载zookeeper
~ mkdir /home/conan/toolkit
~ cd /home/conan/toolkit
~ wget
~ tar xvf zookeeper-3.4.5.tar.gz
~ mv zookeeper-3.4.5 zookeeper345
~ cd zookeeper345
~ ls -l
drwxr-xr-x 2 conan conan 4096 Aug 12 04:34 bin
-rw-r--r-- 1 conan conan 75988 Aug 12 04:34 build.xml
-rw-r--r-- 1 conan conan 70223 Aug 12 04:34 CHANGES.txt
drwxr-xr-x 2 conan conan 4096 Aug 12 04:34 conf
drwxr-xr-x 10 conan conan 4096 Aug 12 04:34 contrib
drwxr-xr-x 2 conan conan 4096 Aug 12 04:34 dist-maven
drwxr-xr-x 6 conan conan 4096 Aug 12 04:34 docs
-rw-r--r-- 1 conan conan 1953 Aug 12 04:34 ivysettings.xml
-rw-r--r-- 1 conan conan 3120 Aug 12 04:34 ivy.xml
drwxr-xr-x 4 conan conan 4096 Aug 12 04:34 lib
-rw-r--r-- 1 conan conan 11358 Aug 12 04:34 LICENSE.txt
-rw-r--r-- 1 conan conan 170 Aug 12 04:34 NOTICE.txt
-rw-r--r-- 1 conan conan 1770 Aug 12 04:34 README_packaging.txt
-rw-r--r-- 1 conan conan 1585 Aug 12 04:34 README.txt
drwxr-xr-x 5 conan conan 4096 Aug 12 04:34 recipes
drwxr-xr-x 8 conan conan 4096 Aug 12 04:34 src
-rw-r--r-- 1 conan conan 1315806 Aug 12 04:34 zookeeper-3.4.5.jar
-rw-r--r-- 1 conan conan 833 Aug 12 04:34 zookeeper-3.4.5.jar.asc
-rw-r--r-- 1 conan conan 33 Aug 12 04:34 zookeeper-3.4.5.jar.md5
-rw-r--r-- 1 conan conan 41 Aug 12 04:34 zookeeper-3.4.5.jar.sha1
•修改配置文件conf/zoo.cfg
~ mkdir /home/conan/zoo/zk0
~ cp conf/zoo_sample.cfg conf/zoo.cfg
~ vi conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/conan/zoo/zk0
clientPort=2181
非常简单,我们已经配置好了的zookeeper单节点
启动zookeeper
~ bin/zkServer.sh
JMX enabled by default
Using config: /home/conan/zoo/zk0/zookeeper345/bin/../conf/zoo.cfg
Usage: bin/zkServer.sh {start|start-foreground|stop|restart|status|upgrade|print-cmd}
conan@conan:~/zoo/zk0/zookeeper345$ bin/zkServer.sh start
JMX enabled by default
Using config: /home/conan/zoo/zk0/zookeeper345/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
#zk的服务显示为QuorumPeerMain
~ jps
5321 QuorumPeerMain
5338 Jps
#查看运行状态
~ bin/zkServer.sh status
JMX enabled by default
Using config: /home/conan/zoo/zk0/zookeeper345/bin/../conf/zoo.cfg
Mode: standalone
单节点的时,Mode会显示为standalone
停止ZooKeeper服务
~ bin/zkServer.sh stop
JMX enabled by default
Using config: /home/conan/zoo/zk0/zookeeper345/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
3. zookeeper伪分布式集群安装
所谓 “伪分布式集群” 就是在,在一台PC中,启动多个ZooKeeper的实例。“完全分布式集群” 是每台PC,启动一个ZooKeeper实例。
由于我的测试环境PC数量有限,所以在一台PC中,启动3个ZooKeeper的实例。
创建环境目录
~ mkdir /home/conan/zoo/zk1
~ mkdir /home/conan/zoo/zk2
~ mkdir /home/conan/zoo/zk3
#新建myid文件
~ echo "1" > /home/conan/zoo/zk1/myid
~ echo "2" > /home/conan/zoo/zk2/myid
~ echo "3" > /home/conan/zoo/zk3/myid
分别修改配置文件
修改:dataDir,clientPort
增加:集群的实例,server.X,”X”表示每个目录中的myid的值
~ vi /home/conan/toolkit/zookeeper345/conf/zk1.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/conan/zoo/zk1
clientPort=2181
server.1=192.168.1.201:2888:3888
server.2=192.168.1.201:2889:3889
server.3=192.168.1.201:2890:3890