zoukankan      html  css  js  c++  java
  • kafka docker-composer.yml

    使用Docker快速搭建Kafka开发环境

    96 
    表现力 
     0.5 2018.05.04 03:00* 字数 740 阅读 25240评论 1

    Docker在很多时候都可以帮助我们快速搭建想要的开发环境,免去了很多安装配置上的麻烦。在涉及到Apache Kafka的快速demo时,使用Docker Hub上提供的镜像也是一个很好的选择。

    Kafka & ZooKeeper Docker镜像

    spotify/kafka

    在demo时,很多情况下我们并不追求Kafka与ZooKeeper的区隔,来自spotify的kafka镜像同时包含了kafka与zookeeper,因此基本上可以“随装随用”。
    但已经较长时间没有维护,Kafka版本仍然停留在0.10。对需要使用1.0版本的同仁已经不适合了。

    landoop/fast-data-dev

    提供了一整套包括Kafka,ZooKeeper,Schema Registry,,Kafka-Connect等在内的多种开发工具和Web UI监视系统。基本上是我见过的最强大的开发环境。尤其是对于Kafka Connect的支持,包含了MongoDB,ElasticSearch,Twitter等超过20种Connector,并且提供了通过REST API提交Connector配置的Web UI。
    基本是我测试Kafka Connect的首选。

    wurstmeister/kafka

    维护较为频繁的一个Kafka镜像。只包含了Kafka,因此需要另行提供ZooKeeper,推荐使用同一作者提交的wurstmeister/zookeeper
    现在已经提供较新的1.1.0版本。

    搭建开发环境

    1 ZooKeeper 1 Kafka

    这里以我自己最常用的wurstmeister/kafka为例,使用docker-compose运行一个只有一个ZooKeeper node和一个Kafka broker的开发环境:

    version: '2'
    
    services:
      zoo1:
        image: wurstmeister/zookeeper
        restart: unless-stopped
        hostname: zoo1
        ports:
          - "2181:2181"
        container_name: zookeeper
    
      # kafka version: 1.1.0
      # scala version: 2.12
      kafka1:
        image: wurstmeister/kafka
        ports:
          - "9092:9092"
        environment:
          KAFKA_ADVERTISED_HOST_NAME: localhost
          KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181"
          KAFKA_BROKER_ID: 1
          KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
          KAFKA_CREATE_TOPICS: "stream-in:1:1,stream-out:1:1"
        depends_on:
          - zoo1
        container_name: kafka
    

    这里利用了wurstmeister/kafka提供的环境参数KAFKA_CREATE_TOPICS使Kafka运行后自动创建topics。

    1 ZooKeeper 2 Kafka

    ZooKeeper的部分与上个例子一样,需要调整的是Kafka部分。

    这里将第一个Kafka broker命名为kafka1,KAFKA_ADVERTISED_HOST_NAME参数设为kafka1,KAFKA_ADVERTISED_PORT设为9092。

    对于第二个broker,相较第一个broker所有kakfka1的部分改为kafka2,包括service name和coontainer name。同时KAFKA_BROKER_ID设为2,KAFKA_ADVERTISED_PORT设为9093。

    需要注意的是,当有不止一个kafka broker时,这里的hostname不能再设为localhost。建议设为本机IP地址。以Mac为例,使用ipconfig getifaddr en0指令来获取。

    具体的docker-compose.yml文件内容如下:

      # ZooKeeper部分不变
    
      kafka1:
        image: wurstmeister/kafka
        ports:
          - "9092:9092"
        environment:
          KAFKA_ADVERTISED_HOST_NAME: 192.168.1.2
          KAFKA_ADVERTISED_PORT: 9092
          KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181"
          KAFKA_BROKER_ID: 1
          KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
          KAFKA_CREATE_TOPICS: "stream-in:2:1,stream-out:2:1"
        depends_on:
          - zoo1
        container_name: kafka1
    
    
      kafka2:
        image: wurstmeister/kafka
        ports:
          - "9093:9092"
        environment:
          KAFKA_ADVERTISED_HOST_NAME: {ipconfig getifaddr en0指令的结果}
          KAFKA_ADVERTISED_PORT: 9093
          KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181"
          KAFKA_BROKER_ID: 2
          KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
        depends_on:
          - zoo1
        container_name: kafka2
    

    与容器内的开发环境交互

    可以使用docker exec命令直接调用kafka容器内的脚本来进行创建/删除topic,启动console producer等等操作。

    如果本地存有与容器内相同的Kafka版本文件,也可以直接使用本地脚本文件。如上述docker-compose.yml文件所示,kafka1的hostname即是kafka1,端口为9092,通过kafka1:9092就可以连接到容器内的Kafka服务。

    列出所有topics (在本地kafka路径下)
    $ bin/kafka-topics.sh --zookeeper localhost:2181 --list

    列出所有Kafka brokers
    $ docker exec zookeeper bin/zkCli.sh ls /brokers/ids

     
  • 相关阅读:
    图像的仿射变换
    计算机视觉五大技术介绍
    图像处理与Python实现(岳亚伟)笔记五——图像特征提取
    图像处理与Python实现(岳亚伟)笔记四——频域滤波
    图像处理与Python实现(岳亚伟)笔记三——空间滤波
    python 求矩阵的特征值和特征向量
    python + numpy + np.polyfit()(最小二乘多项式拟合曲线)
    Python求定积分+处理can‘t convert expression to float错误
    python reduce() 函数
    python中的sum求和函数
  • 原文地址:https://www.cnblogs.com/leigepython/p/11187680.html
Copyright © 2011-2022 走看看