Гид по технологиям

Установка Apache ZooKeeper на Ubuntu 20.04

• 4 min read • DevOps • Обновлено 19 Nov 2025
Установка Apache ZooKeeper на Ubuntu 20.04
Установка Apache ZooKeeper на Ubuntu 20.04

Фото сервера с логотипом ZooKeeper или иллюстрация установки и конфигурации ZooKeeper

TL;DR

Краткая пошаговая инструкция по установке Apache ZooKeeper на сервер с Ubuntu 20.04: установите Java, создайте отдельного пользователя и директорию данных, загрузите и распакуйте дистрибутив, настройте режим standalone и создайте systemd‑сервис. Проверяйте работу через zkCli.sh и systemctl.

Требования

  • Сервер с Ubuntu 20.04.
  • Доступ с правами root или пользователь с sudo.

Что такое ZooKeeper (в одном предложении)

ZooKeeper — это распределённый сервис для хранения конфигурации, синхронизации и именования сервисов в кластере.

Установка Java

Apache ZooKeeper написан на Java, поэтому сначала установите JDK:

apt-get install default-jdk -y

Проверьте установленную версию Java:

java --version

Пример ожидаемого вывода:

openjdk 11.0.8 2020-07-14
OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu120.04)
OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu120.04, mixed mode, sharing)

Важно: для ZooKeeper 3.6.x и большинства современных версий рекомендуется Java 8 или 11. Если у вас другая версия, проверьте совместимость.

Установка ZooKeeper

Создайте системного пользователя для запуска ZooKeeper и домашнюю директорию:

useradd zookeeper -m

Задайте пароль и добавьте пользователя в группу sudo (при необходимости):

usermod --shell /bin/bash zookeeper
passwd zookeeper
usermod -aG sudo zookeeper

Создайте директорию для данных и назначьте владельца:

mkdir /zookeeper
chown -R zookeeper:zookeeper /zookeeper

Скачайте дистрибутив в /opt и распакуйте его (пример для 3.6.2):

cd /opt
wget https://mirrors.estointernet.in/apache/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz
tar -xvzf apache-zookeeper-3.6.2-bin.tar.gz

Переименуйте директорию и назначьте права:

mv apache-zookeeper-3.6.2-bin zookeeper
chown -R zookeeper:zookeeper /opt/zookeeper

Настройка ZooKeeper в автономном режиме

Создайте конфигурационный файл:

nano /opt/zookeeper/conf/zoo.cfg

Добавьте следующие строки:

tickTime=2500
dataDir=/zookeeper
clientPort=2181
maxClientCnxns=80

Сохраните файл и запустите ZooKeeper вручную для проверки:

cd /opt/zookeeper
bin/zkServer.sh start

Ожидаемый вывод при запуске:

ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

Проверьте, что ZooKeeper слушает на порту 2181:

ss -ntpl | grep 2181

Пример вывода (обратите внимание на процесс java):

LISTEN    0         50                       *:2181                   *:*        users:(("java",pid=12749,fd=53)) 

Подключитесь к локальному серверу ZooKeeper:

bin/zkCli.sh -server 127.0.0.1:2181

Ожидаемый вывод при подключении:

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: 127.0.0.1:2181(CONNECTED) 0] 

Выйдите из клиента командой:

quit

Остановите сервер ZooKeeper:

bin/zkServer.sh stop

Ожидаемый ответ при остановке:

ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED

Создание systemd‑сервиса для ZooKeeper

Создайте unit-файл systemd:

nano /etc/systemd/system/zookeeper.service

Вставьте содержимое:

[Unit]
Description=Zookeeper Daemon
Documentation=http://zookeeper.apache.org
Requires=network.target
After=network.target

[Service]
Type=forking
WorkingDirectory=/opt/zookeeper
User=zookeeper
Group=zookeeper
ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg
ExecStop=/opt/zookeeper/bin/zkServer.sh stop /opt/zookeeper/conf/zoo.cfg
ExecReload=/opt/zookeeper/bin/zkServer.sh restart /opt/zookeeper/conf/zoo.cfg
TimeoutSec=30
Restart=on-failure

[Install]
WantedBy=default.target

Примените изменения и назначьте владельца на директории:

systemctl daemon-reload
chown -R zookeeper:zookeeper /opt/zookeeper
chown -R zookeeper:zookeeper /zookeeper

Запустите сервис и включите автозапуск:

systemctl start zookeeper
systemctl enable zookeeper

Проверьте статус сервиса:

systemctl status zookeeper

Пример ожидаемого состояния:

