带有Docker Swarm的Kafka-如何执行Kafka命令

问题描述 投票:0回答:2

我是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 swarm中创建一个kafka集群。我的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}'命令返回managerworker

然后我使用返回的命令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命令。假设我要创建一个主题。我该如何实现?我必须从这里下载Kafka二进制文件:https://kafka.apache.org/downloads?如果答案是肯定的,我是否必须将Zookeeper服务器分层?它还没有运行吗?

docker apache-kafka dockerfile docker-swarm docker-machine
2个回答
0
投票

要在容器内运行kafka命令,您首先需要获取kafka容器ID

$ docker ps -a  
  CONTAINER ID                 IMAGE  
   1239075412         wurstmeister/kafka:latest  

现在获取此卡夫卡的容器ID(在您的情况下将有所不同)>>

$ docker exec -it 1239075412 sh  

日志存在于以下文件夹中

# cd kafka/kafka-logs-1239075412  

kafka命令将出现在此容器类型kafka-中,然后两次按Tab键您将获得所有kafka命令来创建topics

等。

0
投票

这意味着工作人员上的经纪人复制经理上的经纪人?

© www.soinside.com 2019 - 2024. All rights reserved.