zookeeper集群搭建

发布时间:2024年01月16日

软件下载

官网首页:Apache ZooKeeper

集群搭建

准备三台服务器

服务器1

192.168.206.135

服务器2

192.168.206.136

服务器3

192.168.206.137

软件安装

解压压缩包

tar -zxvf /opt/software/apache-zookeeper-3.5.7-bin.tar.gz -C /opt/

目录重命名

mv apache-zookeeper-3.5.7-bin zookeeper-3.5.7

创建数据存储目录

mkdir -p /opt/zookeeper-3.5.7/zkData

目录下创建一个 myid 的文件

vim /opt/zookeeper-3.5.7/zkData/myid

在文件中添加与 server 对应的编号,编号可以取随意值,但在集群中必须唯一(注意:上下不要有空行,左右不要有空格)

1

注意:添加 myid 文件,一定要在 Linux 里面创建,在 notepad++里面很可能乱码

并分别在其它服务器上修改 myid 文件中内容为 2、3

复制配置文件修改

配置zoo.cfg文件

复制/opt/apache-zookeeper-3.5.7/conf/ 这个目录下的 zoo_sample.cfg 为 zoo.cfg,将原先的配置文件修改为zoo_sample.cfg.bak

cd /opt/zookeeper-3.5.7/conf/

cp zoo_sample.cfg zoo.cfg
mv zoo_sample.cfg zoo_sample.cfg.bak

打开 zoo.cfg 文件

#修改数据存储路径配置

dataDir=/opt/zookeeper-3.5.7/zkData

增加如下配置

#######################cluster##########################

server.1=192.168.206.135:2888:3888

server.2=192.168.206.136:2888:3888

server.3=192.168.206.137:2888:3888

复制文件至其它服务器,修改其对应myid文件为2,3

scp -r /opt/zookeeper-3.5.7/ root@192.168.206.137:/opt/

scp -r /opt/zookeeper-3.5.7/ root@192.168.206.137:/opt/

vim /opt/zookeeper-3.5.7/zkData/myid

开放相关端口

firewall-cmd --zone=public --add-port=2888/tcp --permanent
firewall-cmd --zone=public --add-port=3888/tcp --permanent

firewall-cmd --zone=public --add-port=2181/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-ports

分别启动zookeeper

./zkServer.sh start

启动135服务器时,由于zookeeper还未启动半数,所以服务状态为LOOKING

启动136服务器,此时zookeeper服务器数据大于半数,启动成功

启动137服务器,与136一致

配置参数解读

Zookeeper中的配置文件zoo.cfg中参数含义解读如下:

tickTime

tickTime = 2000:通信心跳时间,Zookeeper服务器与客户端心跳时间,单位毫秒

initLimit

initLimit = 10:LF初始通信时限

Leader和Follower初始连接时能容忍的最多心跳数(tickTime的数量)

syncLimit

syncLimit = 5:LF同步通信时限

Leader和Follower之间通信时间如果超过syncLimit * tickTime,Leader认为Follwer死掉,从服务器列表中删除Follwer。

dataDir

dataDir:保存Zookeeper中的数据,注意:默认的tmp目录,容易被Linux系统定期删除,所以一般不用默认的tmp目录。

clientPort

clientPort = 2181:客户端连接端口,通常不做修改。

server.A=B:C:D。

A 是一个数字,表示这个是第几号服务器;

集群模式下配置一个文件 myid,这个文件在 dataDir 目录下,这个文件里面有一个数据

就是 A 的值,Zookeeper 启动时读取此文件,拿到里面的数据与 zoo.cfg 里面的配置信息比

较从而判断到底是哪个 server。

B 是这个服务器的地址;

C 是这个服务器 Follower 与集群中的 Leader 服务器交换信息的端口;

D 是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的

Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

客户端命令行操作

命令行语法

命令基本语法

功能描述

help

显示所有操作命令

ls path

使用 ls 命令来查看当前 znode 的子节点 [可监听]

-w 监听子节点变化

-s 附加次级信息

create

普通创建

-s 含有序列

-e 临时(重启或者超时消失)

get path

获得节点的值 [可监听]

-w 监听节点内容变化

-s 附加次级信息

set

设置节点的具体值

stat

查看节点状态

delete

删除节点

deleteall

递归删除节点

客户端连接

./zkCli.sh -server 192.168.206.135:2181

  1. czxid:创建节点的事务 zxid,每次修改 ZooKeeper 状态都会产生一个 ZooKeeper 事务 ID。事务 ID 是 ZooKeeper 中所有修改总的次序。每次修改都有唯一的 zxid,如果 zxid1 小于 zxid2,那么 zxid1 在 zxid2 之前发生。
  2. ctime:znode 被创建的毫秒数(从 1970 年开始)
  3. mzxid:znode 最后更新的事务 zxid
  4. mtime:znode 最后修改的毫秒数(从 1970 年开始)
  5. pZxid:znode 最后更新的子节点 zxid
  6. cversion:znode 子节点变化号,znode 子节点修改次数
  7. dataversion:znode 数据变化号
  8. aclVersion:znode 访问控制列表的变化号
  9. ephemeralOwner:如果是临时节点,这个是 znode 拥有者的 session id。如果不是 临时节点则是 0。
  10. dataLength:znode 的数据长度
  11. numChildren:znode 子节点数量
文章来源:https://blog.csdn.net/xuonline4196/article/details/135620727
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。