[докер] развертывание контейнера Zookeeper
[докер] развертывание контейнера Zookeeper

Стандартное программное обеспечение ZooKeeper построено на базе Bitnami ZooKeeper. Текущая версия 3.9.2.

Вы можете установить и развернуть непосредственно с помощью инструмента развертывания Qinghub или вручную следовать следующему документу.

Что такое зоокипер

ZooKeeper — это служба распределенной координации с открытым исходным кодом, предназначенная в основном для решения проблем согласованности данных в распределенной архитектуре. Она является менеджером кластера, отслеживает состояние каждого узла в кластере и выполняет следующую разумную операцию на основе предоставленных отзывов. по узлу. В конечном итоге пользователям будет предоставлен простой и удобный интерфейс, а также система с эффективной производительностью и стабильными функциями.

контейнер подключения

Используя сеть контейнеров Docker, контейнеры приложений могут легко получить доступ к серверу Apache ZooKeeper, работающему внутри контейнера.

Контейнеры, подключенные к одной сети, могут взаимодействовать друг с другом, используя имя контейнера в качестве имени хоста.

Используйте командную строку

В этом примере мы создадим экземпляр клиента Apache ZooKeeper, который будет подключаться к экземпляру сервера, работающему в той же сети Docker, что и клиент.

Шаг 1: Создайте сеть
Язык кода:console
копировать
docker network create app-tier --driver bridge
Шаг 2. Запустите экземпляр сервера Apache ZooKeeper.

Используйте параметр --network app-tier команды docker, чтобы подключить контейнер Apache ZooKeeper к сетевому уровню приложений.

Язык кода:console
копировать
docker run -d --name zookeeper-server \
    --network app-tier \
    registry.cn-hangzhou.aliyuncs.com/qingcloudtech/zookeeper:latest
Шаг 3. Запустите экземпляр клиента Apache ZooKeeper.

Наконец, мы создаем новый экземпляр контейнера для запуска клиента Apache ZooKeeper и подключения к серверу, созданному на предыдущем шаге:

Язык кода:console
копировать
docker run -it --rm \
    --network app-tier \
    registry.cn-hangzhou.aliyuncs.com/qingcloudtech/zookeeper:latest zkCli.sh -server zookeeper-server:2181  get /

Использование файлов Docker Compose

Если не указано, Docker Compose автоматически настраивает новую сеть и подключает к ней все развернутые сервисы. Однако мы явно определим новую сеть с мостом с именем app-tier. В этом примере мы предполагаем, что вы хотите подключиться к серверу Apache ZooKeeper из собственного образа приложения, указанного в следующем фрагменте кода по имени службы myapp.

Язык кода:yaml
копировать
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 сервер Запустите контейнер:

Язык кода:console
копировать
docker-compose up -d

Конфигурация

