---
title: 部署ZooKeeper
description: "先在agent1上部署ZooKeeper，再同步配置到agent2和agent3。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengbds/ecosystemEnable/ZooKeeper/kunpengzookeeper_04_0004.html
sourcePath: /source/zh/kunpengbds/ecosystemEnable/ZooKeeper/kunpengzookeeper_04_0004.html
indexId: 415c6188267839decfae5ef4d6b668f9631ac1097e0267a3f59ad08b0af0cc2f77
---
# 部署ZooKeeper

先在agent1上部署ZooKeeper，再同步配置到agent2和agent3。

1. 登录agent1节点并部署ZooKeeper。

  a. 进入“/usr/local”目录，下载并解压zookeeper-3.4.6.tar.gz。
    1 2 3 cd /usr/local wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz tar -zxvf zookeeper-3.4.6.tar.gz

  b. 建立软链接，便于后期版本更换。
    1 ln -s zookeeper-3.4.6 zookeeper

2. 添加ZooKeeper到环境变量。

  a. 打开配置文件。
    1 vi /etc/profile

  b. 按“i”进入编辑模式，添加ZooKeeper到环境变量。
    1 2 export ZOOKEEPER_HOME=/usr/local/zookeeper export PATH=$ZOOKEEPER_HOME/bin:$PATH

  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
  d. 使环境变量生效。
    1 source /etc/profile

  e. 在agent2和agent3节点重复执行    2.a
～    2.d
，配置ZooKeeper的环境变量。
3. 配置ZooKeeper。

  a. 在agent1上进入ZooKeeper所在目录。
    1 cd /usr/local/zookeeper/conf

  b. 拷贝并重命名配置文件。
    1 cp zoo_sample.cfg zoo.cfg

  c. 修改通用配置。

    1. 打开文件。
      1 vi zoo.cfg

    2. 按“i”进入编辑模式，修改数据目录。
      1 dataDir=/usr/local/zookeeper/tmp

    3. 可选：添加AdminServer配置。此配置项于ZooKeeper 3.5.0版本引入，低于此版本可跳过此步骤。
      1 admin.enableServer=false

    4. 在文件末尾添加如下代码，其中server.1～server.3是部署ZooKeeper的节点。
      1 2 3 server.1=agent1:2888:3888 server.2=agent2:2888:3888 server.3=agent3:2888:3888

    5. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
  d. 添加JMX配置。

    1. 编辑文件zkServer.sh。
      1 vi /usr/local/zookeeper/bin/zkServer.sh

    2. 按“i”进入编辑模式，添加JMX配置至图示位置。
      1 JMXDISABLE=true

      若使用ZooKeeper 3.6及以上版本，则可在“/usr/local/zookeeper/conf”目录下新建文件zookeeper-env.sh，将JMX配置设置在此文件中，便于后续配置调整。

    3. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
  e. 可选：添加JVM配置。
若使用ZooKeeper 3.6及以上版本，相关配置已预先设置完毕，可跳过此步骤。


    1. 编辑文件zkEnv.sh。
      1 vi /usr/local/zookeeper/bin/zkEnv.sh

    2. 按“i”进入编辑模式，添加如下配置至文件末尾。
      1 2 3 4 5 6 7 # default heap for zookeeper server ZK_SERVER_HEAP="${ZK_SERVER_HEAP:-10000}" export SERVER_JVMFLAGS="-Xmx${ZK_SERVER_HEAP}m $SERVER_JVMFLAGS" # default heap for zookeeper client ZK_CLIENT_HEAP="${ZK_CLIENT_HEAP:-256}" export CLIENT_JVMFLAGS="-Xmx${ZK_CLIENT_HEAP}m $CLIENT_JVMFLAGS"

    3. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
  f. 创建“tmp”目录作为数据目录。
    1 mkdir /usr/local/zookeeper/tmp

  g. 在“tmp”目录中创建一个空文件，并向该文件写入myid内容。
    1 2 touch /usr/local/zookeeper/tmp/myid echo 1 > /usr/local/zookeeper/tmp/myid

  h. 配置文件权限。
    1 2 3 4 5 chmod 750 /usr/local/zookeeper find /usr/local/zookeeper/bin -name "*.sh" | xargs -i chmod 500 {} find /usr/local/zookeeper/conf -name "*" -type f | xargs -i chmod 600 {} chown -R root /usr/local/zookeeper-3.4.6 chgrp -R root /usr/local/zookeeper-3.4.6

4. 同步配置到agent2和agent3。

  a. 在agent1同步ZooKeeper目录到其他节点。
    1 2 scp -r /usr/local/zookeeper-3.4.6 root@agent2:/usr/local scp -r /usr/local/zookeeper-3.4.6 root@agent3:/usr/local

  b. 分别登录agent2、agent3，创建软链接并修改myid内容。

    1. 在agent2上：
      1 2 3 cd /usr/local ln -s zookeeper-3.4.6 zookeeper echo 2 > /usr/local/zookeeper/tmp/myid


    1. 在agent3上：
      1 2 3 cd /usr/local ln -s zookeeper-3.4.6 zookeeper echo 3 > /usr/local/zookeeper/tmp/myid
