介绍
ZooKeeper 是一个 Apache 软件基金会项目,旨在简化监控和管理组服务。 它使用一个简单的界面来管理配置、信息、命名、分布式同步和供应的集中式协调服务。
ZooKeeper 是用 Java 编写的,需要这种编程语言才能工作。 要检查是否已安装 Java ,请运行以下命令:
java --version
如果输出显示正在运行的 Java 版本,您可以继续下一步。 如果系统说有 no such file or directory,您需要先安装 Java,然后才能继续使用 ZooKeeper。
通过键入以下内容为 ZooKeeper 服务创建一个单独的用户:
useradd zookeeper -m
这 -mflag 为用户创建一个主目录。 在这种情况下,它将是 /home/zookeeper. 要以不同方式命名用户,请替换 zookeeper使用您选择的名称。
接下来,设置 bash 使用以下命令作为新用户的默认 shell:
usermod --shell /bin/bash zookeeper
为用户设置密码:
passwd zookeeper
键入并重新键入 强密码 为 ZooKeeper 用户 。
为 ZooKeeper 用户设置密码。
然后,将用户添加到 sudoers 组 ,使其具有 sudo 权限:
usermod -aG sudo zookeeper
通过列出 sudoers 组中的帐户来检查以验证用户现在是超级用户:
sudo getent group sudo
输出应显示您创建的用户。
列出 sudo 用户的成员。
在安装 ZooKeeper 之前,创建一个目录结构,它可以在其中存储配置和状态数据(在本地磁盘或远程存储上)。
要将数据存储在本地机器上,首先创建一个新的 ZooKeeper 目录:
sudo mkdir -p /data/zookeeper
然后,将 ZooKeeper 用户所有权授予该目录:
chown -R zookeeper:zookeeper /data/zookeeper
进入官网下载ZooKeeper
回到命令行并移动到 /opt目录:
cd /opt
使用 wget命令下载 . tar 文件。 粘贴从 Apache 官方网页复制的链接:
sudo wget https://downloads.apache.org/zookeeper/zookeeper-3.6.1/apache-zookeeper-3.6.1-bin.tar.gz
通过运行提取文件:
sudo tar -xvf apache-zookeeper-3.6.1-bin.tar.gz
注意: 解压文件时,ZooKeeper 二进制包的名称会有所不同。 确保它与您下载的文件匹配。
将解压后的文件重命名为 zookeeper使用命令:
mv apache-zookeeper-3.6.1-bin zookeeper
通过运行以下命令授予 zookeeper 用户对该文件的所有权:
chown -R zookeeper:zookeeper /opt/zookeeper
下一步是为 ZooKeeper 创建配置文件。 下面的配置将 ZooKeeper 设置为独立模式(用于开发和测试)。
要在独立模式下配置 ZooKeeper,请创建一个新的 zoo.cfg 在 文件 zookeeper 目录中 :
拷贝zoo_sample.cfg 文件并重命名为zoo.cfg
sudo cp zoo_sample.cfg zoo.cfg
编辑zoo.cfg配置zookeeper
sudo nano /opt/zookeeper/conf/zoo.cfg
配置信息
tickTime = 2000
Client-Server通信心跳时间
dataDir = /data/zookeeper
指定数据文件目录
clientPort = 2181
指定端口号
initLimit = 5
Leader-Follower初始通信时限
syncLimit = 2
Leader-Follower同步通信时限
保存并退出文本编辑器。
进入zookeeper的bin目录
cd /opt/zookeeper/bin
启动 ZooKeeper 服务:
sudo bin/zkServer.sh start
输出应显示 ZooKeeper 已 启动 。
启动 ZooKeeper 服务。
一旦您启动了该服务,您就可以连接到 ZooKeeper 服务器。 在本指南中,它是本地服务器。
使用以下命令连接到 ZooKeeper:
bin/zkCli.sh -server 127.0.0.1:2181
等待输出打开一个新的 zk提示,这应该确认您已 连接 。
连接到 ZooKeeper 服务器。
要查看可用命令的列表,请在新的命令提示符中运行以下命令:
help
列出 ZooKeeper 命令。
要关闭会话,键入:
quit
要 停止 ZooKeeper 服务 ,请运行以下命令:
bin/zkServer.sh stop
最后,您需要创建一个服务文件来管理 ZooKeeper。
sudo 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
systemctl start zookeeper
systemctl enable zookeeper
systemctl status zookeeper
您应该会看到 ZooKeeper is active (running)
sudo nano /data/zookeeper myid
文件内容为此服务的id
例如,你有三个zookeeper服务,那么第一个myid为1,第二个myid为2,第三个myid为3
修改每个实例的配置文件zoo.cfg,添加以下内容
server.1=[server_ip]:2888:3888
server.2=[server_ip]:2888:3888
server.3=[server_ip]:2888:3888
server.1对应myid为1的zookeeper服务器地址
保存并退出文件。
color=“red”>修改每个实例的配置文件zoo.cfg,添加以下内容
server.1=[server_ip]:2888:3888
server.2=[server_ip]:2888:3888
server.3=[server_ip]:2888:3888
server.1对应myid为1的zookeeper服务器地址
保存并退出文件。
在组中的每台服务器上重复该过程。
参考资料:how to install zookeeper in ubuntu