如何在 Debian 10 上安装 Apache ZooKeeper
在此页
- 先决条件
- 开始
- 安装Java
- 为 Zookeeper 创建一个系统用户
- 下载动物园管理员
- 配置动物园管理员
- 启动并测试 Zookeeper 服务器
- 为 Zookeeper 创建一个 Systemd 服务文件
- 结论
Apache Zookeeper 是一种用于分布式系统的免费开源服务,可帮助您管理大量主机。它是用于维护配置信息、命名和组服务的集中式服务。它是用 Java 编写的,允许开发人员专注于构建软件功能,而不必担心应用程序的分布式特性。 Apache ZooKeeper 最常用于读取比写入更常见的“读取主导”工作负载。它具有丰富的功能集,包括同步、有序消息、序列化、可靠性、原子性、快速处理等等。它具有锁定和同步机制,可帮助您在连接其他分布式应用程序时进行自动故障恢复。 Zookeeper 项目是 Apache 基金会最成功的项目之一。许多公司采用 Zookeeper 来大规模创建高可用性分布式系统。
在本教程中,我们将向您展示如何在 Debian 10 服务器上设置单节点 Apache Zookeeper 集群。
先决条件
- 一台运行 Debian 10 且配备 2 GB RAM 的服务器。
- 在您的服务器上配置了根密码。
入门
在开始之前,建议使用最新版本更新您的服务器。您可以使用以下命令更新它:
apt-get update -y
apt-get upgrade -y
服务器更新后,重新启动它以实施更改。
安装Java
Apache Zookeeper 是用 Java 语言编写的。因此,您需要在系统中安装 Java。默认情况下,最新版本的 Java 在 Debian 10 默认存储库中可用。您可以通过运行以下命令来安装它:
apt-get install default-jdk -y
安装 Java 后,使用以下命令验证已安装的 Java 版本:
java --version
您应该得到以下输出:
openjdk 11.0.5 2019-10-15
OpenJDK Runtime Environment (build 11.0.5+10-post-Debian-1deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.5+10-post-Debian-1deb10u1, mixed mode, sharing)
完成后,您可以继续为 Zookeeper 创建系统用户。
为 Zookeeper 创建系统用户
创建一个专门的用户来运行 Zookeeper 服务是个好主意。这将提高您的安全性和可管理性。
首先,运行以下命令创建一个具有主目录的 zookeeper 用户:
useradd zookeeper -m
接下来,使用以下命令为 zookeeper 用户设置默认 shell:
usermod --shell /bin/bash zookeeper
接下来,使用以下命令为 zookeeper 用户设置密码:
passwd zookeeper
接下来,将 zookeeper 用户添加到 sudo 组:
usermod -aG sudo zookeeper
此时,您已经创建并配置了 Zookeeper 用户。您现在可以继续下载 Zookeeper。
下载动物园管理员
首先,您需要从其官方网站下载最新版本的 Apache Zookeeper。在撰写本文时,Apache Zookeeper 的最新版本是 3.5.6。
要下载它,请将目录更改为 /opt 并运行以下命令:
cd /opt
wget https://archive.apache.org/dist/zookeeper/stable/apache-zookeeper-3.5.6-bin.tar.gz
下载完成后,使用以下命令解压缩下载的文件:
tar -xvzf apache-zookeeper-3.5.6-bin.tar.gz
接下来,将提取的目录重命名为 zookeeper 并赋予适当的权限:
mv apache-zookeeper-3.5.6-bin zookeeper
chown -R zookeeper:zookeeper /opt/zookeeper
接下来,您需要为 Zookeeper 创建一个数据目录来存储所有配置和状态数据。您可以根据需要在本地文件系统或远程文件系统上创建。
您可以使用以下命令创建数据目录:
mkdir -p /data/zookeeper
接下来,将数据目录的所有权更改为 zookeeper 用户:
chown -R zookeeper:zookeeper /data/zookeeper
此时,您已经下载了 Zookeeper 并为其创建了一个数据目录。您现在可以继续配置 Zookeeper。
配置动物园管理员
Zookeeper 的所有配置文件都位于 /opt/zookeeper/conf/ 目录里面。您可以使用以下命令在 /opt/zookeeper/conf/ 目录中创建 Zookeeper 配置文件:
nano /opt/zookeeper/conf/zoo.cfg
添加以下行:
tickTime=2500
dataDir=/data/zookeeper
clientPort=2181
maxClientCnxns=80
完成后保存并关闭文件。
在哪里:
- tickTime :此选项以毫秒为单位设置刻度的长度。
- dataDir : 指定存放 Zookeeper 数据的数据目录。
- clientPort :指定用于侦听客户端连接的端口。
- maxClientCnxns : 用于限制最大客户端连接数。
注意:以上参数用于开发和测试。您可以根据需要更改它们。
至此,您已经配置了 Zookeeper。您现在可以准备启动 Zookeeper 服务器。
启动和测试 Zookeeper 服务器
您可以使用以下命令启动 Zookeeper 服务器:
/opt/zookeeper/bin/zkServer.sh start
您应该得到以下输出:
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
接下来,您可以使用以下命令在端口 2181 上连接到 Zookeeper 服务器:
/opt/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181
连接后,您应该会看到以下输出:
[zk: 127.0.0.1:2181(CONNECTED) 0]
接下来,运行帮助命令以获取可以从客户端执行的命令列表。
[zk: 127.0.0.1:2181(CONNECTED) 0] help
您应该看到以下输出:
ZooKeeper -server host:port cmd args
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
delquota [-n|-b] path
get [-s] [-w] path
getAcl [-s] path
history
listquota path
ls [-s] [-w] [-R] path
ls2 path [watch]
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]
rmr path
set [-s] [-v version] path data
setAcl [-s] [-v version] [-R] path acl
setquota -n|-b val path
stat [-w] path
sync path
测试后,使用 quit 命令退出客户端会话:
[zk: 127.0.0.1:2181(CONNECTED) 0] quit
您现在可以使用以下命令停止 Zookeeper 服务:
/opt/zookeeper/bin/zkServer.sh stop
您应该看到以下命令:
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
至此,您已经成功启动并测试了 Zookeeper 服务器。
为 Zookeeper 创建系统服务文件
接下来,您需要创建一个 systemd 服务文件来使用 systemd 管理 Zookeeper 服务。
您可以使用以下命令创建它:
nano /etc/systemd/system/zookeeper.service
添加以下行:
[Unit]
Description=Zookeeper Daemon
Documentation=http://zookeeper.apache.org
Requires=network.target
After=network.target
[Service]
Type=forking
WorkingDirectory=/opt/zookeeper
User=zookeeper
Group=zookeeper
ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg
ExecStop=/opt/zookeeper/bin/zkServer.sh stop /opt/zookeeper/conf/zoo.cfg
ExecReload=/opt/zookeeper/bin/zkServer.sh restart /opt/zookeeper/conf/zoo.cfg
TimeoutSec=30
Restart=on-failure
[Install]
WantedBy=default.target
完成后保存并关闭文件。然后,使用以下命令重新加载 systemd 守护进程:
systemctl daemon-reload
接下来,使用以下命令启动 Zookeeper 服务并使其在系统重启后启动:
systemctl start zookeeper
systemctl enable zookeeper
您现在可以使用以下命令验证 Zookeeper 状态:
systemctl status zookeeper
您应该看到以下输出:
? zookeeper.service - Zookeeper Daemon
Loaded: loaded (/etc/systemd/system/zookeeper.service; disabled; vendor preset: enabled)
Active: active (running) since Sun 2019-12-29 15:12:39 UTC; 8min ago
Docs: http://zookeeper.apache.org
Process: 9229 ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg (code=exited, status=0/SUCCESS)
Main PID: 9245 (java)
Tasks: 29 (limit: 2359)
Memory: 49.7M
CGroup: /system.slice/zookeeper.service
??9245 java -Dzookeeper.log.dir=/opt/zookeeper/bin/../logs -Dzookeeper.log.file=zookeeper-zookeeper-server-debian10.log -Dzookeeper.
Dec 29 15:12:38 debian10 systemd[1]: Starting Zookeeper Daemon...
Dec 29 15:12:38 debian10 zkServer.sh[9229]: /usr/bin/java
Dec 29 15:12:38 debian10 zkServer.sh[9229]: ZooKeeper JMX enabled by default
Dec 29 15:12:38 debian10 zkServer.sh[9229]: Using config: /opt/zookeeper/conf/zoo.cfg
Dec 29 15:12:39 debian10 zkServer.sh[9229]: Starting zookeeper ... STARTED
Dec 29 15:12:39 debian10 systemd[1]: Started Zookeeper Daemon.
现在,您可以使用 systemd 轻松管理 Zookeeper 服务。
结论
恭喜!您已经在 Debian 10 服务器上成功安装并配置了单节点 Zookeeper 集群。此设置对于开发和测试环境非常有用。我希望您现在有足够的知识来设置单节点 Zookeeper 集群。如果您有任何问题,请随时问我。