欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

zookeeper集群搭建

程序员文章站 2022-07-14 11:45:51
...

一、下载zookeeper

在官网下载,然后上传到服务器上。所有操作都在192.168.81.131的机器上

二、解压

文件解压到/use/soft目录下

# tar -zxvf zookeeper-3.4.7 -C /usr/soft

三、修改配置

1. 进入conf目下

# cd /usr/soft/zookeeper-3.4.7/conf

2. 找到一个 zoo-sample.cfg 的文件修改复制重名zoo.cfg

# mv zoo-smple.cfg zoo.cfg

3. 修改配置zoo.cfg

# vim zoo.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/soft/zookeeper-3.4.7/data/d_1 //<- ①
dataLogDir=/usr/soft/zookeeper-3.4.7/data/logs/logs_1 //<-②
# the port at which the clients will connect
clientPort=2181 
#不同zoo.cfg修改自己的属性和端口号
# 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=192.168.81.131:2888:2999  //<-③
server.2=192.168.81.132:2888:2999
server.3=192.168.81.133:2888:2999

主要修改三个地方:

  1. 修改Zookeeper文件保存路径,默认的是在系统tmp文件下,该文件属于临时文件夹不安全。
  2. 添加日志文件,可选
  3. 设置集群服务编号和机器ip及端口号

zoo.cfg文件详解

文件 详解
tickTime 心跳的时间间隔
syncLimit Leader 和 follower 之间的通讯时长最长不能超过 syncLimit*initLimt
initLimt 接受客户端链接 zk 初始化的最长等待心跳时长initLimt*ticktime
dataDir 数据目录
dataLogDir 日志目录
clientPort 客户端链接服务端端口号
Server.A=B:C:D A:第几号服务器 B:服务 IP C:代表 Leader 和 follower 通讯端口 D:备用选 leader 端口

4. 设置集群机器编号

建立对应zoo.cfg配置文件dataDir所对应的文件夹,并该目录在下创建myid文件,myid内容为当前机器的序号,注意 这个序号要与zoo.cfg下server配置的ip相对应

# cd /usr/soft/zookeeper-3.4.7
# mkdir data
# echo "1" > /usr/soft/zookeeper-3.4.7/data/myid

5. 集群相关

机器间建立免密登入

# ssh-****** // 生成**

# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

将配置好的zookeeper发送到其他机器上

//压缩发送
# tar -zcvf zookeeper-3.4.7.tar.gz zookeeper-3.4.7/
# scp zookeeper-3.4.7.tar.gz 192.168.81.132:/usr/soft/
//直接发送
# scp -r zookeeper-3.4.7 192.168.81.132:/usr/soft/

这里记得修改对应机器的myid

四、启动

进入bin目录

# cd bin
# ./zkServer.sh start //逐个启动

角色查看

# ./zkServer.sh statu 

角色详解:

  • Leader:
    Leader 作为整个 ZooKeeper 集群的主节点,负责响应所有对 ZooKeeper 状态变更的请求。它会将每个状态更新请求进行排序和编号,以便保证整个集群内部消息处理的 FIFO,写操作都走 leader
  • Follower :
    Follower 的逻辑就比较简单了。除了响应本服务器上的读请求外,follower 还要处理leader 的提议,并在 leader 提交该提议时在本地也进行提交。 另外需要注意的是, leader 和 follower 构成 ZooKeeper 集群的法定人数,也就是说,只有他们才参与新 leader的选举、响应 leader 的提议。
  • Observer :
    如果 ZooKeeper 集群的读取负载很高,或者客户端多到跨机房,可以设置一些 observer服务器,以提高读取的吞吐量。Observer 和 Follower 比较相似,只有一些小区别:首先observer 不属于法定人数,即不参加选举也不响应提议;其次是 observer 不需要将事务持久化到磁盘,一旦 observer 被重启,需要从 leader 重新同步整个名字空间。