您的位置:

Zookeeper 安装及配置

一、安装 JDK

1、下载 JDK 安装包。在 Oracle 官网上下载需要的 JDK 安装包,安装包可根据操作系统的不同而有所区别,下载后按照默认选项完成安装。

2、配置环境变量。安装完成 JDK 后需要配置相应的环境变量,将 JDK 的 bin 目录加入 PATH 环境变量中。

export JAVA_HOME=/usr/java/jdk1.8.0_191
export PATH=$JAVA_HOME/bin:$PATH

二、安装 Zookeeper

1、下载 Zookeeper 安装包。在 Apache 官网上下载需要的 Zookeeper 安装包,根据需要选择合适的版本。

2、解压安装包。将下载的安装包解压到指定目录下,例如:/usr/local/zookeeper。

tar -zxvf zookeeper-3.5.6.tar.gz -C /usr/local/zookeeper

3、配置环境变量。同样需要配置环境变量,将 Zookeeper 的 bin 目录加入 PATH 环境变量中。

export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$ZOOKEEPER_HOME/bin:$PATH

三、配置 Zookeeper

1、复制配置文件。Zookeeper 需要有一个配置文件,可以在安装包的 conf 目录下找到 zoo_sample.cfg 文件,复制一份文件并改名为 zoo.cfg。

2、修改配置文件。可按需修改配置文件,例如修改 dataDir 选项指定数据存储目录。

cp $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg
vim $ZOOKEEPER_HOME/conf/zoo.cfg

四、启动 Zookeeper

1、启动 Zookeeper。可以通过命令启动 Zookeeper。

zkServer.sh start

2、查看状态。可以通过命令查看 Zookeeper 的状态。

zkServer.sh status

3、停止 Zookeeper。可以通过命令停止 Zookeeper。

zkServer.sh stop

五、Zookeeper 集群配置

1、复制配置文件。在安装多个 Zookeeper 服务器并组成集群的场景下,需要在每台服务器上都进行上述 Zookeeper 的安装和配置。在配置时只需按需修改配置文件。

2、修改配置文件。在多个服务器组成集群时,需要在配置文件中指定集群的信息。

tickTime=2000
initLimit=5
syncLimit=2
dataDir=/var/zookeeper/data
clientPort=2181
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888

其中 server.x 表示 Zookeeper 服务器的编号,x 为数字,后面两个数字分别表示该 Zookeeper 服务器与其他服务器通信时监听的端口号。

3、启动 Zookeeper。启动多台服务器上的 Zookeeper,确保各个服务器中的配置文件都是一致的。

六、Zookeeper 客户端操作

1、命令行操作。可以通过命令行进行 Zookeeper 的各种操作。

zkCli.sh

2、Java API 操作。使用 Java 编写程序来操作 Zookeeper,使用 Zookeeper 的客户端库。

import org.apache.zookeeper.*;
public class ZookeeperTest {
public static void main(String[] args) throws Exception{
    String connection = "zoo1:2181,zoo2:2181,zoo3:2181";
    int sessionTimeout = 3000;
    ZooKeeper zooKeeper = new ZooKeeper(connection, sessionTimeout, null);
    String path = "/test";
    byte[] data = "test".getBytes();
    // 创建节点
    zooKeeper.create(path, data, ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
    // 获取节点数据
    byte[] result = zooKeeper.getData(path, null, null);
    String dataStr = new String(result);
    System.out.println("node data:" + dataStr);    
    // 设置节点数据
    byte[] newData = "newTest".getBytes();
    zooKeeper.setData(path, newData, -1);
    // 删除节点
    zooKeeper.delete(path, -1);
}
}