zookeeper集群(1leader,2follower,1observer)搭建

在linux环境下,一台主机,搭建单机版的集群。

1、去官网下周zookeeper压缩包:https://zookeeper.apache.org/releases.html,不用安装,解压即可。比如解压到 /home/XXX/ 下,假设 zookeeper 文件夹名为  apache-zookeeper.3.6.3.

2、cd /home/XXX,切换路径,再修改 zookeeper 文件夹名字:mv apache-zookeeper.3.6.3 zookeeper-node1-2181, 改名字是为了方便区分每个节点,规范点,2181代表节点监听的端口。

3、1个leader节点,2个follower节点和1个observer节点,一共4个节点,所以需要将 zookeeper 复制出4份来:cp -r zookeeper-node1-2181 zookeeper-node2-2182

                          cp -r zookeeper-node1-2181 zookeeper-node3-2183

                          cp -r zookeeper-node1-2181 zookeeper-node4-2184

4、zookeeper-node1-2182/conf/ 下面有个 zoo_sample.cfg,这是一个简单的zookeeper配置文件,拷贝一份到当前路径,cp  zoo_sample.cfg  zoo.cfg 。

5、打开 zoo.cfg 文件,进行自己的配置,vim  zoo.cfg。   vim 的使用不在此处介绍了。具体的配置可以简单配置如下,由于在同一台机器上部署,所有每个节点使用的端口号不能相同:

# 默认2000 ms,心跳时间,单位毫秒,作为服务端,此心跳应该是服务器发送给集群其它服务器的。
tickTime=2000
# 默认 10 倍,follower 与 leader 之间初始连接时能容忍的最多心跳数,即 tickTime 的倍数。
initLimit=10
# 默认 5 倍,follower 与 leader 之间的请求与应答最多能容忍的心跳数,如果超过,就视为请求超时
syncLimit=5
# 此目录是用于存放 myid、版本、日志等等信息
dataDir=/home/XXX/zookeeper-node1-2181
# 默认为 2181,默认监听客户端连接的端口
clientPort=2181
# 默认60,允许连接的最大客户端数
#maxClientCnxns=60
# 默认3,保留在 dataDir 中的快照数
#autopurge.snapRetainCount=3
# 默认为 1 小时,自动清理事务日志和快照文件,单位小时,0表示不开启此功能
#autopurge.purgeInterval=1

#不明白这个
## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true

# 配置集群中所有节点的信息,server后面的数字代表了节点的代号(用于区分节点),
# 等号后面是节点的IP,IP后面第一个端口号是用于集群节点之间的数据同步通信,第二个端口号是用于
# leader选举投票通信
# observer 节点必须要在最后面加上 observer
server.1=14.25.32.160:2888:3888
server.2=14.25.32.160:2889:3889
server.3=14.25.32.160:2890:3890
server.4=14.25.32.160:2891:3891:observer

配置完 node1 后,类似地,配置完剩余的3个节点,特别注意 dataDir 和 clientPort 的配置,这两个参数要根据各个节点的信息进行配置。另外,在配置 observer 节点时,还要额外在配置文件中添加一个参数peerType=observer,表明该节点时 observer 节点。

6、针对每一个节点,在配置文件中的 dataDir 目录下,创建一个文件 myid,命令为:vim myid,里面就写入一个数字,即配置文件中 server.数字=IP : port : port 里面的数字,比如 node1 节点的 myid 文件里就写入一个数字1。

7、尝试启动 node1 节点,cd 到 /home/XXX 目录下,启动命令为:zookeeper-node1-2181/bin/zkServer.sh start。能启动最好,但是可能会报错,说你没有权限,此时需要修改权限,命令为: chmod 775 zookeeper-node1-2181/bin/zkServer.sh。 修改权限后,再启动即可。类似地,依次启动其它几个节点。

至此,集群搭建完毕,在此期间可能会启动不成功,第一,那查看一下配置文件中使用的端口号是否已经被系统内其它进场占用了,使用命令:lsof -i:port  来查看端口 port 是否被占用。第二,仔细检查几个节点的配置文件内容、myid文件内容,以及文件存放的路径是否正确。一般来说,只要配置的没有问题,启动就能成功。

8、查看每个节点的状态,同样利用每个节点的 zkServer.sh status 命令进行查看,可以看到这个节点时 follower ,还是 leader,因为集群初始化时,有个选举过程,来决定谁是leader,所以 leader在集群启动前是不确定的。但是 observer 节点时肯定确定的。

 

 

你可能感兴趣的:(zookeeper,zookeeper,集群,leader,follower,observer)