- 1 使用docker-compose方式
- 2 纯手工方式
- The number of milliseconds of each tick
- The number of ticks that the initial
- synchronization phase can take
- The number of ticks that can pass between
- sending a request and getting an acknowledgement
- the directory where the snapshot is stored.
- do not use /tmp for storage, /tmp here is just
- example sakes.
- the port at which the clients will connect
- 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">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
- The number of milliseconds of each tick
- The number of ticks that the initial
- synchronization phase can take
- The number of ticks that can pass between
- sending a request and getting an acknowledgement
- the directory where the snapshot is stored.
- do not use /tmp for storage, /tmp here is just
- example sakes.
- the port at which the clients will connect
- 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">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
- 在zk1上新建一个node,到zk2和3上能够马上查看到
1 使用docker-compose方式
- 拉取 Zookeeper 镜像:
docker pull zookeeper:版本号
创建并编写
vi docker-compose.yaml
version: '3.3'
services:
zoo1:
image: zookeeper:3.4.13
restart: always
hostname: zoo1
container_name: zoo1
ports:
- "2181:2181"
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo2:
image: zookeeper:3.4.13
restart: always
hostname: zoo2
container_name: zoo2
ports:
- "2182:2181" # 将docker容器中的2181端口映射到宿主机的2182端口
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo3:
image: zookeeper:3.4.13
restart: always
hostname: zoo3
container_name: zoo3
ports:
- "2183:2181"
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
在 docker-compose.yaml 所在目录创建并启动容器,然后查看集群中一个容器的zookeeper状态
docker-compose -p zk_cluster up -d # 创建并启动容器
docker exec -it zoo1 bash ./bin/zkServer.sh status # 查看zoo1容器中zookeeper的状态
2 纯手工方式
2.1 准备好3个节点的配置文件
zoo.cfg默认在/usr/local/etc/zookeeper目录下。在这个目录下创建zoo1.cfg zoo2.cfg zoo3.cfg。其中,各个节点需要配置相应的dataDir,clientPort。
另外,server.1, server.2, server.3是集群配置信息,表明构成集群的3个节点。例如:server.A=B:D:D. 这里的A是一个数字,表示服务器的编号。B是这个服务器的ip地址。C是zookeeper服务器之间通信端口。D是Leader选举的端口。zoo1.cfg 配置文件 ```shell zookeeper $ cat zoo1.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.
dataDir=/usr/local/var/run/zookeeper/zk1/data
the port at which the clients will connect
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.1=localhost:2287:3387 server.2=localhost:2288:3388 server.3=localhost:2289:3389
2. zoo2.cfg 配置文件
```shell
zookeeper $ cat zoo2.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.
dataDir=/usr/local/var/run/zookeeper/zk2/data
# the port at which the clients will connect
clientPort=2182
# 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.1=localhost:2287:3387
server.2=localhost:2288:3388
server.3=localhost:2289:3389
- zoo3.cfg 配置文件
```shell
zookeeper $ cat zoo3.cfg
The number of milliseconds of each tick
tickTime=2000The number of ticks that the initial
synchronization phase can take
initLimit=10The number of ticks that can pass between
sending a request and getting an acknowledgement
syncLimit=5the directory where the snapshot is stored.
do not use /tmp for storage, /tmp here is just
example sakes.
dataDir=/usr/local/var/run/zookeeper/zk3/datathe port at which the clients will connect
clientPort=2183the 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.1=localhost:2287:3387 server.2=localhost:2288:3388 server.3=localhost:2289:3389
4. 创建data目录和myid文件
```shell
#创建如下data目录
/usr/local/var/run/zookeeper/zk1/data
/usr/local/var/run/zookeeper/zk2/data
/usr/local/var/run/zookeeper/zk3/data
#创建如下myid文件
data $ cat /usr/local/var/run/zookeeper/zk1/data/myid
1
data $ cat /usr/local/var/run/zookeeper/zk2/data/myid
2
data $ cat /usr/local/var/run/zookeeper/zk3/data/myid
3
- 启动3个zookeeper ```shell $ zkServer start /usr/local/etc/zookeeper/zoo1.cfg ZooKeeper JMX enabled by default Using config: /usr/local/etc/zookeeper/zoo1.cfg Starting zookeeper … STARTED
$ zkServer start /usr/local/etc/zookeeper/zoo2.cfg ZooKeeper JMX enabled by default Using config: /usr/local/etc/zookeeper/zoo2.cfg Starting zookeeper … STARTED
$ zkServer start /usr/local/etc/zookeeper/zoo3.cfg ZooKeeper JMX enabled by default Using config: /usr/local/etc/zookeeper/zoo3.cfg Starting zookeeper … STARTED
6. 查看各个节点的状态:1个leader,2个follower
```shell
$ zkServer status /usr/local/etc/zookeeper/zoo1.cfg
ZooKeeper JMX enabled by default
Using config: /usr/local/etc/zookeeper/zoo1.cfg
Mode: follower
zkServer status /usr/local/etc/zookeeper/zoo2.cfg
ZooKeeper JMX enabled by default
Using config: /usr/local/etc/zookeeper/zoo2.cfg
Mode: follower
$ zkServer status /usr/local/etc/zookeeper/zoo3.cfg
ZooKeeper JMX enabled by default
Using config: /usr/local/etc/zookeeper/zoo3.cfg
Mode: leader
- 进入zookeeper集群内部,登陆各个节点 ```shell $ zkCli -server localhost:2181 Connecting to localhost:2181 Welcome to ZooKeeper! JLine support is enabled
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
$ zkCli -server localhost:2182 $ zkCli -server localhost:2183
在zk1上新建一个node,到zk2和3上能够马上查看到
[zk: localhost:2181(CONNECTED) 1] create /test-zk1 “test-zk1” Created /test-zk1
[zk: localhost:2182(CONNECTED) 1] get /test-zk1 test-zk1 cZxid = 0x100000007 ctime = Sat Mar 13 22:05:00 CST 2021 mZxid = 0x100000007 mtime = Sat Mar 13 22:05:00 CST 2021 pZxid = 0x100000007 cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 8 numChildren = 0
[zk: localhost:2183(CONNECTED) 0] get /test-zk1 test-zk1 cZxid = 0x100000007 ctime = Sat Mar 13 22:05:00 CST 2021 mZxid = 0x100000007 mtime = Sat Mar 13 22:05:00 CST 2021 pZxid = 0x100000007 cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 8 numChildren = 0 ```