Zookeeper伪分布式环境搭建集群

本文详细介绍如何在单一机器上搭建Zookeeper伪分布式环境,包括创建集群节点、配置zoo.cfg文件、设置集群标识、启动及检测集群状态,以及提供了一个启动脚本,帮助读者快速部署Zookeeper集群。

Zookeeper伪分布式环境搭建:

一、创建集群节点

1. 创建zookeeper-cluster]文件夹

2. 在zookeeper-cluster]文件夹中下载并解压Zookeeper

```
[john@john zookeeper-cluster]$ ls
apache-zookeeper-3.5.5-bin
```
  • 1
  • 2
  • 3
  • 4

3. 创建集群节点并创建数据存放路径

创建第一个集群节点node1:

[john@john zookeeper-cluster]$ mv apache-zookeeper-3.5.5-bin ./node1
[john@john zookeeper-cluster]$ mkdir node1/data
  • 1
  • 2

创建第二个集群节点node2:

[john@john zookeeper-cluster]$ cp -r node1/ node2
[john@john zookeeper-cluster]$ mkdir node2/data
  • 1
  • 2

创建第三个集群节点node3:

[john@john zookeeper-cluster]$ cp -r node1/ node3
[john@john zookeeper-cluster]$ mkdir node3/data
  • 1
  • 2

每个节点创建zoo.cfg文件

[john@john zookeeper-cluster]$ mv node1/conf/zoo_sample.cfg zoo.cfg
[john@john zookeeper-cluster]$ mv node2/conf/zoo_sample.cfg zoo.cfg
[john@john zookeeper-cluster]$ mv node3/conf/zoo_sample.cfg zoo.cfg
  • 1
  • 2
  • 3

二、更改每个节点zoo.cfg配置文件:

node1的配置文件:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/john/zookeeper-cluster/node1/data                         
clientPort=2181

server.1=10.10.14.146:2811:3811
server.2=10.10.14.146:2812:3812
server.3=10.10.14.146:2813:3813

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

node2的配置文件:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/john/zookeeper-cluster/node2/data                         
clientPort=2182

server.1=10.10.14.146:2811:3811
server.2=10.10.14.146:2812:3812
server.3=10.10.14.146:2813:3813

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

node3的配置文件:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/john/zookeeper-cluster/node3/data                         
clientPort=2183

server.1=10.10.14.146:2811:3811
server.2=10.10.14.146:2812:3812
server.3=10.10.14.146:2813:3813

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

参数说明:

  1. tickTime=2000:
    tickTime这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳;

  2. initLimit=10:
    initLimit这个配置项是用来配置Zookeeper接受客户端(这里所说的客户端不是用户连接Zookeeper服务器的客户端,而是Zookeeper服务器集群中连接到Leader的Follower服务器)初始化连接时最长能忍受多少个心跳时间间隔数。
    当已经超过10个心跳的时间(也就是tickTime)长度后Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是10*2000=20 秒;

  3. syncLimit=5:
    syncLimit这个配置项标识Leader与Follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒;

  4. dataDir=/home/john/zookeeper-cluster/node1/data
    dataDir顾名思义就是Zookeeper保存数据的目录,默认情况下Zookeeper将写数据的日志文件也保存在这个目录里(路径为绝对路径);

  5. clientPort=2181
    clientPort这个端口就是客户端连接Zookeeper服务器的端口,Zookeeper会监听这个端口接受客户端的访问请求;

  6. server.1=10.10.14.146:2811:3811
    server.2=10.10.14.146:2812:3812
    server.3=10.10.14.146:2813:3813
    server.A=B:C:D:
    A:是一个数字,表示这个是第几号服务器,
    B:是这个服务器的ip地址
    C:第一个端口用来集群成员的信息交换,表示的是这个服务器与集群中的Leader服务器交换信息的端口
    D:是在leader挂掉时专门用来进行选举leader所用

三、创建集群标识

除了修改zoo.cfg配置文件,集群模式下还要配置一个文件myid,这个文件在dataDir目录下,这个文件里面就有一个数据就是A的值,在上面配置文件中zoo.cfg中配置的dataDir路径中创建myid文件

[john@john zookeeper-cluster]$ echo "1" > node1/data/myid
[john@john zookeeper-cluster]$ echo "2" > node2/data/myid
[john@john zookeeper-cluster]$ echo "3" > node3/data/myid
  • 1
  • 2
  • 3

四、启动集群

[john@john zookeeper-cluster]$ ./node1/bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/john/zookeeper-cluster/node1/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

