[докер] развертывание контейнера 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
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose