Могу ли я установить объявленный порт из назначенного порта, масштабируя kafka с помощью docker compose? - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь масштабировать kafka с помощью docker compose.

мой docker-compose.yaml выглядит примерно так: -

version: '3'
services:
  kafka:
    image: wurstmeister/kafka
    ports:
      - "9092:9092"
    environment:
      - KAFKA_ADVERTISED_HOST_NAME=127.0.0.1
      - KAFKA_ADVERTISED_PORT=9092
      - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
    depends_on:
      - zookeeper
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
    environment:
      - KAFKA_ADVERTISED_HOST_NAME=zookeeper

И я пытаюсь увеличить его с помощью

$docker-compose scale kafka=3

Проблема в том, что порты контейнеров должны быть уникальными, поэтому я изменил раздел портов следующим образом: -

ports:
      - "9092-9095:9092"

однако теперь у меня нет возможности узнатькакой порт был назначен до времени выполнения, есть ли способ получить назначенные порты и назначить его переменной среды KAFKA_ADVERTISED_PORT?

Я видел довольно много примеров, которые определяют 3 отдельных сервиса для каждого сервиса kafka,что мне не очень нравится, так как это нарушает принцип СУХОГО.

1 Ответ

0 голосов
/ 24 сентября 2019

Вам нужно повторить себя, потому что вы не можете редактировать переменные окружения во время операции масштабирования.Если вы работаете на одной машине, вы не можете рекламировать 127.0.0.1 и один и тот же порт несколько раз, как вы описали.

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

Если вы действительно не хотите «повторять себя», именно здесь в шаблоне может помочь таблица рулевого управления Kubernetes.из нескольких сервисов с отслеживанием состояния


Помимо: этот контейнер Zookeeper не использует объявленные имена или любые переменные, начинающиеся с KAFKA

И вы должны объявить IP внешнего хоста, а не 127.0.0.1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...