Я новичок в Kafka и немного растерялся.
До сих пор я создал две docker машины, менеджера и рабочего с этими командами:
docker-machine create manager
docker-machine create worker1
Я добавил эти два узла в docker рой.
docker@manager:~$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
6bmovp3hr0j2w5irmexvvjgzq * manager Ready Active Leader 19.03.5
mtgbd9bg8d6q0lk9ycw10bxos worker1 Ready Active 19.03.5
Я хочу создать кластер кафки внутри docker роя. Мой docker-compose.yml
выглядит следующим образом
version: '3.2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka:latest
ports:
- target: 9094
published: 9094
protocol: tcp
mode: host
environment:
HOSTNAME_COMMAND: "hostname | awk -F'-' '{print $$2}'"
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
KAFKA_ADVERTISED_LISTENERS: INSIDE://:9092,OUTSIDE://_{HOSTNAME_COMMAND}:9094
KAFKA_LISTENERS: INSIDE://:9092,OUTSIDE://:9094
KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
volumes:
- /var/run/docker.sock:/var/run/docker.sock
, где hostname | awk -F'-' '{print $$2}'
команда возвращает manager
из worker
.
Затем я выполняю развертывание с помощью команды docker stack deploy -c docker-compose.yml kafka
, которая возвращает
Creating network kafka_default
Creating service kafka_zookeeper
Creating service kafka_kafka
Я проверил, что служба запущена с docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
ttprq3ak98om kafka_kafka replicated 0/1 wurstmeister/kafka:latest
vxdhkaonrbpe kafka_zookeeper replicated 0/1 wurstmeister/zookeeper:latest *:2181->2181/tcp
, а затем масштабирую службу с docker service scale kafka_kafka=2
. Когда я выполняю docker service ps kafka_kafka
, я получаю
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
ydn64mwvlasr kafka_kafka.1 wurstmeister/kafka:latest worker1 Running Running 27 minutes ago *:9094->9094/tcp
shkpd2jv6s29 kafka_kafka.2 wurstmeister/kafka:latest manager Running Running 27 minutes ago *:9094->9094/tcp
Пока у меня есть один ZooKeeper и два брокера Kafka. Один брокер на менеджера и один на работника. Это означает, что брокер на рабочем сервере реплицирует брокер на диспетчере?
Также мне интересно, как запускать команды Kafka на этом шаге. Предположим, что я хочу создать топи c. Как мне этого добиться? Я должен загрузить бинарный файл Кафки отсюда: https://kafka.apache.org/downloads? И если ответ да, я должен страт сервер Zookeeper? Это уже не работает?