伪分布式集群:在一台Server中,启动多个ZooKeeper的实例。
下面来看看zookeeper怎么进行安装的吧。
下载
选择一个稳定版本进行下载,我这里下载的是zookeeper-3.4.6版本。
1 | wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz |
解压
1 | tar -zxvf zookeeper-3.4.6.tar.gz |
创建实例配置文件
1 | cd zookeeper-3.4.6/conf |
修改配置
1 | tickTime=2000 |
- 分别配置三个实例的clientPort端口为2181, 2182, 2183
- 分别配置是哪个实例的dataDir目录为
/opt/zk1/data
,/opt/zk2/data
,/opt/zk3/data
,并创建这三个目录,没有创建该目录会启动出错 - 定义zookeeper集群的各个实例的ip和端口,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实例存储持久出具的本地文件系统位置clientPort
定义zookeeper客户端连接zookeeper服务端时使用的端口server
定义zookeeper集群的各个实例的ip和端口tickTime
指定了zookeeper中的基本时间单元(以毫秒为单位)
zookeeper集群中,每个服务器都有一个id(数字),服务器id在集群中是唯一的,并且取值范围是1~255,通过一个名为myid的纯文本设置,这个文件保存在dataDir中server.n=hostname:port:port
n是服务器id,第一个port是follower用来连接leader的端口,第二个port是用于leader选举clientPort
监听client连接的端口号initLimit
设定了所有follower与leader进行连接并同步的时间范围。如果在设定的时间段内,半数以上的follower跟随者未能完成同步,leader会宣布放弃领导地位,然后进行另外一次leader选举,如果这种情况经常发生,则表明设定的值太小syncLimit
设定了允许一个follower与leader这进行同步的时间。如果在设定的时间段内,一个follower未能完成同步,会自己重启,所有关联到follower的客户端将连接到另一个follower
创建dataDir和实例id文件
1 | mkdir -p /opt/zk1/data |
启动zookeeper服务
1 | bin/zkServer.sh start zoo1.cfg |
查看是否启动成功
1 | jps |
看到类似下面的进程就表示3个实例均启动成功
13419 QuorumPeerMain
13460 QuorumPeerMain
13561 Jps
13392 QuorumPeerMain
如果未成功启动,可以到zookeeper.out文件中查看启动失败的日志信息。
客户端连接
1 | ./zkCli.sh -server 127.0.0.1:2181 |
关闭zookeeper
1 | bin/zkServer.sh stop |
重启zookeeper
1 | bin/zkServer.sh restart |