
Установка 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
Как по мне, довольно стоящее решение.