当前位置: 首页 > news >正文

Zookeeper 3.8.4 安装部署帮助手册

Zookeeper 3.8.4 安装部署帮助手册

Zookeeper3.4.6+升级至3.5.5以上的升级方案

文章目录

  • Zookeeper 3.8.4 安装部署帮助手册
    • 安装包
    • 系统准备
    • 安装步骤
      • 创建用户
      • 创建目录
      • 解压软件包
      • 配置zookeeper环境变量
      • 配置文件
        • 配置zoo.cfg
        • 配置myid文件
        • 配置日志
    • 启停ZooKeeper
      • 启动
      • 检查
        • 状态检查
        • 命令行执行检查
      • 停止

若没有特殊标注,命令使用 root执行。

安装包

安装本软件,涉及的软件包为:

  • jdk1.8.0_161.tgz
  • apache-zookeeper-3.8.4-bin.tar.gz

系统准备

### 端口检查

确认如下端口不被占用

  • 2181 :对客户端提供服务

  • 2888 :内部通讯端口

  • 3888 :选举leader端口

执行命令:

 netstat -apn | grep 2181;netstat -apn | grep 2888;netstat -apn | grep 3888; 

安装步骤

创建用户

命令如下:

groupadd zookeeper -g 800 && useradd -g zookeeper -u 800 zookeeper;

创建目录

命令如下:

mkdir  -p  /data/zookeeper/{zkdata,logs,software};
chown -R zookeeper:zookeeper  /data/zookeeper;
ln -snf  /data/zookeeper/zkdata  /home/zookeeper/zkdata;
ln -snf  /data/zookeeper/logs  /home/zookeeper/logs;
ln -snf  /data/zookeeper/software  /home/zookeeper/software;
chown -R zookeeper:zookeeper  /home/zookeeper;

解压软件包

解压JDKzookeeper安装包至/home/zookeeper/software下,并创建相应的软链接。命令如下:

tar -zxf   /data/install_package/jdk1.8.0_161.tgz -C /home/zookeeper/software/;
tar -zxf   /data/install_package/apache-zookeeper-3.8.4-bin.tar.gz   -C /home/zookeeper/software/;
cd /home/zookeeper/software;
ln -snf jdk1.8.0_161 java;
ln -snf apache-zookeeper-3.8.4-bin zookeeper;
chown -R  zookeeper:zookeeper /home/zookeeper/software/;

此时/home/zookeeper/software目录有关zookeeper的如下:

lrwxrwxrwx  1 zookeeper zookeeper   12 Jul 19 19:07 java -> jdk1.8.0_161
drwxr-xr-x  8 zookeeper zookeeper 4096 Dec 20  2017 jdk1.8.0_161
lrwxrwxrwx  1 zookeeper zookeeper   15 Jul 19 19:07 zookeeper -> zookeeper-3.4.9
drwxr-xr-x 10 zookeeper zookeeper 4096 Aug 23  2016 zookeeper-3.4.9

配置zookeeper环境变量

配置zookeeper用户的javazookeeper的环境变量。

切换到zookeeper用户,本文档zookeeper安装的后续操作均使用zookeeper用户。

su - zookeeper

编辑/home/zookeeper/.bashrc,设置javazookeeper的环境变量

文件追加内容末尾添加

#Java config
export JAVA_HOME=/home/zookeeper/software/java
#ZooKeeper config
export ZOOKEEPER_HOME=/home/zookeeper/software/zookeeper
export PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/tools:$PATH

立即生效,执行命令:

source /home/zookeeper/.bashrc

配置文件

配置zoo.cfg

生成/home/zookeeper/software/zookeeper/conf/zoo.cfg文件,命令如下:

cp /home/zookeeper/software/zookeeper/conf/zoo_sample.cfg /home/zookeeper/software/zookeeper/conf/zoo.cfg

编辑zoo.cfg文件内容,命令如下:

vim /home/zookeeper/software/zookeeper/conf/zoo.cfg

zoo.cfg需要修改的内容说明

# tick时间单位长度,单位毫秒
tickTime=2000
# follower初始连接leader超时,其值代表tickTime的倍数
initLimit=10
# follower同步超时,其值代表tickTime的倍数
syncLimit=5
# 客户端连接端口
clientPort=2181
# ZooKeeper存储内存数据库快照的位置
dataDir=/home/zookeeper/zkdata/
# ZooKeeper存储数据库更新事务日志的位置
dataLogDir=/home/zookeeper/logs/
# 启用后,ZooKeeper 自动清除功能会在 dataDir 和 dataLogDir 中分别保留 autopurge.snapRetainCount 值相同个数的最新快照和相应的事务日志,并删除其余部分。默认为 3。最小值为 3。
autopurge.snapRetainCount=5
# 触发清除任务的时间间隔(小时)。设置为正整数(1 及以上)可启用自动清除。默认为 0。
autopurge.purgeInterval=1
# 关闭 AdminServer(Jetty服务)
admin.enableServer=false
# 四字快捷命令白名单
4lw.commands.whitelist=*# 配置ZK集群服务器地址与开放端口信息
server.1=hadoop1-outer1.test.com:2888:3888
server.2=hadoop1-outer2.test.com:2888:3888
server.3=hadoop1-outer3.test.com:2888:3888

配置zookeeper集群服务器地址说明:

server.1=hadoop1-outer1.test.com:2888:3888
server.2=hadoop1-outer2.test.com:2888:3888
server.3=hadoop1-outer3.test.com:2888:3888

每个zk服务器都在配置文件中用一个server.行表示,后跟服务器的唯一标识符(这里用从1开始递增的数字),然后是服务器的主机名(例如hadoop1.test.com):内部通讯端口:选举leader端口

配置myid文件

根据zoo.cfg中zookeeper集群服务器配置,每个节点都创建各自的myid文件,每个节点文件内容不相同。

文件内容是:在zoo.cfg文件中,当前主机名对应的server.开头的行,server.后的唯一标识符。

例如:当前是hadoop1-outer1节点,则服务器的唯一标识符为1,执行如下命令:

echo 1 >/home/zookeeper/zkdata/myid

查看下创建成功,执行cat命令:

cat  /home/zookeeper/zkdata/myid

显示如下

[root@hadoop1 software]# cat /home/zookeeper/zkdata/myid
1

#### 配置zookeeper服务的内存

(需要调整么,怎么验证呢?垃圾回收器是否要用G1GC?)

新增java.env文件,增加关于JAVA的启动参数配置JVMFLAGS,编辑命令如下:

vim /home/zookeeper/software/zookeeper/conf/java.env

文件内容如下:

export JVMFLAGS="-server -Xmx2g -Xms2g -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled-XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=../dumps $JVMFLAGS"

其中可以可以根据情况,调整如下2项的内容:

  • -Xmx : JVM最大允许分配的堆内存
  • -Xms :JVM初始化分配的堆内存
配置日志

配置运行日志与审计日志

vim /home/zookeeper/software/zookeeper/conf/logback.xml

节点运行日志输出到日志文件,解开ROLLINGFILE的appender节点注释,并调整其内容

  <appender name="ROLLINGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><File>${zookeeper.log.dir}/${zookeeper.log.file}</File><encoder><pattern>%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n</pattern></encoder><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>${zookeeper.log.threshold}</level></filter><rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"><maxIndex>${zookeeper.log.maxbackupindex}</maxIndex><FileNamePattern>${zookeeper.log.dir}/${zookeeper.log.file}.%i</FileNamePattern></rollingPolicy><triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><MaxFileSize>${zookeeper.log.maxfilesize}</MaxFileSize></triggeringPolicy></appender><root level="INFO"><appender-ref ref="CONSOLE" /><appender-ref ref="ROLLINGFILE" /></root>

rollingPolicy节点代表设置日志滚动策略。其下支持参数:

  • maxIndex:代表最多保留的日志文件个数的上限
  • minIndex:代表最多保留的日志文件个数的下限(基本不用配置)
  • fileNamePattern:代表指定文件滚动文件的命名模式,.%i用于处理当单个文件达到maxFileSize时的情况,.%i会递增数字以创建新的文件。

triggeringPolicy节点代表设置日志文件触发滚动条件。其下支持参数:

  • MaxFileSize:设置为当单个日志文件大小达到某个值时触发滚动。

启停ZooKeeper

本节内容均使用zookeeper用户

su - zookeeper

启动

所有zookeeper节点分别执行以下命令:

cd /home/zookeeper;zkServer.sh start

结果显示如下

[zookeeper@hadoop1 ~]$ zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/zookeeper/software/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

检查

状态检查

ZooKeeper机器分别执行以下命令

zkServer.sh status

显示结果,仅有1台机器Mode显示为leader ,其他都为follower

[zookeeper@hadoop1 ~]$ zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/zookeeper/software/zookeeper/bin/../conf/zoo.cfg
Mode: follower
命令行执行检查

任意选择一台节点,进入ZooKeeper的命令行,连接地址为ZooKeeper所有机器和配置文件zoo.cfg的clientPort,格式为 host1:port,host2:port,host3:port

zkCli.sh -server hadoop1-outer1.test.com:2181,hadoop2-outer1.test.com:2181,hadoop3-outer1.test.com:2181

结果显示,正常状态下进入CONNECTED