Вы можете использовать следующие переменные среды настройки Конфигурация:

  • ZOO_PORT_NUMBER:Apache ZooKeeper Клиентский порт. Значение по умолчанию: 2181докер. run --name zookeeper -e ZOO_SERVER_ID=1 registry.cn-hangzhou.aliyuncs.com/qingcloudtech/zookeeper:latestИли измените файл docker-compose.yml:
  • ZOO_SERVER_ID: ensemble на сервере ИДЕНТИФИКАТОР. Значение по умолчанию: 1
  • ZOO_TICK_TIME: базовая единица времени (в миллисекундах), используемая Apache ZooKeeper для пульса. Значение по умолчанию: 2000
  • ZOO_PRE_ALLOC_SIZE': Размер блока транзакции бревнодокумента. Значение по умолчанию: 65536.
  • ZOO_SNAPCOUNT: количество транзакций, записанных в транзакции бревно до того, как был сделан снимок (и транзакция бревно перевернута). Значение по умолчанию: 100000
  • ZOO_INIT_LIMIT: период времени, в течение которого Apache ZooKeeper должен быть подключен к лидеру. Значение по умолчанию: 10
  • ZOO_SYNC_LIMIT: насколько далеко сервер находится от лидера. Значение по умолчанию: 5
  • ZOO_MAX_CNXNS: лимит можно комбинировать с Apache ZooKeeper сервер Общее количество одновременных установленных подключений. Измените его настройки на 0 Ограничения можно полностью снять. Значение по умолчанию: 0
  • ZOO_MAX_CLIENT_CNXNS: ограничивает количество одновременных подключений, которые может установить один клиент, до одного члена ансамбля Apache ZooKeeper. Значение по умолчанию: 60
  • ZOO_4LW_COMMANDS_WHITELIST: Список команд 4LW из белого списка. По умолчанию: срвр, мнтр.
  • ZOO_SERVERS: запятая、Список серверов, разделенный пробелом или точкой с запятой. Пример: зоопарк1:2888:3888.、zoo2:2888:3888 или если указан сервер ID Зоопарк1:2888:3888::1, зоопарк2:2888:3888::2. Значение по умолчанию: Нет значения по умолчанию.
  • ZOO_CLIENT_USER: пользователь, который будет проходить аутентификацию с помощью клиента Apache ZooKeeper. Значение по умолчанию: Нет значения по умолчанию.
  • ZOO_CLIENT_PASSWORD: пароль, который будет использоваться для аутентификации клиента Apache ZooKeeper. Значение по умолчанию: Нет значения по умолчанию.
  • ZOO_CLIENT_PASSWORD_FILE: абсолютный путь к файлу, содержащему пароль, используемый клиентами Apache ZooKeeper для аутентификации. Значение по умолчанию: Нет значения по умолчанию.
  • ZOO_SERVER_USERS: список пользователей, разделенных запятой, точкой с запятой или пробелом. Пример: Пользователь1, Пользователь2, Администратор. Значение по умолчанию: нет значения по умолчанию
  • ZOO_SERVER_PASSWORDS: список паролей, разделенных запятой, точкой с запятой или пробелом, назначенных пользователю во время создания. Пример: pass4user1, pass4user2, pass4admin. Значение по умолчанию: нет значения по умолчанию
  • ZOO_SERVER_PASSWORDS_FILE: абсолютный путь к файлу, содержащему список паролей, разделенных запятой, точкой с запятой или пробелом, которые будут назначаться пользователям во время создания. Пример: pass4user1, pass4user2, pass4admin. Значение по умолчанию: нет значения по умолчанию
  • ZOO_ENABLE_AUTH: включить аутентификацию Apache ZooKeeper. Он использует SASL/Digest-MD5. Значение по умолчанию: нет
  • ZOO_RECONFIG_ENABLED: включить динамическую переконфигурацию Apache ZooKeeper. Значение по умолчанию: нет
  • ZOO_LISTEN_ALLIPS_ENABLED: прослушивать соединения от одноранговых узлов на всех доступных IP-адресах. Значение по умолчанию: нет
  • ZOO_AUTOPURGE_INTERVAL: интервал времени (в часах) для запуска задачи автоматической очистки. Установите положительное целое число (1 и выше)включить автоматическую очистку старых снимковибревнодокумент。значение по умолчанию:0
  • ZOO_MAX_SESSION_TIMEOUT: максимальное время ожидания сеанса, разрешенное для согласования клиента (в миллисекундах). Значение по умолчанию: 40000
  • ZOO_AUTOPURGE_RETAIN_COUNT: если включена автоматическая очистка, Apache ZooKeeper воля dataDir и dataLogDir Последние снимки и соответствующие транзакции сохраняются до этого числа, а остальные удаляются. Минимальное значение 3. Значение по умолчанию: 3
  • ZOO_HEAP_SIZE:Java Параметры кучи (Xmx и XM) размер (в MB как единицы). Если применить Конфигурацию Xmx и Xms, эта переменная среды JVMFLAGS игнорируется. Значение по умолчанию: 1024
  • ZOO_ENABLE_PROMETHEUS_METRICS: предоставляет метрики Prometheus. Значение по умолчанию: нет
  • ZOO_PROMETHEUS_METRICS_PORT_NUMBER:Jetty сервер будет обнародован Prometheus Порт индикатора. По умолчанию: 7000
  • ALLOW_ANONYMOUS_LOGIN: если установлено значение true, разрешается принимать соединения от неаутентифицированных пользователей. Значение по умолчанию: нет
  • ZOO_LOG_LEVEL: уровень Apache ZooKeeper. Доступные уровни: ВСЕ, ОТЛАДКА, ИНФОРМАЦИЯ, ПРЕДУПРЕЖДЕНИЕ, ОШИБКА, ФАТАЛ, ВЫКЛ, СЛЕД. Значение по умолчанию: ИНФОРМАЦИЯ
  • JVMFLAGS: JVMFLAGS по умолчанию для процесса Apache ZooKeeper. Значение по умолчанию: нет значения по умолчанию
  • ZOO_TLS_CLIENT_ENABLE: включить tls для связи с клиентом. Значение по умолчанию: ложь
  • ZOO_TLS_PORT_NUMBER: TLS-порт Zookeeper. Значение по умолчанию: 3181.
  • ZOO_TLS_CLIENT_KEYSTORE_FILE: Файл хранилища ключей: По умолчанию: Нет по умолчанию.
  • ZOO_TLS_CLIENT_KEYSTORE_PASSWORD: пароль файла хранилища ключей. Это может быть переменная среды. Он будет оценен bash. Значение по умолчанию: нет значения по умолчанию
  • ZOO_TLS_CLIENT_TRUSTSTORE_FILE: Файл TrustStore: По умолчанию: Нет по умолчанию.
  • ZOO_TLS_CLIENT_TRUSTSTORE_PASSWORD: пароль файла TrustStore. Это может быть переменная среды. Он будет оценен bash. Значение по умолчанию: нет значения по умолчанию
  • ZOO_TLS_CLIENT_AUTH: определяет параметры аутентификации TLS-соединений от клиентов. Доступные значения: нет, хочу, нужно. По умолчанию: нужно
  • ZOO_TLS_QUORUM_ENABLE: включить tls для связи кворума. Значение по умолчанию: ложь
  • ZOO_TLS_QUORUM_KEYSTORE_FILE: Файл хранилища ключей: По умолчанию: Нет по умолчанию.
  • ZOO_TLS_QUORUM_KEYSTORE_PASSWORD: пароль файла хранилища ключей. Это может быть переменная среды. Он будет оценен bash. Значение по умолчанию: нет значения по умолчанию
  • ZOO_TLS_QUORUM_TRUSTSTORE_FILE: Файл TrustStore: По умолчанию: Нет по умолчанию.
  • ZOO_TLS_QUORUM_TRUSTSTORE_PASSWORD: пароль файла TrustStore. Это может быть переменная среды. Он будет оценен bash. Значение по умолчанию: нет значения по умолчанию
  • ZOO_TLS_QUORUM_CLIENT_AUTH: определяет параметры аутентификации TLS-соединений от клиентов. Доступные значения: нет, хочу, нужно. По умолчанию: нужно
  • ZOO_ENABLE_ADMIN_SERVER: Включить сервер администрирования. Значение по умолчанию: да
  • ZOO_ADMIN_SERVER_PORT_NUMBER: порт управления. По умолчанию: 8080
  • ZOO_PEER_TYPE: тип узла Zookeeper. Значение по умолчанию: нет значения по умолчанию
