Стандартное программное обеспечение ZooKeeper построено на базе Bitnami ZooKeeper. Текущая версия 3.9.2.
Вы можете установить и развернуть непосредственно с помощью инструмента развертывания Qinghub или вручную следовать следующему документу.
ZooKeeper — это служба распределенной координации с открытым исходным кодом, предназначенная в основном для решения проблем согласованности данных в распределенной архитектуре. Она является менеджером кластера, отслеживает состояние каждого узла в кластере и выполняет следующую разумную операцию на основе предоставленных отзывов. по узлу. В конечном итоге пользователям будет предоставлен простой и удобный интерфейс, а также система с эффективной производительностью и стабильными функциями.
Используя сеть контейнеров Docker, контейнеры приложений могут легко получить доступ к серверу Apache ZooKeeper, работающему внутри контейнера.
Контейнеры, подключенные к одной сети, могут взаимодействовать друг с другом, используя имя контейнера в качестве имени хоста.
В этом примере мы создадим экземпляр клиента Apache ZooKeeper, который будет подключаться к экземпляру сервера, работающему в той же сети Docker, что и клиент.
docker network create app-tier --driver bridge
Используйте параметр --network app-tier команды docker, чтобы подключить контейнер Apache ZooKeeper к сетевому уровню приложений.
docker run -d --name zookeeper-server \
--network app-tier \
registry.cn-hangzhou.aliyuncs.com/qingcloudtech/zookeeper:latest
Наконец, мы создаем новый экземпляр контейнера для запуска клиента Apache ZooKeeper и подключения к серверу, созданному на предыдущем шаге:
docker run -it --rm \
--network app-tier \
registry.cn-hangzhou.aliyuncs.com/qingcloudtech/zookeeper:latest zkCli.sh -server zookeeper-server:2181 get /
Если не указано, Docker Compose автоматически настраивает новую сеть и подключает к ней все развернутые сервисы. Однако мы явно определим новую сеть с мостом с именем app-tier. В этом примере мы предполагаем, что вы хотите подключиться к серверу Apache ZooKeeper из собственного образа приложения, указанного в следующем фрагменте кода по имени службы myapp.
version: '2'
networks:
app-tier:
driver: bridge
services:
zookeeper:
image: 'registry.cn-hangzhou.aliyuncs.com/qingcloudtech/zookeeper:latest'
networks:
- app-tier
myapp:
image: 'YOUR_APPLICATION_IMAGE'
networks:
- app-tier
важный: Заменить заполнитель YOUR_APPLICATION_IMAGE В контейнере приложения используйте имя хоста Zookeeper для подключения к Apache ZooKeeper сервер Запустите контейнер:
docker-compose up -d
Вы можете использовать следующие переменные среды настройки Конфигурация:
services:
zookeeper:
...
environment:
- ZOO_SERVER_ID=1
...
Конфигурация образа хранится в каталоге /opt/bitnami/zookeeper/conf/.
docker run --name zookeeper -v /path/to/zoo.cfg:/opt/bitnami/zookeeper/conf/zoo.cfg registry.cn-hangzhou.aliyuncs.com/qingcloudtech/zookeeper:latest
После этого ваши изменения будут учтены в поведении сервера.
Запустите контейнер Apache ZooKeeper из каталога установки хоста.
docker run --name zookeeper -v /path/to/zoo.cfg:/opt/bitnami/zookeeper/conf/zoo.cfg registry.cn-hangzhou.aliyuncs.com/qingcloudtech/zookeeper:latest
Или используйте Docker Compose:
version: '2'
services:
zookeeper:
image: 'registry.cn-hangzhou.aliyuncs.com/qingcloudtech/zookeeper:latest'
ports:
- '2181:2181'
volumes:
- /path/to/zoo.cfg:/opt/bitnami/zookeeper/conf/zoo.cfg
используйте Edit Configuration на своем хосте с помощью вашего любимого редактора.
vi /path/to/zoo.cfg
Изменять Конфигурацияназад,сновазапускать Apache ZooKeeper контейнер для вступления изменений в силу.
docker restart zookeeper
Или используйте Docker Compose:
docker-compose restart zookeeper
Аутентификацию на основе SASL/Digest-MD5 можно легко включить, передав переменную среды ZOO_ENABLE_AUTH. При включении аутентификации Apache ZooKeeper вам также необходимо передать список пользователей и пароли, которые могут войти в систему.
Примечание. Включите аутентификацию с помощью инструмента CLI zkCli.sh. ZOO_CLIENT_USER Поэтому также необходимо установить переменную среды ZOO_CLIENT_PASSWORD.
docker run -it -e ZOO_ENABLE_AUTH=yes \
-e ZOO_SERVER_USERS=user1,user2 \
-e ZOO_SERVER_PASSWORDS=pass4user1,pass4user2 \
-e ZOO_CLIENT_USER=user1 \
-e ZOO_CLIENT_PASSWORD=pass4user1 \
registry.cn-hangzhou.aliyuncs.com/qingcloudtech/zookeeper
Или измените файл docker-compose.yml:
services:
zookeeper:
...
environment:
- ZOO_ENABLE_AUTH=yes
- ZOO_SERVER_USERS=user1,user2
- ZOO_SERVER_PASSWORDS=pass4user1,pass4user2
- ZOO_CLIENT_USER=user1
- ZOO_CLIENT_PASSWORD=pass4user1
...
Это можно передать, используя следующие переменные среды Apache ZooKeeper Docker Изображение для простой настройки Apache ZooKeeper ( https://zookeeper.apache.org/doc/r3.1.2/zookeeperAdmin.html ) Кластер:
ZOO_SERVERS: запятая, список серверов, разделенный пробелом или точкой с запятой. Это можно сделать с указанием коллекции или без нее. сервере ID завершенный. Значения по умолчанию нет. пример:
Нет идентификатора сервера - Zoo1:2888:3888,zoo2:2888:3888
С идентификатором сервера — Zoo1:2888:3888::1,zoo2:2888:3888::2
НетсерверIDи наблюдатель-zoo1:2888:3888,zoo2:2888:3888:observer
ссервер ID и наблюдатель - Zoo1:2888:3888::1,zoo2:2888:3888:observer::2
Для надежной службы Apache ZooKeeper вам следует развернуть Apache ZooKeeper в кластере, называемом ансамблем. Услуга доступна до тех пор, пока работает большинство узлов. Поскольку Apache ZooKeeper требует большинства, лучше всего использовать нечетное количество машин. Например, Apache ZooKeeper с четырьмя компьютерами может справиться с сбоем только одной машины; если выходят из строя две машины, остальные две машины не составляют большинства. Однако при наличии пяти машин Apache ZooKeeper может справиться с сбоем двух машин.
Вы должны использовать 0.0.0.0 В качестве хоста для сервера. Точнее, если идентификатор Zookeeper1контейнерзапуска равен 1, то переменная среды ZOO_SERVERS должна быть 0.0.0.0:2888:3888, Zookeeper2:2888:3888, Zookeeper3:2888:3888, или если идентификатор Zookeeperсервера не является последовательным. Тогда вам нужно указать их 0.0.0.0:2888:3888::2,zookeeper2:2888:3888::4.zookeeper3:2888:3888::6
см. ниже:
Создайте сеть Docker, чтобы они были видны друг другу по имени контейнера Docker.
docker network create app-tier --driver bridge
Нет. Один шаг — создать пример Apache ZooKeeper.
docker run --name zookeeper1 \
--network app-tier \
-e ZOO_SERVER_ID=1 \
-e ZOO_SERVERS=0.0.0.0:2888:3888,zookeeper2:2888:3888,zookeeper3:2888:3888 \
-p 2181:2181 \
-p 2888:2888 \
-p 3888:3888 \
registry.cn-hangzhou.aliyuncs.com/qingcloudtech/zookeeper:latest
Далее мы запускаем новый контейнер Apache ZooKeeper.
docker run --name zookeeper2 \
--network app-tier \
-e ZOO_SERVER_ID=2 \
-e ZOO_SERVERS=zookeeper1:2888:3888,0.0.0.0:2888:3888,zookeeper3:2888:3888 \
-p 2181:2181 \
-p 2888:2888 \
-p 3888:3888 \
registry.cn-hangzhou.aliyuncs.com/qingcloudtech/zookeeper:latest
####шаг3:создавать Нет.Три узла
Затем мы запускаем еще один новый контейнер Apache ZooKeeper.
docker run --name zookeeper3 \
--network app-tier \
-e ZOO_SERVER_ID=3 \
-e ZOO_SERVERS=zookeeper1:2888:3888,zookeeper2:2888:3888,0.0.0.0:2888:3888 \
-p 2181:2181 \
-p 2888:2888 \
-p 3888:3888 \
registry.cn-hangzhou.aliyuncs.com/qingcloudtech/zookeeper:latest
Кластер Apache ZooKeeper. Вы можете добавлять/удалять подчиненные устройства для расширения кластера без простоев.
С помощью Docker Compose монолит можно настроить с помощью:
version: '2'
services:
zookeeper1:
image: 'registry.cn-hangzhou.aliyuncs.com/qingcloudtech/zookeeper:latest'
ports:
- '2181'
- '2888'
- '3888'
volumes:
- /path/to/zookeeper-persistence:/bitnami/zookeeper
environment:
- ZOO_SERVER_ID=1
- ZOO_SERVERS=0.0.0.0:2888:3888,zookeeper2:2888:3888,zookeeper3:2888:3888
zookeeper2:
image: 'registry.cn-hangzhou.aliyuncs.com/qingcloudtech/zookeeper:latest'
ports:
- '2181'
- '2888'
- '3888'
volumes:
- /path/to/zookeeper-persistence:/bitnami/zookeeper
environment:
- ZOO_SERVER_ID=2
- ZOO_SERVERS=zookeeper1:2888:3888,0.0.0.0:2888:3888,zookeeper3:2888:3888
zookeeper3:
image: 'registry.cn-hangzhou.aliyuncs.com/qingcloudtech/zookeeper:latest'
ports:
- '2181'
- '2888'
- '3888'
volumes:
- /path/to/zookeeper-persistence:/bitnami/zookeeper
environment:
- ZOO_SERVER_ID=3
- ZOO_SERVERS=zookeeper1:2888:3888,zookeeper2:2888:3888,0.0.0.0:2888:3888
docker run --name zookeeper \
-v /path/to/domain.key:/bitnami/zookeeper/certs/domain.key:ro
-v /path/to/domain.crs:/bitnami/zookeeper/certs/domain.crs:ro
-e ALLOW_EMPTY_PASSWORD=yes \
-e ZOO_TLS_CLIENT_ENABLE=yes \
-e ZOO_TLS_CLIENT_KEYSTORE_FILE=/bitnami/zookeeper/certs/domain.key\
-e ZOO_TLS_CLIENT_TRUSTSTORE_FILE=/bitnami/zookeeper/certs/domain.crs\
registry.cn-hangzhou.aliyuncs.com/qingcloudtech/zookeeper:latest
docker logs zookeeper
Или используйте Docker Compose:
docker-compose logs zookeeper