一、zookeeper简介
Apache ZooKeeper is an effort to develop and maintain an open-source server which enables highly reliable distributed coordination
Apache Zookeeper是开源的高可靠的分布式协调服务。
目前,非常多的开源组件依赖zookeeper的功能,如hadoop、hbase、storm、kafka等等,搭建zookeeper是搭建其他组件的前提条件。
二、部署模式及安装包准备
zookeeper有三种模式提供服务:
1、单机版--常用于开发阶段,做功能测试。
2、伪分布式--用于节省服务器成本。
3、分布式--用于高可用场景。
zookeeper是基于Quorum机制,底层使用ZAB协议工作。部署实例最好奇数,比如3、5;当然偶数实例也是可以工作的,只是宕机概率高。
部署前,确保服务器安装了jdk。从zookeeper官网上下载http://zookeeper.apache.org/ 3.4.6版本到相应的目录,如/opt/zookeeper目录。
三、安装
3.1伪分布式模式
1、解压/opt/zookeeper目录下的tar.gz安装包到zookeeper1、zookeeper2以及zookeeper3目录
2、对以上三个目录做如下操作
mkdir data
echo "1">./data/myid(此步根据不同的目录写入不同的内容,如zookeeper1写入1,zookeeper2写入2,zookeeper3写入3,数字代表启动后实例的编号)
mkdir log
cd ./conf
mv zoo_sample.cfg zoo.cfg
3、修改配置文件zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper/zookeeper1/data
dataLogDir=/opt/zookeeper/zookeeper1/log
clientPort=2181(zookeeper2目录为2182、zookeeper3目录为2183)
server.1=localhost:2287:3387
server.2=localhost:2288:3388
server.3=localhost:2289:3389
4、启动
分别在zookeeper1、zookeeper2和zookeeper3目录下执行 ./bin/zkServer.sh start
5、验证
在终端上执行jps,查看java进程,若有三个QuorumPeerMain进程,说明zookeeper初步部署成功。
如果没有,在zookeeper1、zookeeper2和zookeeper3目录中查看zookeeper.out启动日志,寻找相应的解决方案。
6、使用
在zookeeper1目录下执行./bin/zkCli.sh -server localhost:2181,进入如下交互界面
help命令查看所有功能
关于每个命令如何使用后续文章说明。
3.2分布式模式
有了上述伪分布模式的搭建经验后,分布式模式只需改动配置文件中的服务器地址和端口,其他步骤基本不变。
1、配置文件内容如下
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper/data(三台服务器使用同一个目录,不再有zookeeper1、zookeeper2、zookeeper3统一管理)
dataLogDir=/opt/zookeeper/log
clientPort=2181(全部使用2181端口)
server.1=192.168.2.100:2287:3387
server.2=192.168.2.101:2287:3387
server.3=192.168.2.102:2287:3387
2、验证
在每台服务器上使用./bin/zkServer.sh start命令启动服务,同样jps查看进程。
./bin/zkCli.sh -server 192.168.2.100:2181启动交互界面。