如何部署Apache ZooKeeper 3.6.x集群?

Apache-Hadoop

1 基础知识

1.1 ZooKeeper的简介

– ZooKeeper是用于分布式应用程序的分布式开放源代码协调服务
– ZooKeeper公开一组简单的原语(具有特定功能的常驻内存中执行且不允许中断的程序段)
– ZooKeeper分布式程序基于原语实现同步、配置维护以及组和命名更高级别的服务。
– ZooKeeper的设计易于编程并使用文件系统熟悉的目录树结构样式设置数据模型
– ZooKeeper基于Java开发,可与Java和C绑定

1.2 ZooKeeper的实现机理

– ZooKeeper通过共享分布式进程之间的分层名称空间实现相互协调
– ZooKeeper的名称空间的组织方式类似于标准文件系统,名称空间由数据寄存器(znodes)组成
– ZonKeeper的znodes类似于标准文件系统文件和目录,不同点在于znodes存于内存中(具有高吞吐和低延迟特性)

1.3 ZooKeeper的特点

– ZooKeeper具有高性能的特性(能适应大型分布式系统)
– ZooKeeper具有高可用的特性(避免单点故障)
– ZooKeeper具有严格有序的访问特性(客户端实现复杂的同步原语)

1.4 ZooKeeper的复制


如上图所示,
– ZooKeeper将所有成员服务器节点视为一个集合,节点之间形成复制关系
– ZooKeeper维护节点的内存镜像、持久存储的事务日志和快照(大部分节点可用,则服务可用)
– ZooKeeper客户端与服务器之间使用TCP连接(包括发送请求、获取响应、监视事件和心跳)
– ZooKeeper客户端与单个节点服务器的TCP连接不可用,则客户端将于其他节点服务器建立连接

1.5 ZooKeeper的分层名称空间


– ZooKeeper名称空间与标准文件系统名称空间类似
– ZooKeeper名称空间由具有归属关系的节点(也称“Znode”)组成树状结构,父节点与子节点可使用“/”分隔
– ZooKeeper根节点通常使用“/”表示
– ZooKeeper节点都有唯一的路径(例如“/app1/p_1”)
– ZooKeeper节点都有与之关联的关联数据和子节点(与文件系统有差异)
– ZooKeeper节点用于存储协调的数据(包括状态、配置、位置)
– ZooKeeper节点的数据数据通常很小(字节到千字节之间)
– ZooKeeper节点可临时使用称为临时节点,当会话结束时,临时节点会被删除
– Znodes维护具有状态数据结构(包括数据更改、ACL更改和时间戳的版本号)
– Znodes数据每次更新时同时也会更新版本号(版本信息用于缓存验证和协调更新)
– Znodes的客户端检索数据的同时也会检索数据的版本号
– Znodes上可设置一次性的观察事件监视数据变化,当特定的数据变化事件发生时客户端会收到一个通知数据包

1.6 ZooKeeper的保障机制

ZooKeeper作为构建负责服务的基础服务(例如同步),它提供以下的保障机制,
– 顺序一致性(保证来自客户端的更新按照发送顺序进行应用)
– 事务特性(更新要么成功要么失败,不存在部分更新的结果)
– 统一的系统镜像(无论客户端连接那个数据节点,都会取得相同的服务视图)
– 可靠性(应用更新后,更新会持续到客户端更新完毕为止)
– 及时性(确保系统的客户端视图在特定时间范围内是最新的)

1.7 ZooKeeper的简单API

ZooKeeper的编程接口非常简单,支持以下操作,
– create,创建节点(位于树中的某个位置的节点)
– delete,删除节点
– exists,测试节点是否存在
– get data,读取节点数据
– set data,设置节点数据
– get children,检索节点的子节点列表
– sync,同步所有节点的数据

1.8 ZooKeeper的服务原理


如上图所示,
– ZooKeeper集群自有原子消息传递协议(原子层),该协议可保证各节点的本地副本不会出现分歧
– ZooKeeper集群通过消息传递层选举出主(leader)节点,其余作为从(followers)节点
– ZooKeeper集群主节点故障时,消息传递层会重新选举出新的主节点并保持新的主从同步
– ZooKeeper集群的数据库分内存和磁盘两部分,存储数据时先写入硬盘后存于内存
– ZooKeeper集群的所有节点均可为客户端提供服务,客户端只需与任一节点交互即可提交读写请求
– ZooKeeper集群的读请求只需直接从连接节点的本地数据副本返回(因为每个节点数据都保持一致)
– ZooKeeper集群的写请求需要由协议协商处理
– ZooKeeper集群收到写请求会先转发给主服务器,主服务器同意后分发到从服务器

