伪分布式集群:在一台Server中,启动多个ZooKeeper的实例。apache
下面来看看zookeeper怎么进行安装的吧。vim
选择一个稳定版本进行下载,我这里下载的是zookeeper-3.4.6版本。服务器
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
tar -zxvf zookeeper-3.4.6.tar.gz
cd zookeeper-3.4.6/conf #复制三份zookeeper配置文件 cp zoo_sample.cfg zoo1.cfg cp zoo_sample.cfg zoo2.cfg cp zoo_sample.cfg zoo3.cfg
#zoo1.cfg tickTime=2000 dataDir=/usr/local/zookeeper-3.4.6/data/zk1 clientPort=2181 initLimit=10 syncLimit=5 server.1=127.0.0.1:2881:3881 server.2=127.0.0.1:2882:3882 server.3=127.0.0.1:2883:3883 #zoo2.cfg tickTime=2000 dataDir=/usr/local/zookeeper-3.4.6/data/zk2 clientPort=2182 initLimit=10 syncLimit=5 server.1=127.0.0.1:2881:3881 server.2=127.0.0.1:2882:3882 server.3=127.0.0.1:2883:3883 #zoo3.cfg tickTime=2000 dataDir=/usr/local/zookeeper-3.4.6/data/zk3 clientPort=2183 initLimit=10 syncLimit=5 server.1=127.0.0.1:2881:3881 server.2=127.0.0.1:2882:3882 server.3=127.0.0.1:2883:3883
解释:分布式
dataDir定义zookeeper实例存储持久出具的本地文件系统位置spa
clientPort定义zookeeper客户端链接zookeeper服务端时使用的端口日志
server定义zookeeper集群的各个实例的ip和端口server
tickTime进程
指定了zookeeper中的基本时间单元(以毫秒为单位)ip
zookeeper集群中,每一个服务器都有一个id(数字),服务器id在集群中是惟一的,而且取值范围是1~255,经过一个名为myid的纯文本设置,这个文件保存在dataDir中get
server.n=hostname:port:portn是服务器id,第一个port是follower用来链接leader的端口,第二个port是用于leader选举
clientPort监听client链接的端口号
initLimit设定了全部follower与leader进行链接并同步的时间范围。若是在设定的时间段内,半数以上的follower跟随者未能完成同步,leader会宣布放弃领导地位,而后进行另一次leader选举,若是这种状况常常发生,则代表设定的值过小
syncLimit设定了容许一个follower与leader这进行同步的时间。若是在设定的时间段内,一个follower未能完成同步,会本身重启,全部关联到follower的客户端将链接到另外一个follower
建立dataDir和实例id文件 mkdir -p /usr/local/zookeeper/zk1/data mkdir -p /usr/local/zookeeper/zk2/data mkdir -p /usr/local/zookeeper/zk3/data #zoo1.cfg vim /usr/local/zookeeper/zk3/data/myid #输入1 #zoo2.cfg vim /usr/local/zookeeper/zk3/data/myid #输入2 #zoo3.cfg vim /usr/local/zookeeper/zk3/data/myid #输入3
bin/zkServer.sh start ../conf/zoo1.cfg bin/zkServer.sh start ../conf/zoo2.cfg bin/zkServer.sh start ../conf/zoo3.cfg #查看zookeeper 服务角色状态,[follower,leader] bin/zkServer.sh status ../conf/zoo1.cfg bin/zkServer.sh status ../conf/zoo2.cfg bin/zkServer.sh status ../conf/zoo3.cfg
jps
看到相似下面的进程就表示3个实例均启动成功
13419 QuorumPeerMain
13460 QuorumPeerMain
13561 Jps
13392 QuorumPeerMain
若是未成功启动,能够到zookeeper.out文件中查看启动失败的日志信息。
./zkCli.sh -server 127.0.0.1:2181
bin/zkServer.sh stop ../conf/zoo1.cfg bin/zkServer.sh stop ../conf/zoo2.cfg bin/zkServer.sh stop ../conf/zoo3.cfg