[john@john zookeeper-cluster]$ ./node2/bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/john/zookeeper-cluster/node2/bin/…/conf/zoo.cfg
Starting zookeeper … STARTED

[john@john zookeeper-cluster]$ ./node3/bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/john/zookeeper-cluster/node3/bin/…/conf/zoo.cfg
Starting zookeeper … STARTED

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

五、检测集群是否启动

[john@john zookeeper-cluster]$ ps aux | grep java
  • 1

六、伪集群部署注意事项

在一台机器上部署了3个server;需要注意的是clientPort这个端口,如果在1台机器上部署多个server,那么每个server都要有不同的clientPort.

比如 server.1是2181,server.2是2182,server.3是2183

最后几行唯一需要注意的地方就是

server.X 这个数字就是对应 data/myid中的数字。

附:集群的启动脚本

start_cluster.sh

#!/bin/bash

echo “prepare start zookeeper cluster…”

work_dir=pwd

cd $work_dir

./node1/bin/zkServer.sh start &
if [ $? -eq 0 ]
then
echo “启动node1成功”
else
echo “启动node1失败”
exit 1
fi

./node2/bin/zkServer.sh start &
if [ $? -eq 0 ]
then
echo “启动node2成功”
else
echo “启动node2失败”
exit 1
fi

./node3/bin/zkServer.sh start &
if [ $? -eq 0 ]
then
echo “启动node3成功”
else
echo “启动node3失败”
exit 1
fi

echo “start zookeeper cluster complete…”

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

脚本放置位置:与node1,node2,node3同一个目录

                                </div>
### 伪分布式环境搭建 ZooKeeper 的相关指南 在伪分布式环境搭建 ZooKeeper,通常需要在同一台机器上模拟多个服务器节点。以下是详细的配置和操作流程: #### 1. 安装与初始化 首先确保已经安装了 ZooKeeper,并将其解压到指定目录(如 `/opt/zookeeper-3.4.12`)。如果尚未完成安装,可以参考以下命令进行初始化[^1]: ```bash cd /opt/zookeeper-3.4.12 vi /opt/zookeeper-3.4.12/conf/zoo.cfg ``` 在 `zoo.cfg` 文件中添加或修改以下内容以支持伪分布式环境: ```properties tickTime=2000 initLimit=10 syncLimit=5 dataDir=/opt/zookeeper-3.4.12/data clientPort=2181 server.1=localhost:2888:3888 server.2=localhost:2889:3889 server.3=localhost:2890:3890 ``` #### 2. 创建数据目录 为每个节点创建独立的数据目录并设置 `myid` 文件。例如: ```bash mkdir -p /opt/zookeeper-3.4.12/data1 echo "1" > /opt/zookeeper-3.4.12/data1/myid mkdir -p /opt/zookeeper-3.4.12/data2 echo "2" > /opt/zookeeper-3.4.12/data2/myid mkdir -p /opt/zookeeper-3.4.12/data3 echo "3" > /opt/zookeeper-3.4.12/data3/myid ``` 同时,在 `zoo.cfg` 中分别指定各节点的数据目录: ```properties dataDir=/opt/zookeeper-3.4.12/data1 dataLogDir=/opt/zookeeper-3.4.12/datalog1 dataDir=/opt/zookeeper-3.4.12/data2 dataLogDir=/opt/zookeeper-3.4.12/datalog2 dataDir=/opt/zookeeper-3.4.12/data3 dataLogDir=/opt/zookeeper-3.4.12/datalog3 ``` #### 3. 复制安装目录 为了模拟多个节点,可以复制 ZooKeeper 的安装目录。例如: ```bash cp -r /opt/zookeeper-3.4.12 /opt/zookeeper-3.4.12-01 cp -r /opt/zookeeper-3.4.12 /opt/zookeeper-3.4.12-02 cp -r /opt/zookeeper-3.4.12 /opt/zookeeper-3.4.12-03 ``` 注意:每个副本的配置文件(`zoo.cfg`)需要根据实际情况调整,确保端口和数据目录互不冲突[^2]。 #### 4. 启动集群 依次启动三个节点的服务: ```bash /opt/zookeeper-3.4.12-01/bin/zkServer.sh start /opt/zookeeper-3.4.12-02/bin/zkServer.sh start /opt/zookeeper-3.4.12-03/bin/zkServer.sh start ``` #### 5. 验证集群状态 使用客户端连接到集群并验证其状态: ```bash zkCli.sh -server 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183 ``` 尝试创建一个测试节点以观察集群的行为: ```bash create /quorum_test "quorum_test" quit ``` 通过上述步骤,可以在伪分布式环境下成功搭建 ZooKeeper 集群[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值