2 部署要求

2.1 组件与系统的兼容性

Operating System Client Server Native Client Contrib
GNU/Linux Development and Production Development and Production Development and Production Development and Production
Solaris Development and Production Development and Production Not Supported Not Supported
FreeBSD Development and Production Development and Production Not Supported Not Supported
Windows Development and Production Development and Production Not Supported Not Supported
Mac OS X Development Only Development Only Not Supported Not Supported

相关的组件解析如下,
– Client,用于连接到ZooKeeper集合的Java客户端库
– Server,ZooKeeper集群节点上运行的Java服务器
– Native Client,用于连接到ZooKeeper集合的C语言客户端
– Contrib,代表多个可选的附加组件

2.2 组件与Java的兼容性

– ZooKeeper需要Java 1.7或更高版本
– ZooKeeper运行于FreeBSD需要openJDK7

2.3 运行要求

– ZooKeeper集群的最小集群是3台服务器(建议使用奇数的节点数量,例如“5”,“7”,“9”等)
– ZooKeeper集群节点数量偶数时,当故障节点等于正常节点数量,集群脑裂(无法投票界定故障节点)且不可用
– ZooKeeper集群节点建议接冗余网络,只接单个交换机集群容易因交换机单点故障而瘫痪
– ZooKeeper建议单台服务器只运行ZooKeeper,不建议混合其他角色
– ZooKeeper集群的Yahoo节点配置实例是双核处理器、2GB内存、80GB的IDE硬盘
– ZooKeeper集群应设置Java堆大小避免使用虚拟内存而导致性能严重下降(4GB机器保守设置最大堆大小为3GB)

3 最佳实践

3.1 环境信息

hostname = hd[19-21].cmdschool.org
ipaddress = 10.168.0.191-121
OS = centOS 7.x x86_64
详细的角色分布如下,
Apache Hadoop ZooKeeper(zoo) = hd[19-21].cmdschool.org
注:
– ZooKeeper的“leader”与“followers”角色由集群投票自行选举
– 本章ZooKeeper实例的版本为“zookeeper-3.4.14”

3.2 系统环境配置

3.2.1 更新系统

In hd[19-21],

yum install -y update

3.2.2 安装常用工具

In hd[19-21],

yum install -y vim wget tree

3.3 软件环境配置

In hd[19-21],

3.3.1 安装JDK

请参阅以下方法安装jdk-8u121-linux-x64,
https://www.cmdschool.org/archives/397
安装完成后,请使用如下命令检查JDK的安装,

java -version

命令显示如下,

java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

3.3.2 配置名称解析

In hd[19-21],

echo "10.168.0.119 hd19 hd19.cmdschool.org" >> /etc/hosts
echo "10.168.0.120 hd20 hd20.cmdschool.org" >> /etc/hosts
echo "10.168.0.121 hd21 hd21.cmdschool.org" >> /etc/hosts

注:以上仅用于测试,生产环境请使用DNS代替

3.3.3 配置公钥认证

In hd19,

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@hd19
ssh-copy-id -i ~/.ssh/id_rsa.pub root@hd20
ssh-copy-id -i ~/.ssh/id_rsa.pub root@hd21

配置完毕后,请使用如下命令测试,

ssh root@hd19
ssh root@hd20
ssh root@hd21

3.4 部署Apache ZooKeeper软件包

In hd[19-21],

3.4.1 配置运行用户

groupadd zookeeper
useradd -g zookeeper -d /var/lib/zookeeper/ -s /bin/false zookeeper

3.4.2 下载二进制安装包

cd ~
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz

其他版本请从以下链接下载,
https://www.apache.org/dyn/closer.cgi/zookeeper/

3.4.3 解压安装包

cd ~
tar -xf apache-zookeeper-3.6.3-bin.tar.gz

3.4.4 部署软件包

cd ~
mv apache-zookeeper-3.6.3-bin /usr/
chown zookeeper:zookeeper -R /usr/apache-zookeeper-3.6.3-bin
chmod 775 -R /usr/apache-zookeeper-3.6.3-bin

3.4.5 创建目录的软连接

mkdir -p /etc/zookeeper
ln -s /usr/apache-zookeeper-3.6.3-bin/conf /etc/zookeeper/conf
ln -s /usr/apache-zookeeper-3.6.3-bin /usr/zookeeper

注:以上目的是管理方便

