zookeeper集群模式安装&配置过程初探

本文内容介绍的是zookeeper 集群模式的部署过程,实际部署服务器只有一台,通过一台服务器不同端口部署多服务节点。

  • 虚拟机外IP:10.211.55.4 
  • 节点1 端口:2181;目录  zoo1;myid:1
  • 节点2 端口:2182;目录  zoo2;myid:2
  • 节点3 端口:2183;目录  zoo3;myid:3
  • 节点4 端口:2184;目录  zooI ;myid:4 

 

1、下载tar包:

创建文件夹(目录可以根据自己情况规划)
mkdir /data/zookeeper/zoo1
 
下载安装包至此文件夹内:
cd mkdir /data/zookeeper/zoo1
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.6.1/apache-zookeeper-3.6.1-bin.tar.gz
 

注意:

使用安装包apache-zookeeper-3.6.1.tar.gz部署集群模式时会发生问题,目前笔者没找到解决方案。使用apache-zookeeper-3.6.1-bin.tar.gz即可。

 

 

2、解压安装:

在新建的 /data/zookeeper/zoo1 目录下解压tar包:
tar -zxvf apache-zookeeper-3.6.1-bin.tar.gz
 
如下图:
 
 
 

3、修改配置文件

①创建日志文件夹,准备好相关目录:
cd /data/zookeeper/zoo1/apache-zookeeper-3.6.1-bin
mkdir logs
 
 
②修改配置文件
进入配置文件的 conf 目录:
zookeeper集群模式安装&配置过程初探_第1张图片
 
从zoo_sample.cfg复制出一个配置文件,名称为zoo.cnf:
修改zoo.cfg内容:
cp zoo_sample.cfg  zoo.cfg
vim zoo.cnf
#主要是添加如下两行
dataDir=/data/zookeeper/zooI/
dataLogDir=/data/zookeeper/zooI/apache-zookeeper-3.6.1-bin/logs
 
笔者的最终完整配置如下:
# 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=/data/zookeeper/zoo1/
dataLogDir=/data/zookeeper/zoo1/apache-zookeeper-3.6.1-bin/logs/
# 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=10.211.55.4:2888:3888
server.2=10.211.55.4:2889:3887
server.3=10.211.55.4:2890:3886
server.4=10.211.55.4:2891:3885
 
 
## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true
 
 

4、启动节点:

进入bin目录启动节点
cd ../bin/
sh zkServer.sh start
 
发生如下报错:
原因:
缺少myid文件。
 
 
解决办法:
进入节点目录,创建myid文件,编辑内容标识节点信息即可,内容为数值型,id范围1~255。
zookeeper集群模式安装&配置过程初探_第2张图片
 
 
再次启动:
成功正常启动了。
 
 
 
 

5、连接验证

可以通过客户端连接诶命令验证
sh zkCli.sh -server 127.0.0.1:2181
 
……
WATCHER::
 
WatchedEvent state:SyncConnected type:None path:null
 
[zk: 127.0.0.1:2181(CONNECTED) 0]
[zk: 127.0.0.1:2181(CONNECTED) 0]
 
 
 

6、其他

以上为zookeeper集群中一个节点成功配置、启动的过程。
 
需要配置多个节点时,其他节点可以直接copy当前  /data/zookeeper/zooI 目录,如下:
通过复制  /data/zookeeper/zooI,生成 zoo1、zoo2、zoo3,然后修改zoo.cfg配置文件的方式快速配置:
zookeeper集群模式安装&配置过程初探_第3张图片
 
 
配置集群是,注意每个节点的 zoo.cfg文件中一定注意一下部分配置文件:
server.1=10.211.55.4:2888:3888
server.2=10.211.55.4:2889:3887
server.3=10.211.55.4:2890:3886
server.4=10.211.55.4:2891:3885
 
server.A=B:C:D:其 中
  1. A 是一个数字,表示这个是第几号服务器;
  2. B 是这个服务器的 ip地址;
  3. C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;
  4. D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。
 
 
如果以上配置信息处理错误,则会报错如下:
2020-08-25 18:25:56,437 [myid:4] - ERROR [main:QuorumPeerMain@113] - Unexpected exception, exiting abnormally
java.lang.RuntimeException: My id NNN not in the peer list
    at org.apache.zookeeper.server.quorum.QuorumPeer.start(QuorumPeer.java:1073)
    at org.apache.zookeeper.server.quorum.QuorumPeerMain.runFromConfig(QuorumPeerMain.java:227)
    at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:136)
    at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:90)
2020-08-25 18:25:56,439 [myid:4] - INFO  [main:ZKAuditProvider@42] - ZooKeeper audit is disabled.
2020-08-25 18:25:56,440 [myid:4] - ERROR [main:ServiceUtils@42] - Exiting JVM with code 1
 
此NNN是各节点目录下myid中定义的值,表示第NNN太服务器节点不在通讯节点列表中。当然,此处配置内容编辑错误也会导致类似问题。
 
 
 
 
 
 
 
 
 
 
 

你可能感兴趣的:(zookeeper集群模式安装&配置过程初探)