Установка ZooKeeper в Unix/Linux

Установка ZooKeeper в Unix/Linux

ZooKeeper (Apache zookeeper)— это служба, которая выполняет роль распределенного сервиса конфигурирования и синхронизации. Если копнуть дальше, —  это распределенное key/value сторедж с имеющимися свойствами:

  • Пространство ключей образовывает иерархию (нечто подобное как у файловой системе);
  • Значения могут содержаться в любом узле иерархии, а не только в листьях (как если бы файлы одновременно были бы и каталогами), узел иерархии называется znode;
  • Между  сервером и клиентом имеется двухнаправленная связь (клиент может подписываться как изменение конкретного значения или части иерархии);
  • Возможно создать временную пару ключ/значение, которая существует, пока клиент, её создавший, подключен к кластеру;
  • Все данные должны помещаться в память;
  • Устойчивость к смерти некритического количества узлов кластера.

Установка ZooKeeper в Unix/Linux

Перед тем как перейдем к самой установки zookeeper, нужно установить Java на сервер. Я сейчас приведу несколько полезных инструкций по этой теме:

Установка JAVA (JDK) на CentOS/RHEL/Fedora

Установка JAVA 9 (JDK9) на Debian/Ubuntu/LinuxMint

Установка Java на Debian/Ubuntu/Mint

Узнать размер Java Heap Memory Size

Установка переменных JAVA_HOME / PATH в Linux

И после этого действия, переходим к установке утилиты.

Установка ZooKeeper на CentOS/RedHat/Fedora

И так, первое что сделаю — обновлю ОС:

# yum update -y && yum upgrade -y

Можно установить репозиторий и с него установить zookeeper. Но т.к я не особо доверяю сторонним репозиториям, по этому, я установлю по другом ( установка внизу).

Установка ZooKeeper на Debian/Ubuntu

Обновить данные о репозиториях

$ sudo apt-get update -y

И:

$ sudo apt-get upgrade -y

Можно установить zookeeper с репозитория:

# apt-get install zookeeperd -y

PS: Такую настройку не производил.

Установка ZooKeeper для других Unix/Linux

Приведу пример установки на CentOS. И так, перейдем в папку и скачаем последний стабильный релиз утилиты ( на момент написания статьи):

$ cd /usr/local/src &&  wget http://apache-mirror.rbc.ru/pub/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz

После скачивания, распаковываем архив:

$ tar -zxf zookeeper-*.tar.gz -C /usr/local

И переименуем папку ( для удобства использования):

# mv -f /usr/local/zookeeper-* /usr/local/zookeeper

Для проекта, необходимо создать папку ( будет использоваться для сохранения данных):

$ mkdir -p /home/zookeeper/data

Установка завершена, приступим к настройке!

Настройка ZooKeeper в Unix/Linux

Настройка zookeeper, очень простая и сейчас вы в этом убедитесь. В папке conf, имеется простой конфигурационный файл, возьмем его и скопируем:

$ cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg

Открываем файл с настройками:

# vim /usr/local/zookeeper/conf/zoo.cfg

Приводим его к следующему виду:

tickTime=2000
initLimit=5
syncLimit=2
dataDir=/home/zookeeper/data
clientPort=2181

Запускаем сервер:

$ /usr/local/zookeeper/bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

И выполняем проверку:

$ /usr/local/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: standalone

Видим, что все запустилось и работает хорошо. И сейчас, стоит запустить еще один сервис:

$ /usr/local/zookeeper/bin/zkCli.sh

И еще, можно проверить работу самого zookeeper следующим образом:

$ echo ruok | nc 127.0.0.1 2181

imok

Настройка завершена.

PS: Можно для удобства использования, прописать ENV переменные ( местонахождение скриптов для запуска zookeeper).  Например, открываем bashrc ( можно zsh, если используете ее):

$ vim ~/.bash_profile

И прописываем:

export ZOOKEEEPER_HOME=/usr/local/zookeeper:$ZOOKEEEPER_HOME/bin

Чтобы изменения вступили в силу, выполняем:

$ . ~/.bash_profile

Или:

$ source ~/.bash_profile

Использование упростилось до:

$ zkServer.sh status

Как по мне, довольно стоящее решение.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.