3.5 配置Apache ZooKeeper软件包

In hd[19-21],

3.5.1 配置环境公共的变量

vim /etc/profile.d/zookeeper.sh

加入如下配置,

export ZOOKEEPER_HOME=/usr/apache-zookeeper-3.6.3-bin
export PATH=${ZOOKEEPER_HOME}/bin:$PATH
export ZOOCFGDIR=/etc/zookeeper/conf
export ZOO_LOG_DIR=/var/log/zookeeper
export ZOOPIDFILE=/var/run/zookeeper/zookeeper_server.pid

创建完毕后,请使用如下命令导入环境变量,

source /etc/profile.d/zookeeper.sh

另外,我们建议根据配置文件创建目录,

mkdir -p /var/log/zookeeper/
chown zookeeper:zookeeper /var/log/zookeeper/
chmod 775 /var/log/zookeeper/

mkdir -p /var/run/zookeeper/
chown zookeeper:zookeeper /var/run/zookeeper/
chmod 775 /var/run/zookeeper/

3.5.2 配置运行所需的环境变量

In hd[19-21],

vim /etc/zookeeper/conf/java.env

加入如下内容,

. /etc/profile.d/jdk.sh
. /etc/profile.d/zookeeper.sh

注:以上两行用于导入JDK与zookeeper所需的环境变量

3.5.3 创建配置文件

In hd[19-21],

cp /etc/zookeeper/conf/zoo_sample.cfg /etc/zookeeper/conf/zoo.cfg
vim /etc/zookeeper/conf/zoo.cfg

修改配置如下,

dataDir=/var/lib/zookeeper
clientPort=2181
maxClientCnxns=60
admin.enableServer=false
tickTime=2000
initLimit=10
syncLimit=5
server.19=hd19.cmdschool.org:2888:3888
server.20=hd20.cmdschool.org:2888:3888
server.21=hd21.cmdschool.org:2888:3888

根据以上配置,需要为主机创建“myid”,详细使用如下命令,
In hd19,

echo 19 > /var/lib/zookeeper/myid

In hd20,

echo 20 > /var/lib/zookeeper/myid

In hd21,

echo 21 > /var/lib/zookeeper/myid

3.5.4 测试配置

In hd[19-21],

sudo -u zookeeper /usr/apache-zookeeper-3.6.3-bin/bin/zkServer.sh --config /etc/zookeeper/conf status

如果输出如下则配置可用,

ZooKeeper JMX enabled by default
Using config: /etc/zookeeper/conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Error contacting service. It is probably not running.

3.5.5 手动测试程序启动

In hd[19-21],

sudo -u zookeeper /usr/apache-zookeeper-3.6.3-bin/bin/zkServer.sh --config /etc/zookeeper/conf start

启动过程中的日志可使用如下命令查看,

cat /var/log/zookeeper/zookeeper-zookeeper-server-*.out

可使用以下命令查看启动的倾听端口,

netstat -antp | grep `pgrep -u zookeeper java` | grep :::

可见如下显示,

tcp6       0      0 10.168.0.119:3888       :::*                    LISTEN      7991/java
tcp6       0      0 :::8080                 :::*                    LISTEN      7991/java
tcp6       0      0 :::44725                :::*                    LISTEN      7991/java
tcp6       0      0 :::2181                 :::*                    LISTEN      7991/java

可使用如下命令手动停止服务,

sudo -u zookeeper /usr/apache-zookeeper-3.6.3-bin/bin/zkServer.sh --config /etc/zookeeper/conf stop

3.5.6 配置服务控制脚本

In hd[19-21],

vim /usr/lib/systemd/system/zoo.service

可加入如下配置,

[Unit]
Description=Apache ZooKeeper manager
Wants=network.target
Before=network.target
After=network-pre.target
Documentation=https://zookeeper.apache.org/doc/current/index.html

[Service]
Type=forking
ExecStartPre=/bin/sh -c 'mkdir -p /var/run/zookeeper;chown zookeeper:zookeeper /var/run/zookeeper;chmod 775 /var/run/zookeeper'
ExecStartPre=/bin/sh -c 'mkdir -p /var/log/zookeeper;chown zookeeper:zookeeper /var/log/zookeeper;chmod 775 /var/log/zookeeper'
ExecStart=/usr/bin/sudo -u zookeeper /usr/apache-zookeeper-3.6.3-bin/bin/zkServer.sh --config /etc/zookeeper/conf start
ExecStop=/usr/bin/sudo -u zookeeper /usr/apache-zookeeper-3.6.3-bin/bin/zkServer.sh --config /etc/zookeeper/conf stop
PIDFile=/var/run/zookeeper/zookeeper_server.pid
Restart=on-success

[Install]
WantedBy=multi-user.target

修改完脚本后,你需要使用如下命令重载服务,

systemctl daemon-reload

你可使用如下命令控制服务和查询状态,

systemctl start zoo.service
systemctl status zoo.service
systemctl stop zoo.service
systemctl restart zoo.service

测试完毕,建议你使用如下命令设置服务自动启动,

systemctl enable zoo.service

3.5.7 配置防火墙

In hd[19-21],

firewall-cmd --permanent --add-port 2181/tcp --add-port 2888/tcp --add-port 3888/tcp
firewall-cmd --reload
firewall-cmd --list-all

3.5.8 使用客户端测试登录

In hd[19-21],

zkCli.sh -server hd19:2181

可见如下显示,

Connecting to hd19:2181
2022-01-26 09:40:40,597 [myid:] - INFO  [main:Environment@98] - Client environment:zookeeper.version=3.6.3--6401e4ad2087061bc6b9f80dec2d69f2e3c8660a, built on 04/08/2021 16:35 GMT
2022-01-26 09:40:40,600 [myid:] - INFO  [main:Environment@98] - Client environment:host.name=hd20
2022-01-26 09:40:40,600 [myid:] - INFO  [main:Environment@98] - Client environment:java.version=1.8.0_121
2022-01-26 09:40:40,602 [myid:] - INFO  [main:Environment@98] - Client environment:java.vendor=Oracle Corporation
2022-01-26 09:40:40,602 [myid:] - INFO  [main:Environment@98] - Client environment:java.home=/usr/java/jdk1.8.0_121/jre
2022-01-26 09:40:40,602 [myid:] - INFO  [main:Environment@98] - Client environment:java.class.path=/usr/apache-zookeeper-3.6.3-bin/bin/../zookeeper-server/target/classes:/usr/apache-zookeeper-3.6.3-bin/bin/../build/classes:/usr/apache-zookeeper-3.6.3-bin/bin/../zookeeper-server/target/lib/*.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../build/lib/*.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/zookeeper-prometheus-metrics-3.6.3.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/zookeeper-jute-3.6.3.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/zookeeper-3.6.3.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/snappy-java-1.1.7.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/slf4j-log4j12-1.7.25.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/slf4j-api-1.7.25.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/simpleclient_servlet-0.6.0.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/simpleclient_hotspot-0.6.0.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/simpleclient_common-0.6.0.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/simpleclient-0.6.0.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/netty-transport-native-unix-common-4.1.63.Final.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/netty-transport-native-epoll-4.1.63.Final.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/netty-transport-4.1.63.Final.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/netty-resolver-4.1.63.Final.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/netty-handler-4.1.63.Final.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/netty-common-4.1.63.Final.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/netty-codec-4.1.63.Final.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/netty-buffer-4.1.63.Final.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/metrics-core-3.2.5.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/log4j-1.2.17.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/json-simple-1.1.1.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/jline-2.14.6.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/jetty-util-ajax-9.4.39.v20210325.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/jetty-util-9.4.39.v20210325.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/jetty-servlet-9.4.39.v20210325.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/jetty-server-9.4.39.v20210325.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/jetty-security-9.4.39.v20210325.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/jetty-io-9.4.39.v20210325.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/jetty-http-9.4.39.v20210325.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/javax.servlet-api-3.1.0.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/jackson-databind-2.10.5.1.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/jackson-core-2.10.5.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/jackson-annotations-2.10.5.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/commons-cli-1.2.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../lib/audience-annotations-0.5.0.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../zookeeper-*.jar:/usr/apache-zookeeper-3.6.3-bin/bin/../zookeeper-server/src/main/resources/lib/*.jar:/etc/zookeeper/conf:.:/usr/java/jdk1.8.0_121/lib:/usr/java/jdk1.8.0_121/jre/lib
2022-01-26 09:40:40,602 [myid:] - INFO  [main:Environment@98] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2022-01-26 09:40:40,602 [myid:] - INFO  [main:Environment@98] - Client environment:java.io.tmpdir=/tmp
2022-01-26 09:40:40,602 [myid:] - INFO  [main:Environment@98] - Client environment:java.compiler=
2022-01-26 09:40:40,602 [myid:] - INFO  [main:Environment@98] - Client environment:os.name=Linux
2022-01-26 09:40:40,602 [myid:] - INFO  [main:Environment@98] - Client environment:os.arch=amd64
2022-01-26 09:40:40,602 [myid:] - INFO  [main:Environment@98] - Client environment:os.version=3.10.0-514.26.2.el7.x86_64
2022-01-26 09:40:40,602 [myid:] - INFO  [main:Environment@98] - Client environment:user.name=root
2022-01-26 09:40:40,603 [myid:] - INFO  [main:Environment@98] - Client environment:user.home=/root
2022-01-26 09:40:40,603 [myid:] - INFO  [main:Environment@98] - Client environment:user.dir=/root
2022-01-26 09:40:40,603 [myid:] - INFO  [main:Environment@98] - Client environment:os.memory.free=23MB
2022-01-26 09:40:40,604 [myid:] - INFO  [main:Environment@98] - Client environment:os.memory.max=247MB
2022-01-26 09:40:40,605 [myid:] - INFO  [main:Environment@98] - Client environment:os.memory.total=29MB
2022-01-26 09:40:40,608 [myid:] - INFO  [main:ZooKeeper@1006] - Initiating client connection, connectString=hd19:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@4926097b
2022-01-26 09:40:40,621 [myid:] - INFO  [main:X509Util@77] - Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS renegotiation
2022-01-26 09:40:40,626 [myid:] - INFO  [main:ClientCnxnSocket@239] - jute.maxbuffer value is 1048575 Bytes
2022-01-26 09:40:40,641 [myid:] - INFO  [main:ClientCnxn@1736] - zookeeper.request.timeout value is 0. feature enabled=false
2022-01-26 09:40:40,647 [myid:hd19:2181] - INFO  [main-SendThread(hd19:2181):ClientCnxn$SendThread@1181] - Opening socket connection to server hd19/10.168.0.119:2181.
2022-01-26 09:40:40,647 [myid:hd19:2181] - INFO  [main-SendThread(hd19:2181):ClientCnxn$SendThread@1183] - SASL config status: Will not attempt to authenticate using SASL (unknown error)
Welcome to ZooKeeper!
JLine support is enabled
2022-01-26 09:40:40,760 [myid:hd19:2181] - INFO  [main-SendThread(hd19:2181):ClientCnxn$SendThread@1013] - Socket connection established, initiating session, client: /10.168.0.120:57530, server: hd19/10.168.0.119:2181
2022-01-26 09:40:40,792 [myid:hd19:2181] - INFO  [main-SendThread(hd19:2181):ClientCnxn$SendThread@1448] - Session establishment complete on server hd19/10.168.0.119:2181, session id = 0x13000391046f0004, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: hd19:2181(CONNECTED) 0]

然后,你可以通过以下命令获取命令的使用帮助,

[zk: hd19:2181(CONNECTED) 0] help

可见如下显示,

ZooKeeper -server host:port -client-configuration properties-file 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
Command not found: Command not found help

然后,你可以通过以下命令取得集群配置,

[zk: hd19:2181(CONNECTED) 0] config

可见如下显示,

server.19=hd19.cmdschool.org:2888:3888:participant
server.20=hd20.cmdschool.org:2888:3888:participant
server.21=hd21.cmdschool.org:2888:3888:participant
version=0

由于命令不是本章重点,这里不再演示, 详细请参阅官方的以下链接,
https://zookeeper.apache.org/doc/current/zookeeperStarted.html

参阅文档
=====================

zookeeper的官方首页
———————–
https://zookeeper.apache.org/

zookeeper wiki
———————–
https://cwiki.apache.org/confluence/display/ZOOKEEPER/Index

zookeeper doc
—————
https://zookeeper.apache.org/doc/current/index.html

zookeeper over
—————-
https://zookeeper.apache.org/doc/current/zookeeperOver.html

zookerper administrator’s guide
——————————–
https://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_systemReq

zookeeper download
——————-
http://zookeeper.apache.org/releases.html

原语的概念
—————-
https://baike.baidu.com/item/%E5%8E%9F%E8%AF%AD/3794081?fr=aladdin

没有评论

发表回复

Apache-Hadoop
如何安装Kafka connect mqtt?

1 前言 一个问题,一篇文章,一出故事。 我们配置好Kafka connect集群后,我们来尝试安装 …

Apache-Hadoop
如何配置Kafka connect集群?

1 基础知识 1.1 Kafka Connect的介绍 – Kafak Connect是 …

Apache-Hadoop
如何二进制部署CMAK?

1 基础知识 1.1 CMAK 1.1.1 CMAK的介绍 – CMAK原称Kafka …