Linux下单机实现Zookeeper集群

安装配置JAVA开发环境html

下载ZOOKEEPER

zookeeper下载地址java

在下载的zookeeper目录里建立3个文件,zk1,zk2,zk3,用于存放每一个集群的数据文件。数据库

并在三个目录下建立data和logs目录apache

 

配置配置文件

将conf目录下的zoo-sample.cfg 更改成zoo1.cfg , zoo2.cfg ,zoo3.cfg 服务器

配置以下异步

# The number of milliseconds of each tick
# 心跳检测时间
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
# 心跳检测失败最大次数
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
# 内存数据库保存的模糊快照的目录,若是某个服务器为集群中的一台,则id文件也保存在该目录下
#  快照异步写入,不会阻塞
dataDir= ../zk1/data
dataLogDir= ../zk1/logs
# the port at which the clients will connect
# TCP监听端口
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
# server.myid=IP:PORT1;PORT2
#PORT1:服务器与集群中的LEADER服务器交换信息的端口
#PORT2:万一集群中的LEADER挂了,须要一个端口来从新进行宣讲 选出新的LEADER 
server.1=127.0.0.1:2881:3881
server.2=127.0.0.1:2882:3882
server.3=127.0.0.1:2883:3883

 

三个文件的区别是这三个配置 ide

zoo1.cfg测试

dataDir= ../zk1/data
dataLogDir= ../zk1/logs clientPort=2181

zoo2.cfgui

 

dataDir= ../zk2/data
dataLogDir= ../zk2/logs clientPort=2182

zoo3.cfg this

dataDir= ../zk3/data
dataLogDir= ../zk3/logs
clientPort=2183

 

  • tickTime: 基本事件单元,以毫秒为单位。这个时间是做为zookeeper服务器之间或客户端与服务器间维持心跳的时间。也就是每隔tickTime时间就会发送一个心跳
  • dataDir: 存储内存中数据库快照的位置,就是zookeeper保存数据的目录,默认状况下,zookeeper将数据的日志问也保存在这个目录里
  • clientPort: 客户端链接zookeeper服务器的端口,默认是2181,zookeeper会监听这个端口,接收客户端的访问请求
  • initLimit: 这个配置项是用来配置zookeeper接收客户端初始化链接能忍受多少个心跳时间间隔数。当已经超过10个心跳的时间(tickTime)长度后,zookeeper服务器尚未接收到客户端的返回信息,那么代表这个客户端链接失败。总的时间长度就是 10*2000 = 20 秒
  • syncLimit: 这个配置项标识Leader和Follower之间发送消息,请求和应答的长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是 5 * 2000 = 10秒
  • server.myid=IP:Port1:Port2, myid是服务器的编号,一个正整数,通常是0、一、二、3等待,port1表示的是服务器与集群中的Leader服务器交换信息的端口,Port2表示的是万一集群中的Leader服务器宕机了,须要一个端口来从新进行宣讲,选出一个新的Leader,若是是不一样的机器,能够选用相同的端口,因为本次测试是在单机上进行,所以选用不一样的端口。

 

建立myid文件

在每一个目录下的data目录里建立 myid文件,文件内容分别为1,2,3.

 

启动服务

 

lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkServer.sh start ../conf/zoo1.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo1.cfg
Starting zookeeper ... STARTED
lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkServer.sh start ../conf/zoo2.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo2.cfg
Starting zookeeper ... STARTED
lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkServer.sh start ../conf/zoo3.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo3.cfg
Starting zookeeper ... STARTED

 

 

查看服务状态

lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkServer.sh status ../conf/zoo1.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo1.cfg
Mode: follower
lgj@lgj
-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkServer.sh status ../conf/zoo2.cfg ZooKeeper JMX enabled by default Using config: ../conf/zoo2.cfg Mode: leader
lgj@lgj
-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkServer.sh status ../conf/zoo3.cfg ZooKeeper JMX enabled by default Using config: ../conf/zoo3.cfg Mode: follower

 

 

能够看到,ZK2选举成为了leader,另外两个为follower。

 

客户端链接测试

lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkCli.sh  -server 127.0.0.1:2181

 

lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkCli.sh  -server 127.0.0.1:2182

 

lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkCli.sh  -server 127.0.0.1:2183

 

 分别链接三个集群节点

在任何一个集群节点进行操做,其余集群也会同步更新。

在zk2建立节点

[zk: 127.0.0.1:2182(CONNECTED) 1] create /test1 ""
Created /test1

 

 在zk1查看节点

[zk: 127.0.0.1:2181(CONNECTED) 1] ls /
[zookeeper, test1]

 LEADER宕机测试

中止zk2节点工做

lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkServer.sh stop ../conf/zoo2.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo2.cfg
Stopping zookeeper ... STOPPED

 

 

等待超时时间到,从新查看各个节点的状态,能够看到,zk2中止运行以后,在看zk3被集群选举为leader.

lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkServer.sh status ../conf/zoo1.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo1.cfg
Mode: follower

lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkServer.sh status ../conf/zoo2.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo2.cfg
Error contacting service. It is probably not running.

lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkServer.sh status ../conf/zoo3.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo3.cfg
Mode: leader
相关文章
相关标签/搜索