Язык кода:yaml
копировать
services:
  zookeeper:
  ...
    environment:
      - ZOO_SERVER_ID=1
  ...

Apache ZooKeeper Конфигурация

Конфигурация образа хранится в каталоге /opt/bitnami/zookeeper/conf/.

Язык кода:console
копировать
docker run --name zookeeper -v /path/to/zoo.cfg:/opt/bitnami/zookeeper/conf/zoo.cfg  registry.cn-hangzhou.aliyuncs.com/qingcloudtech/zookeeper:latest

После этого ваши изменения будут учтены в поведении сервера.

Шаг 1. Запустите образ Apache ZooKeeper.

Запустите контейнер Apache ZooKeeper из каталога установки хоста.

Язык кода:console
копировать
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:

Язык кода:yaml
копировать
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
Нет. 2: Редактировать конфигурацию

используйте Edit Configuration на своем хосте с помощью вашего любимого редактора.

Язык кода:console
копировать
vi /path/to/zoo.cfg
Нет. 3 Шаг: Перезагрузить Apache ZooKeeper

Изменять Конфигурацияназад,сновазапускать Apache ZooKeeper контейнер для вступления изменений в силу.

Язык кода:console
копировать
docker restart zookeeper

Или используйте Docker Compose:

Язык кода:console
копировать
docker-compose restart zookeeper

Безопасность

Аутентификацию на основе SASL/Digest-MD5 можно легко включить, передав переменную среды ZOO_ENABLE_AUTH. При включении аутентификации Apache ZooKeeper вам также необходимо передать список пользователей и пароли, которые могут войти в систему.

Примечание. Включите аутентификацию с помощью инструмента CLI zkCli.sh. ZOO_CLIENT_USER Поэтому также необходимо установить переменную среды ZOO_CLIENT_PASSWORD.

Язык кода:console
копировать
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:

Язык кода:yaml
копировать
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

Это можно передать, используя следующие переменные среды 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.

Язык кода:console
копировать
docker network create app-tier --driver bridge
шаг1:создавать Нет.узел

Нет. Один шаг — создать пример Apache ZooKeeper.

Язык кода:console
копировать
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
шаг2:создавать Нет.

Далее мы запускаем новый контейнер Apache ZooKeeper.

Язык кода:console
копировать
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.

Язык кода:console
копировать
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 монолит можно настроить с помощью:

Язык кода:yaml
копировать
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

Запуск Apache ZooKeeper с использованием TLS

Язык кода:console
копировать
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

бревно

Язык кода:console
копировать
docker logs zookeeper

Или используйте Docker Compose:

Язык кода:console
копировать
docker-compose logs zookeeper
boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода