本文介绍在 CentOS 7.x 操作系统上安装 ZooKeeper 的方法与过程。
ZooKeeper 支持三种安装模式:单机模式(stand-alone)、集群模式和集群伪分布模式,本文演示单机模式(stand-alone)安装部署。
目录
- 版本说明
- 安装
- 配置
- 运行
- 测试
- 连接 ZooKeeper 服务
- 查看帮助
- 创建 znode
- 查看指定 znode 的值
版本说明
- CentOS Linux release 7.6
- ZooKeeper 3.6.0
- JDK 8
安装
-
因为 ZooKeeper 依赖 Java 环境运行,所以首先需要下载、安装和配置 JDK(1.6 以上版本),参考:CentOS 7.x 重装 JDK。
-
下载 ZooKeeper stable 版本,本示例使用
3.6.0
版本,下载文件是apache-zookeeper-3.6.0-bin.tar.gz
,注意要下载文件名中带bin
的Source Release
版本,否则启动会报错。 -
将下载文件拷贝到 CentOS 服务器特定目录下,如
/opt
。 -
执行解压命令
tar -zxvf apache-zookeeper-3.5.6-bin.tar.gz
。
配置
进入解压缩后文件根目录的 conf
文件夹,复制 zoo_sample.cfg
并粘贴在同一目录下,将文件名称修改为 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=/opt/zookeeper/data
dataLogDir=/opt/zookeeper/log
# the port at which the clients will connect
clientPort=2181
# 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
## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true
说明:
-
tickTime
:ZooKeeper 使用的基本时间单位(毫秒),用于调节心跳和超时,最小会话超时是两倍tickTime
。 -
dataDir
:ZooKeeper 存储内存数据库快照,除非另有说明,否则为数据库更新的事务日志。 -
dataLogDir
:指定事务日志存储路径,如不设置则使用dataDir
存储事务日志。这个配置项有助于避免日志记录和内存数据库快照之间的竞争。 -
clientPort
:监听客户端连接的端口号,默认为2181
。
运行
进入 bin
目录,执行命令 ./zkServer.sh start
启动。
[root@... bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
测试
连接 ZooKeeper 服务
进入 bin
目录,执行命令 ./zkCli.sh -server 127.0.0.1:2181
连接 ZooKeeper,测试功能是否正常。
[root@ctup000105163 bin]# ./zkCli.sh -server 127.0.0.1:2181
Connecting to 127.0.0.1:2181
2020-04-24 18:07:10,910 [myid:] - INFO [main:Environment@98] - Client environment:zookeeper.version=3.6.0--b4c89dc7f6083829e18fae6e446907ae0b1f22d7, built on 02/25/2020 14:38 GMT
2020-04-24 18:07:10,914 [myid:] - INFO [main:Environment@98] - Client environment:host.name=ctup000105163
2020-04-24 18:07:10,915 [myid:] - INFO [main:Environment@98] - Client environment:java.version=1.8.0_222
2020-04-24 18:07:10,917 [myid:] - INFO [main:Environment@98] - Client environment:java.vendor=Huawei Technologies Co., Ltd
2020-04-24 18:07:10,917 [myid:] - INFO [main:Environment@98] - Client environment:java.home=/opt/java/jre1.8.0_222
2020-04-24 18:07:10,917 [myid:] - INFO [main:Environment@98] - Client environment:java.class.path=/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../zookeeper-server/target/classes:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../build/classes:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../zookeeper-server/target/lib/*.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../build/lib/*.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/zookeeper-prometheus-metrics-3.6.0.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/zookeeper-jute-3.6.0.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/zookeeper-3.6.0.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/snappy-java-1.1.7.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/slf4j-log4j12-1.7.25.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/slf4j-api-1.7.25.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/simpleclient_servlet-0.6.0.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/simpleclient_hotspot-0.6.0.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/simpleclient_common-0.6.0.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/simpleclient-0.6.0.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/netty-transport-native-unix-common-4.1.45.Final.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/netty-transport-native-epoll-4.1.45.Final.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/netty-transport-4.1.45.Final.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/netty-resolver-4.1.45.Final.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/netty-handler-4.1.45.Final.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/netty-common-4.1.45.Final.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/netty-codec-4.1.45.Final.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/netty-buffer-4.1.45.Final.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/metrics-core-3.2.5.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/log4j-1.2.17.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/json-simple-1.1.1.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/jline-2.11.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/jetty-util-9.4.24.v20191120.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/jetty-servlet-9.4.24.v20191120.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/jetty-server-9.4.24.v20191120.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/jetty-security-9.4.24.v20191120.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/jetty-io-9.4.24.v20191120.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/jetty-http-9.4.24.v20191120.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/javax.servlet-api-3.1.0.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/jackson-databind-2.9.10.3.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/jackson-core-2.9.10.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/jackson-annotations-2.9.10.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/commons-lang-2.6.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/commons-cli-1.2.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../lib/audience-annotations-0.5.0.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../zookeeper-*.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../zookeeper-server/src/main/resources/lib/*.jar:/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin/../conf:.:/opt/java/jre1.8.0_222//lib/dt.jar
2020-04-24 18:07:10,918 [myid:] - INFO [main:Environment@98] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2020-04-24 18:07:10,918 [myid:] - INFO [main:Environment@98] - Client environment:java.io.tmpdir=/tmp
2020-04-24 18:07:10,918 [myid:] - INFO [main:Environment@98] - Client environment:java.compiler=<NA>
2020-04-24 18:07:10,918 [myid:] - INFO [main:Environment@98] - Client environment:os.name=Linux
2020-04-24 18:07:10,918 [myid:] - INFO [main:Environment@98] - Client environment:os.arch=amd64
2020-04-24 18:07:10,918 [myid:] - INFO [main:Environment@98] - Client environment:os.version=3.10.0-957.el7.x86_64
2020-04-24 18:07:10,918 [myid:] - INFO [main:Environment@98] - Client environment:user.name=root
2020-04-24 18:07:10,918 [myid:] - INFO [main:Environment@98] - Client environment:user.home=/root
2020-04-24 18:07:10,918 [myid:] - INFO [main:Environment@98] - Client environment:user.dir=/opt/zookeeper/apache-zookeeper-3.6.0-bin/bin
2020-04-24 18:07:10,919 [myid:] - INFO [main:Environment@98] - Client environment:os.memory.free=230MB
2020-04-24 18:07:10,920 [myid:] - INFO [main:Environment@98] - Client environment:os.memory.max=238MB
2020-04-24 18:07:10,920 [myid:] - INFO [main:Environment@98] - Client environment:os.memory.total=238MB
2020-04-24 18:07:10,926 [myid:] - INFO [main:ZooKeeper@1005] - Initiating client connection, connectString=127.0.0.1:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@5e265ba4
2020-04-24 18:07:10,932 [myid:] - INFO [main:X509Util@77] - Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS renegotiation
2020-04-24 18:07:10,939 [myid:] - INFO [main:ClientCnxnSocket@239] - jute.maxbuffer value is 1048575 Bytes
2020-04-24 18:07:10,949 [myid:] - INFO [main:ClientCnxn@1703] - zookeeper.request.timeout value is 0. feature enabled=false
Welcome to ZooKeeper!
2020-04-24 18:07:10,965 [myid:127.0.0.1:2181] - INFO [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@1154] - Opening socket connection to server localhost/127.0.0.1:2181.
2020-04-24 18:07:10,966 [myid:127.0.0.1:2181] - INFO [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@1156] - SASL config status: Will not attempt to authenticate using SASL (unknown error)
JLine support is enabled
2020-04-24 18:07:11,040 [myid:127.0.0.1:2181] - INFO [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@986] - Socket connection established, initiating session, client: /127.0.0.1:60246, server: localhost/127.0.0.1:2181
2020-04-24 18:07:11,065 [myid:127.0.0.1:2181] - INFO [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@1420] - Session establishment complete on server localhost/127.0.0.1:2181, session id = 0x10351dab7040000, negotiated timeout = 30000
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
[zk: 127.0.0.1:2181(CONNECTED) 0]
查看帮助
[zk: 127.0.0.1:2181(CONNECTED) 0] help
ZooKeeper -server host:port cmd args
addWatch [-m mode] path # optional mode is one of [PERSISTENT, PERSISTENT_RECURSIVE] - default is PERSISTENT_RECURSIVE
addauth scheme auth
close
config [-c] [-w] [-s]
connect host:port
create [-s] [-e] [-c] [-t ttl] path [data] [acl]
delete [-v version] path
deleteall path [-b batch size]
delquota [-n|-b] path
get [-s] [-w] path
getAcl [-s] path
getAllChildrenNumber path
getEphemerals path
history
listquota path
ls [-s] [-w] [-R] path
printwatches on|off
quit
reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]*]] | [-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*]
redo cmdno
removewatches path [-c|-d|-a] [-l]
set [-s] [-v version] path data
setAcl [-s] [-v version] [-R] path acl
setquota -n|-b val path
stat [-w] path
sync path
version
创建 znode
[zk: 127.0.0.1:2181(CONNECTED) 1] create /zk_test test_data
Created /zk_test
查看指定 znode 的值
[zk: 127.0.0.1:2181(CONNECTED) 3] get /zk_test
test_data
网友评论