当前位置:首页 > 服务端 > Linux 下 ZooKeeper 安装与运维

Linux 下 ZooKeeper 安装与运维

2022年09月16日 09:07:26服务端4

Apache ZooKeeper 是一个分布式的、开源的程序协调服务,是 Hadoop 项目下的一个子项目。ZooKeeper 主要应用场景包括集群管理、配置中心、分布式锁、注册中心等。实际项目中,为了保证高可用,ZooKeeper 都是以分布式集群的方式进行安装的,至少需要三个节点。

ZooKeeper 包含主从节点以及心跳机制(选举模式),假设 master 节点挂了之后,ZooKeeper 会通过选举模式在 slave 节点选举出一个新的 master。

这里 Linux 选择 CentOS 7.2。

1.ZooKeeper安装

# wget -P /usr/local http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
# cd /usr/local
# tar -zxvf zookeeper-3.4.13.tar.gz
# vim /etc/rc.d/rc.local                             //配置开启自启动

追加如下配置即可(oracle jdk 对应的 JAVA_HOME 为 export JAVA_HOME=/usr/java/jdk):

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64
/usr/local/zookeeper-3.4.13/bin/zkServer.sh start

我们在三台不同的服务器上各部署一个 ZooKeeper 进程,以构成一个 ZooKeeper 集群。三个 ZooKeeper 进程均使用相同的 zoo.cfg 配置:

# cd /usr/local/zookeeper-3.4.13/conf
# mkdir -p /export/data/zookeeper                    //递归创建目录
# mkdir -p /export/logs/zookeeper
# cp zoo_sample.cfg zoo.cfg                          //拷贝配置文件
# vim zoo.cfg

修改配置如下:

# 配置存储快照文件的目录
dataDir=/export/data/zookeeper
# 配置存储日志文件的目录
dataLogDir=/export/logs/zookeeper
# zk服务进程监听的TCP端口
clientPort=2181
# 2888:ZooKeeper服务之间通信的端口,3888:ZooKeeper与其他应用程序通信的端口
# server.1:表示这是第几号服务器
server.1=192.168.20.11:2888:3888
server.2=192.168.20.12:2888:3888
server.3=192.168.20.13:2888:3888

然后在三台服务器 dataDir 目录下,分别创建一个 myid 文件,其内容分别为1,2,3。然后分别在这三台机器上启动 ZooKeeper 进程,这样我们便将 ZooKeeper 集群启动了起来。如下:

# cd /export/data/zookeeper
# echo 1 >>myid                                          //创建myid文件并写入1
# cd /usr/local/zookeeper-3.4.13/bin
# ./zkServer.sh start                        //后台启动ZooKeeper

还有一些其他命令如下:

# ./zkServer.sh restart                    //重启ZooKeeper
# ./zkServer.sh stop                       //关闭ZooKeeper
# ./zkServer.sh status                    //查看服务状态,其中Mode参数:leader表示master节点,follower表示slave节点
# ./zkServer.sh start-foreground    //前台启动

2.ZooKeeper运维

1.zk目录结构

目录 说明
zookeeper/bin 主要的一些运行命令
zookeeper/conf 存放配置文件
zookeeper/contrib 附加的一些功能
zookeeper/dist-maven mvn 编译后的目录
zookeeper/docs 文档
zookeeper/lib 需要依赖的 jar 包
zookeeper/recipes 案例 demo 代码
zookeeper/src 源码

2.zoo_sample.cfg配置文件

配置项 默认值 说明
tickTime 2000 用于计算的时间单元,单位毫秒,比如 session 超时: N * tickTime
initLimit 10 用于集群,允许从节点连接并同步到 master 节点的初始化连接时间,以 tickTime 的倍数来表示
syncLimit 5 用于集群,master 主节点与从节点之间发送消息,请求和应答时间长度(心跳机制)
dataDir 必须配置,配置存储快照文件的目录
dataLogDir 配置存储日志文件的目录,如果没有配置则会和 dataDir 共用同一个目录
clientPort 2181 zk 服务进程监听的TCP端口

3.基于Linux的zk客户端命令行

# cd /usr/local/zookeeper/bin
# ./zkCli.sh                         //打开zk的客户端进入命令行后台

[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]

[zk: localhost:2181(CONNECTED) 0] stat /
cZxid = 0x0                  //表示创建之后 zk 为此节点分配的 id
ctime = Thu Jan 01 08:00:00 HKT 1970           //创建时间
mZxid = 0x0                  //表示修改后 zk 分配的id
mtime = Thu Jan 01 08:00:00 HKT 1970          //修改时间
pZxid = 0xd                  //表示子节点的 id,
cversion = 5                 //表示子节点的版本号,
dataVersion = 0              //表示当前节点数据的版本号,
aclVersion = 0               //表示当前节点权限的版本号,
ephemeralOwner = 0x0         //表示与该节点绑定的session id,
dataLength = 0               //表示数据长度,
numChildren = 1              //表示子节点有几个

基于 Linux 的 zk 客户端命令:

命令 说明
help 打开帮助
ls path [watch] 例如 ls /configCenter,表示显示 /configCenter 下的节点;可选参数 [watch] 表示当前命令可以设置 watcher 事件,例如 ls /configCenter watch,表示为 /config 设置 watcher 事件
ls2 path [watch] 例如 ls2 /configCenter,比 ls 命令多输出一些状态信息,等价于 ls 命令 + stat 命令
get path [watch] 例如 get /configCenter,把当前指定节点的数据取出来,状态信息也会输出
stat path [watch] 例如 stat /configCenter,输出状态信息
create [-s] [-e] path data acl 例如 create -s /configCenter/search 0,表示创建 /configCenter/search 节点,节点数据为 0
set path data [version] version 参数如果设置的话,必须设置为指定节点最新的 version 才会去更新,起到乐观锁的效果
delete path [version] version 参数如果设置的话,必须设置为指定节点最新的 version 才会去删除,起到乐观锁的效果
getAcl path 获取某个节点的acl权限信息
setAcl path acl 设置某个节点的acl权限信息,例如 setAcl /configCenter world:anyone:crwa
addauth scheme auth 输入认证授权信息,注册时输入明文密码 (登录),但是在 zk 的系统中,密码是以加密的形式存在的

4.zk四字命令

zk 可以通过它自身提供的简写命令来和服务器进行交互。

# yum install nc                      //安装nc命令

zk 四字命令 (Four Letter Words):echo [commond] | nc [ip] [port]

# echo stat | nc localhost 2181       //查看zk的状态信息,以及是否mode(集群还是单机)
Zookeeper version: 
Clients:
Latency min/avg/max: 0/0/1
Received: 7
Sent: 6
Connections: 1
Outstanding: 0
Zxid: 0x1da
Mode: standalone
Node count: 9

# echo ruok | nc localhost 2181      //查看当前zkServer是否启动,返回imok
imok

# echo dump | nc localhost 2181      //列出未经处理的会话和临时节点
SessionTracker dump:
Session Sets (0):
ephemeral nodes dump:
Sessions with Ephemerals (0):

# echo conf | nc localhost 2181      //查看服务器配置
clientPort=2181
dataDir=
dataLogDir=
tickTime=2000
maxClientCnxns=60
minSessionTimeout=4000
maxSessionTimeout=40000
serverId=0

# echo cons | nc localhost 2181      //展示连接到服务器的客户端信息
/0:0:0:0:0:0:0:1:58070[0](queued=0,recved=1,sent=0)

# echo envi | nc localhost 2181      //查看环境变量
Environment:
host.name=
java.version= ...

# echo mntr | nc localhost 2181      //监控zk健康信息
zk_version
zk_avg_latency 1
zk_max_latency 28 ...

# echo wchs | nc localhost 2181      //展示watch的信息
1 connections watching 1 paths
Total watches:1

# echo wchc | nc localhost 2181      //session与watch信息

# echo wchp | nc localhost 2181      //path与watch信息

5.zk迁移数据

找到原先配置中的数据保存地址,可以在 /usr/local/zookeeper-3.4.13/conf/zoo.cfg 配置文件中查看,例如 dataDir=/data/zookeeper/data

# cd /data/zookeeper/data/version-2
# ls -alh

找到最新的日志文件和快照文件,例如 log.ab0002cfd1 和 snapshot.1f0006b6eb,日志文件存放 ZooKeeper 全部数据记录 ,快照文件则是内存增量文件。

拷贝数据到新的 ZooKeeper 集群节点下,重启 ZooKeeper 服务,查看节点数据是否正常:

# scp log.ab0002cfd1 snapshot.1f0006b6eb root@192.168.90.200:/data/zookeeper2

作者:一叶知秋V
来源链接:https://blog.csdn.net/smartbetter/article/details/52709446

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/server/41855.html

标签: ZooKeeper
分享给朋友:

“Linux 下 ZooKeeper 安装与运维” 的相关文章

Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例

Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例

摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢!...

Docker安装Zookeeper

Docker安装Zookeeper

目录 1. 下载镜像 2. 查看本地镜像 3. 运行容器 4. 查看运行的容器 5. 命令行客户端 参考https://hub.docker.co...

docker安装kafka和zookeeper

docker安装kafka和zookeeper

参考,欢迎点击原文:https://www.cnblogs.com/360minitao/p/14665845.html(主要) https://blog.csdn.net/qq_22041375/article/details/106180415(有参...

Docker安装zookeeper

# 设置yum源 yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://download.docker.com/linux/cen...

消息中间件kafka安装启动自带配置好的Zookeeper

消息中间件kafka安装启动自带配置好的Zookeeper

前言 这里简单做一个入门小白的消息中间件的介绍,以后会更新。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这...

五分钟搞定:Centos中Kafka和Zookeeper的快速安装教程

[提前声明] 文章由作者:张耀峰 结合自己生产中的使用经验整理,最终形成简单易懂的文章 写作不易,转载请注明,谢谢! 代码案例地址: ?https://github.com/Mydreamandreality/sparkResearch K...

SpringBoot整合Dubbo3.0+Zookeeper

SpringBoot整合Dubbo3.0+Zookeeper

Dubbo是一个分布式服务框架,用于多个系统间的RPC相互调用 Docker安装Zookeeper # 1、查看镜像 docker search zookeeper # 2、拉取镜像 docker pull zookeeper # 3、...

Zookeeper专题——1、分布式事务(a概述)

zookeeper到底是什么?   zookeeper实际上是yahoo开发的,用于分布式中一致性处理的框架。最初其作为研发hadoop时的副产品。由于分布式系统中一致性处理较为困难,其他的分布式系统没有必要 费劲重复造轮子,故随后的分布式系统中大量应用了zookeeper...

springboot+dubbo分组+zookeeper集群

springboot+dubbo分组+zookeeper集群 provider 修改注册中心服务地址为多个 <dubbo:registry protocol="zookeeper" address="192.168.73.211:...

zookeeper使用方

文章目录 场景 文章 场景 在研究duboo,看到了一篇比较好的介...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。