[zookeeper@hadoop1-outer1 ~]$ zkCli.sh -server hadoop1-outer1.test.com:2181,hadoop2-outer1.test.com:2181,hadoop3-outer1.test.com:2181
Connecting to hadoop1-outer1.test.com:2181,hadoop1-outer1.test.com:2181,hadoop1-outer1.test.com:2181
...
...
...
2025-06-11 17:34:50,078 [myid:] - INFO  [main:o.a.z.ZooKeeper@637] - Initiating client connection, connectString=hadoop1-outer1.test.com:2181,hadoop1-outer1.test.com:2181,hadoop1-outer1.test.com:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@6a41eaa2
2025-06-11 17:34:50,086 [myid:] - INFO  [main:o.a.z.c.X509Util@78] - Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS renegotiation
2025-06-11 17:34:50,095 [myid:] - INFO  [main:o.a.z.ClientCnxnSocket@239] - jute.maxbuffer value is 1048575 Bytes
2025-06-11 17:34:50,108 [myid:] - INFO  [main:o.a.z.ClientCnxn@1747] - zookeeper.request.timeout value is 0. feature enabled=false
Welcome to ZooKeeper!
2025-06-11 17:34:50,122 [myid:hadoop1-outer1.test.com:2181] - INFO  [main-SendThread(hadoop1-outer1.test.com:2181):o.a.z.ClientCnxn$SendThread@1177] - Opening socket connection to server hadoop1-outer1.test.com/10.237.195.42:2181.
2025-06-11 17:34:50,122 [myid:hadoop1-outer1.test.com:2181] - INFO  [main-SendThread(hadoop1-outer1.test.com:2181):o.a.z.ClientCnxn$SendThread@1179] - SASL config status: Will not attempt to authenticate using SASL (unknown error)
JLine support is enabled
2025-06-11 17:34:50,133 [myid:hadoop1-outer1.test.com:2181] - INFO  [main-SendThread(hadoop1-outer1.test.com:2181):o.a.z.ClientCnxn$SendThread@1013] - Socket connection established, initiating session, client: /10.237.195.42:40616, server: hadoop1-outer1.test.com/10.237.195.42:2181
2025-06-11 17:34:50,155 [myid:hadoop1-outer1.test.com:2181] - INFO  [main-SendThread(hadoop1-outer1.test.com:2181):o.a.z.ClientCnxn$SendThread@1453] - Session establishment complete on server hadoop1-outer1.test.com/10.237.195.42:2181, session id = 0x10df9f7f0320005, negotiated timeout = 30000WATCHER::WatchedEvent state:SyncConnected type:None path:null
[zk: hadoop1-outer1.test.com:2181,hadoop1-outer1.test.com:2181,hadoop1-outer1.test.com:2181(CONNECTED) 0] 

zkCli模式下创建znode操作命令:

create /test '1'

正常的显示信息

Created /test

zkCli模式下查看znode信息操作命令:

get -s /test

正常的显示信息

1
cZxid = 0x100000032
ctime = Wed Jun 11 17:37:06 CST 2025
mZxid = 0x100000032
mtime = Wed Jun 11 17:37:06 CST 2025
pZxid = 0x100000032
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 1
numChildren = 0

zkCli模式下删除znode操作命令:

delete /test

退出zkCli模式的命令:

quit

停止

所有ZooKeeper节点分别执行

zkServer.sh stop
http://www.xdnf.cn/news/1031419.html

相关文章:

  • 数据库管理员密码重置指南:MySQL, Oracle, PostgreSQL
  • 【Flutter】性能优化总结
  • Flutter 与原生技术(Objective-C/Swift,java)的关系
  • Java-46 深入浅出 Tomcat 核心架构 Catalina 容器全解析 启动流程 线程机制
  • 负载均衡器:Ribbon和LoadBalance
  • NY248NY254美光科技闪存NY258NY261
  • [架构之美]解决Windows 10主机与Windows 10虚拟机之间无法拖拽复制问题
  • 使用 Flutter 在 Windows 平台开发 Android 应用
  • MATLAB提供的两种画误差矩阵的函数
  • 矩阵混剪系统源码搭建全流程技术解析,矩阵OEM
  • 篇章七 论坛系统——业务开发——前端
  • 山东大学软件学院项目实训:基于大模型的模拟面试系统项目总结(十)
  • PyTorch + MLFlow 实战:从零构建可追踪的深度学习模型训练系统
  • Javaweb学习——day3(Servlet 中处理表单数据)
  • GO语言---匿名函数
  • 2025-06-14【视觉】视频转化为图集
  • linux-部署go开发环境
  • 【Flutter】程序报错导致的灰屏总结
  • 华为云Flexus+DeepSeek征文 | 模型即服务(MaaS)安全攻防:企业级数据隔离方案
  • Elasticsearch高效文章搜索实践
  • git-build-package 工具代码详细解读
  • Spark DAG、Stage 划分与 Task 调度底层原理深度剖析
  • MySQL EXPLAIN 详解
  • 【LUT技术专题】4DLUT代码讲解
  • 【系统分析师】2009年真题:综合知识-答案及详解
  • 【卫星通信】卫星与5G深度融合的架构研究——释放非地面网络潜能,构建全球无缝连接【3GPP TR 23.700-19 V0.1.0 (2025-04)】
  • 本地 MySQL 环境连接问题排查与解决笔记
  • 文件同步·使用同步软件来管理文件(外接大脑)
  • 项目拓展-简易SQL监控,P6SPY拦截所有jdbc连接并打印执行SQL
  • 三维重建 —— 4. 三维重建基础与极几何