以下是有关于在 Linux 环境下搭建 ZooKeeper 服务端集群的详细步骤指南,包含目录和参考资料的出站链接。本教程以 Ubuntu 系统为例,假设搭建一个 3 节点的 ZooKeeper 集群。
目录
集群搭建前的准备
ZooKeeper 集群需要至少 3 台服务器以确保高可用性和一致性(多数派 quorum)。以下是前提条件:
- 服务器:3 台 Linux 服务器(例如 IP 分别为
192.168.1.101
、192.168.1.102
、192.168.1.103
)。 - 网络:确保服务器之间可以通过 IP 或域名互相访问,且防火墙允许 ZooKeeper 端口(默认 2181、2888、3888)。
- Java:ZooKeeper 依赖 JVM,需安装 JDK。
检查 Java
在每台服务器上运行:
java -version
如果未安装:
sudo apt update
sudo apt install openjdk-11-jdk
安装 ZooKeeper
在每台服务器上执行以下步骤安装 ZooKeeper。
步骤
- 下载 ZooKeeper
wget https://downloads.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
tar -xzf apache-zookeeper-3.8.4-bin.tar.gz
mv apache-zookeeper-3.8.4-bin /usr/local/zookeeper
cd /usr/local/zookeeper
- 创建数据目录
ZooKeeper 需要一个目录存储数据和日志:
sudo mkdir -p /var/lib/zookeeper
sudo chown $USER:$USER /var/lib/zookeeper
- (可选)设置环境变量
编辑~/.bashrc
:
echo "export ZOOKEEPER_HOME=/usr/local/zookeeper" >> ~/.bashrc
echo "export PATH=\$PATH:\$ZOOKEEPER_HOME/bin" >> ~/.bashrc
source ~/.bashrc
配置 ZooKeeper 集群
集群配置需要修改每台服务器上的配置文件,并设置唯一标识。
步骤
- 编辑配置文件
在每台服务器上复制并编辑配置文件:
cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg
nano /usr/local/zookeeper/conf/zoo.cfg
配置内容(所有节点相同):
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/lib/zookeeper
clientPort=2181
server.1=192.168.1.101:2888:3888
server.2=192.168.1.102:2888:3888
server.3=192.168.1.103:2888:3888
tickTime
:心跳时间(毫秒)。initLimit
:Follower 初始化连接 Leader 的最大时间。syncLimit
:Follower 与 Leader 同步的最大时间。dataDir
:数据目录。server.X
:集群服务器列表,格式为IP:Follower端口:Leader选举端口
。
- 设置服务器 ID
在每台服务器的dataDir
中创建myid
文件:
- 节点 1 (
192.168.1.101
):bash echo "1" > /var/lib/zookeeper/myid
- 节点 2 (
192.168.1.102
):bash echo "2" > /var/lib/zookeeper/myid
- 节点 3 (
192.168.1.103
):bash echo "3" > /var/lib/zookeeper/myid
- 配置防火墙(可选)
如果防火墙启用,确保开放端口:
sudo ufw allow 2181
sudo ufw allow 2888
sudo ufw allow 3888
sudo ufw status
启动并验证集群
在所有节点上启动 ZooKeeper 并验证集群状态。
步骤
- 启动 ZooKeeper
在每台服务器上运行:
/usr/local/zookeeper/bin/zkServer.sh start
输出类似:
Starting zookeeper ... STARTED
- 检查状态
在每台服务器上运行:
/usr/local/zookeeper/bin/zkServer.sh status
- 一个节点显示
Mode: leader
,其余显示Mode: follower
。 - 如果显示
Error contacting service
,检查网络连接或配置文件。
- 使用客户端验证
从任意节点连接集群:
/usr/local/zookeeper/bin/zkCli.sh -server 192.168.1.101:2181,192.168.1.102:2181,192.168.1.103:2181
测试命令:
create /test "cluster test"
get /test
预期输出:
cluster test
在其他节点上运行 get /test
应同步显示相同数据。
- 停止集群(可选)
在每台服务器上:
/usr/local/zookeeper/bin/zkServer.sh stop
参考资料
- ZooKeeper 官方集群配置 – 官方集群指南。
- DigitalOcean – ZooKeeper 集群教程 – Ubuntu 集群搭建。
- Apache ZooKeeper 下载 – 获取最新版本。
- Baeldung – ZooKeeper 集群 – 集群配置基础。
这是 ZooKeeper 在 Linux 上搭建服务端集群的完整步骤。如果您需要 systemd 服务配置、日志管理或遇到具体问题,请告诉我,我可以进一步协助!
发表回复