ZooKeeper集群搭建详细步骤

本文介绍Apache ZooKeeper的分布式协调系统及其在配置管理、命名服务等领域的应用。详细说明了如何搭建一个三节点的ZooKeeper集群,包括下载安装、配置参数解释及集群启动测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Apache ZooKeeper是一个非常出色的分布式协调系统,在配置管理、命名服务、分布式同步等方面应用广泛。其基本思想来源于Google的Chubby,可以认为是其开源实现。在Hadoop生态系统中,ZooKeeper发挥着非常作用的作用,kafka等很多系统都依赖于ZooKeeper提供服务。ZooKeeper通过选举产生一个Leader,其他节点作为Follower。Leader发生故障时会自动重新选举,具备很高的可用性。

ZooKeeper集群组成如下,写操作都由Leader来完成,如果其他节点接受到写操作,会自动转发给Leader:

image_1apb5un3bb54gsbmjf13ll1q5613.png-49.1kB

ZooKeeper的数据模型通过ZNode组成类似文件系统的目录结构;

image_1apb61jrm16ugnb81fcdo5m11iq1g.png-33.1kB

本文描述一个3节点集群的搭建步骤,分别为master,slave1,slave2.

1. 下载安装

在master节点上:

#wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.3.6/zookeeper-3.3.6.tar.gz

# tar zxvf zookeeper-3.3.6.tar.gz 

# mv zookeeper-3.3.6 /home/zookeeper-3.3.6

2. 配置ZooKeeper:

ZooKeeper的配置集中在conf/zoo.cfg文件中,基础的配置包括一些时间参数,数据目录,机器其他节点等。

cd /home/zookeeper-3.3.6/conf
cp zoo_sample.cfg zoo.cfg 
vim 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.
dataDir=/home/data/zookeeper/data
dataLogDir=/home/data/zookeeper/log

# the port at which the clients will connect
clientPort=2181

#集群节点组成
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

tickTime是ZooKeeper很多地方用到的一个时间单位,其他时间配置很多以这个为单位来计算。这配置为2秒钟。

initLimit是ZooKeeper启动时,Follower节点从Leader节点同步数据允许的最长时间。

syncLimit时节点通信时请求响应的最长时间。

dataDir和dataLogDir分别配置存储ZooKeeper数据和事务日志的目录。

clientPort是ZooKeeper对外提供服务的端口,客户端通过该端口连接ZooKeeper。

节点组成部分配置的是集群中各个节点的信息,1,2,3分别表示各个节点的id,每个节点的数据目录下需要配置一个叫myid的文件,指定该ZooKeeper节点的id,下面会提到。右边分别是主机、集群通信端口(Follower联系Leader的时候连接到该端口),最后一个端口是选举Leader的时候使用的端口。

创建数据和日志目录:

mkdir /home/data/zookeeper
mkdir /home/data/zookeeper/data
mkdir /home/data/zookeeper/log

配置id:

vim /home/data/zookeeper/data/myid

文件内容:

1

3. 复制到其他节点

将master的ZooKeeper复制到slave1和slave2:

scp -rp /home/zookeeper-3.3.6/ root@slave1:/home
scp -rp /home/zookeeper-3.3.6/ root@slave2:/home

scp中的r参数表示复制的是个目录,p保留权限等信息。
同时需要在132和134创建相应的目录,然后myid文件分别为2,3. 具体做法参考前文。

4. 启动,测试

在3台机器上分别启动ZooKeeper。
使用bin目录中的脚本启动ZooKeeper,主要目录前面的./。

cd /home/zookeeper-3.3.6/bin/
./zkServer start

测试,使用zkCli.sh连接到ZooKeeper:

./zkCli.sh

没有提供主机和端口,默认连接到本地的2181端口:

image_1apaqt714brl174thk413uecfa9.png-73.8kB

help命令可以获取帮助,ls列出当前ZooKeeper中的节点列表。
如果安装了HBase,在HBase管理界面可以看到使用了搭建的ZooKeeper集群:

image_1apb6kfv2evo1iot12r3bjbmij1t.png-45.3kB

(完)

<think>我们正在回答用户关于如何搭建ZooKeeper集群的问题。根据用户要求,回答需要结构清晰,步骤详细,并参考提供的引用内容。同时,注意系统级指令(如LaTeX格式、中文回答等)和用户可见层的要求。步骤分解:1.环境准备:包括服务器准备、系统要求、网络配置等。2.安装ZooKeeper:下载、解压、配置环境变量等。3.配置ZooKeeper集群:修改配置文件zoo.cfg,创建myid文件等。4.启动集群并测试。参考引用:[^1]提到ZooKeeper是一个分布式协调服务,本文会详细配置与测试过程。 [^2]提供了下载和解压命令。 [^3]提到使用三台服务器为例,并给出了下载步骤。 [^4]详细介绍了集群部署步骤,包括准备工作(主机名、IP映射、时钟同步、SSH免密)、安装配置等。 [^5]提到版本要求(3.4.5以上)和解压命令。注意:引用内容中有些版本不一致(如3.8.0、3.8.4、3.5.7等),我们以较新且稳定的版本为例,例如3.8.0(参考引用[2])或3.8.4(参考引用[3]),但具体版本用户可自行选择。这里我们使用3.8.0。我们将按照以下步骤详细说明:步骤1:环境准备步骤2:下载并解压ZooKeeper步骤3:配置ZooKeeper步骤4:配置集群步骤5:启动集群步骤6:测试集群下面开始详细步骤:</think>### ZooKeeper集群搭建步骤详解 ZooKeeper集群搭建需要经过以下关键步骤,确保高可用性和数据一致性: #### 1. 环境准备(以3节点集群为例) - **服务器配置**(参考[^3][^4]): - 三台Linux服务器(示例IP): - hadoop01: 192.168.121.131 - hadoop02: 192.168.121.132 - hadoop03: 192.168.121.133 - 要求: - JDK 1.8+ 已安装 - 系统时间同步(`ntpd`服务) - 关闭防火墙或开放2181/2888/3888端口 - **基础配置**(所有节点执行): ```bash # 配置主机名映射 echo "192.168.121.131 hadoop01" >> /etc/hosts echo "192.168.121.132 hadoop02" >> /etc/hosts echo "192.168.121.133 hadoop03" >> /etc/hosts # 配置SSH免密登录(参考[^4]) ssh-keygen -t rsa ssh-copy-id hadoop01 ssh-copy-id hadoop02 ssh-copy-id hadoop03 ``` #### 2. 安装ZooKeeper(参考[^2][^5]) ```bash # 下载(在hadoop01操作) wget https://downloads.apache.org/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz # 解压并移动 tar -zxvf apache-zookeeper-3.8.0-bin.tar.gz mv apache-zookeeper-3.8.0-bin /opt/zookeeper # 同步到其他节点 scp -r /opt/zookeeper hadoop02:/opt/ scp -r /opt/zookeeper hadoop03:/opt/ ``` #### 3. 集群配置(关键步骤) - **配置文件`zoo.cfg`**(所有节点相同配置): ```properties # /opt/zookeeper/conf/zoo.cfg tickTime=2000 initLimit=10 syncLimit=5 dataDir=/var/lib/zookeeper # 数据存储目录 clientPort=2181 maxClientCnxns=60 autopurge.snapRetainCount=3 autopurge.purgeInterval=1 # 集群节点配置 server.1=hadoop01:2888:3888 server.2=hadoop02:2888:3888 server.3=hadoop03:2888:3888 ``` - **创建节点ID文件**(每个节点不同): ```bash # hadoop01执行 mkdir /var/lib/zookeeper echo "1" > /var/lib/zookeeper/myid # hadoop02执行 mkdir /var/lib/zookeeper echo "2" > /var/lib/zookeeper/myid # hadoop03执行 mkdir /var/lib/zookeeper echo "3" > /var/lib/zookeeper/myid ``` #### 4. 启动与验证集群 - **启动服务**(所有节点): ```bash /opt/zookeeper/bin/zkServer.sh start ``` - **检查状态**: ```bash /opt/zookeeper/bin/zkServer.sh status ``` 正常输出应显示: ``` Mode: leader # 其中一个节点为leader Mode: follower # 其他节点为follower ``` - **基本功能测试**: ```bash /opt/zookeeper/bin/zkCli.sh -server hadoop01:2181 create /test "hello" get /test ``` #### 5. 常见问题解决(参考[^4]) - **启动失败排查**: 1. 检查`myid`文件是否匹配`zoo.cfg`中的ID 2. 验证端口2888/3888是否开放 3. 查看日志:`/opt/zookeeper/logs/zookeeper.out` - **版本兼容性**:必须使用带`-bin`的发行版(参考[^5]) > **重要提示**:集群节点数建议为奇数(3/5/7),遵循$n=2f+1$容错公式($f$为允许故障节点数)[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值