? zookeeper.service - Zookeeper Daemon
     Loaded: loaded (/etc/systemd/system/zookeeper.service; disabled; vendor preset: enabled)
     Active: active (running) since Sun 2020-09-27 06:43:28 UTC; 8s ago
       Docs: http://zookeeper.apache.org
    Process: 13915 ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg (code=exited, status=0/SUCCESS)
   Main PID: 13946 (java)
      Tasks: 37 (limit: 4691)
     Memory: 50.6M
     CGroup: /system.slice/zookeeper.service
             13946 java -Dzookeeper.log.dir=/opt/zookeeper/bin/../logs -Dzookeeper.log.file=zookeeper-zookeeper-server-ubuntu2004.log -Dzook>

Sep 27 06:43:27 ubuntu2004 systemd[1]: Starting Zookeeper Daemon...
Sep 27 06:43:27 ubuntu2004 zkServer.sh[13915]: /usr/bin/java
Sep 27 06:43:27 ubuntu2004 zkServer.sh[13915]: ZooKeeper JMX enabled by default
Sep 27 06:43:27 ubuntu2004 zkServer.sh[13915]: Using config: /opt/zookeeper/conf/zoo.cfg
Sep 27 06:43:28 ubuntu2004 zkServer.sh[13915]: Starting zookeeper ... STARTED
Sep 27 06:43:28 ubuntu2004 systemd[1]: Started Zookeeper Daemon.

Важно

  • Запускайте ZooKeeper под непользовательской учётной записью (мы создали пользователя zookeeper).
  • Для продакшна используйте кластерный режим (несколько узлов), а не standalone.

Критерии приёмки

  • Сервис запускается и находится в состоянии active (running). Команда: systemctl status zookeeper — ожидается Active: active (running).
  • Порт 2181 слушается. Команда: ss -ntpl | grep 2181 — в выводе присутствует процесс java.
  • Удалённое подключение можно установить с помощью bin/zkCli.sh. Команда: bin/zkCli.sh -server 127.0.0.1:2181 — ожидается строка [zk: 127.0.0.1:2181(CONNECTED) 0].

Мини‑методология развертывания (быстро)

  1. Подготовьте ОС и откройте порты в firewall.
  2. Установите Java и проверьте версию.
  3. Создайте системного пользователя и директории для данных.
  4. Скачайте и распакуйте ZooKeeper; настройте zoo.cfg.
  5. Протестируйте ручной запуск; подключитесь через клиент.
  6. Создайте systemd‑unit, включите и проверьте автозапуск.
  7. Перейдите в кластерный режим и настройте безопасность.

Роль‑основанные чеклисты

  • Системный администратор:
    • Настроить пользователя zookeeper
    • Открыть и контролировать порт 2181 в firewall
    • Назначить права на /opt/zookeeper и /zookeeper
  • DevOps:
    • Автоматизировать установку через шаблон/Ansible
    • Настроить systemd и мониторинг (Prometheus/JMX)
  • Разработчик:
    • Проверить подключение клиентской библиотеки к 127.0.0.1:2181
    • Тестировать обработку ошибок при недоступности сервера
  • Инженер по безопасности:
    • Ограничить доступ по IP
    • Настроить аутентификацию и ACL при необходимости

Меры безопасности и рекомендации

  • Ограничьте доступ к порту 2181 межсетевыми правилами.
  • Не запускайте ZooKeeper от root.
  • Рассмотрите включение аутентификации (SASL) и ACL для критичных сред.
  • Регулярно делайте бэкапы директории dataDir (/zookeeper).
  • Настройте мониторинг метрик JVM и JMX.

Совместимость и миграция

  • Проверяйте поддерживаемые версии Java для выбранной версии ZooKeeper.
  • При обновлении версии ZooKeeper ознакомьтесь с официальными заметками о выпуске (release notes).
  • Для перехода с standalone на кластерную конфигурацию потребуется изменить zoo.cfg и добавить server.N записи и файлы myid в dataDir.

Однострочный глоссарий

  • ZooKeeper — распределённый сервис синхронизации и конфигурации.
  • tickTime — базовый интервал времени для синхронизации (в миллисекундах).
  • dataDir — директория для хранения данных ZooKeeper.
  • clientPort — порт для клиентских подключений (по умолчанию 2181).
  • systemd — менеджер служб в современных дистрибутивах Linux.

Примеры случаев, когда этот подход не подходит

  • Если вам нужен production‑кластер с высокой доступностью — не используйте standalone, разверните несколько узлов.
  • Если требуется шифрование трафика — дополнительно настройте TLS между клиентами и серверами.

Заключение

Вы успешно установили и настроили Apache ZooKeeper в автономном режиме на Ubuntu 20.04. Для промышленного использования переведите конфигурацию в кластерный режим, настройте безопасность и мониторинг.

Сводка действий (в порядке выполнения): установить Java → создать пользователя и директории → скачать и распаковать → настроить zoo.cfg → проверить запуск → создать systemd‑сервис → включить автозапуск.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро