使用Docker搭建Apache Kafka环境的详细过程

 更新时间:2022年10月19日 11:27:03   作者:梦想画家  
这篇文章主要介绍了使用Docker搭建Apache Kafka环境,本文使用Docker技术创建单个Kafka节点和Kafka集群环境,并且使用可视化工具连接服务查看代理服务器的配置信息,需要的朋友可以参考下

Docker是最受欢迎的容器引擎之一,软件行业用于创建、打包、部署应用。本教程学习如何使用Docker搭建Apache Kafka。

安装单个节点

安装单节点Kafka代理需能够满足本地开发需求,我们首先学习单节点安装。

docker-compose.yml 配置

使用Apache Kafka服务,首先需要启动Zookeeper 服务。这可以通过在docker-compose.yml 文件配置依赖实现,但要确保Zookeeper服务总是在Kafka服务之前启动,反之zookeeper最后停止。

首先创建docker-compose.yml文件,增加两个服务:zookeeper和kafka:

version: '2'
services:
  zookeeper:
    image: confluentinc/cp-zookeeper:latest
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
    ports:
      - 22181:2181
  
  kafka:
    image: confluentinc/cp-kafka:latest
    depends_on:
      - zookeeper
    ports:
      - 29092:29092
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1

Zookeeper服务监听2181端口为Kafka提供服务,但对于运行在本机的客户端,暴露的端口为22181.
类似的,kafka通过端口29092暴露给主机应用,但实际上在容器中的端口9092。有KAFKA_ADVERTISED_LISTENERS属性来配置。

下面通过使用命令启动容器、开启kafka服务:

$ docker-compose up -d
Creating network "kafka_default" with the default driver
Creating kafka_zookeeper_1 ... done
Creating kafka_kafka_1     ... done

下面通过nc命令严重两个服务正在监听各自的端口:

$ nc -z localhost 22181
Connection to localhost port 22181 [tcp/*] succeeded!
$ nc -z localhost 29092
Connection to localhost port 29092 [tcp/*] succeeded!

另外,也可以检查日志,当容器正在运行时验证kafka服务是否启动:

$ docker-compose logs kafka | grep -i started

可以看到Kafka服务已经启动。

最后可以使用Kafka Tool Gui 工具连接已安装的Kafka服务:

在这里插入图片描述

安装集群环境

生产环境需要更稳定的环境,下面扩展 docker-compose.yml文件创建多节点集群环境:

docker-compose.yml配置

集群安装需要zookeeper和Kafka有多个实例,下面为zookeeper和kafka增加多个服务:

---
version: '2'
services:
  zookeeper-1:
    image: confluentinc/cp-zookeeper:latest
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
    ports:
      - 22181:2181

  zookeeper-2:
    image: confluentinc/cp-zookeeper:latest
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
    ports:
      - 32181:2181
  
  kafka-1:
    image: confluentinc/cp-kafka:latest
    depends_on:
      - zookeeper-1
      - zookeeper-2

    ports:
      - 29092:29092
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:2181,zookeeper-2:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-1:9092,PLAINTEXT_HOST://localhost:29092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
  kafka-2:
    image: confluentinc/cp-kafka:latest
    depends_on:
      - zookeeper-1
      - zookeeper-2
    ports:
      - 39092:39092
    environment:
      KAFKA_BROKER_ID: 2
      KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:2181,zookeeper-2:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-2:9092,PLAINTEXT_HOST://localhost:39092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1

必须要确保kafka服务名称唯一,通过KAFKA_BROKER_ID 属性设置。而且每个服务必须暴露唯一主机端口。虽然zookeeper-1 和 zookeeper-2 监听2181端口,但对于主机端口分别为 22181 和 32181。类似的,kafka-1 和 kafka-2 services对应主机端口分别为 29092 和 39092。

启动kafka集群

现在通过docker-compose命令启动集群:

$ docker-compose up -d
Creating network "kafka_default" with the default driver
Creating kafka_zookeeper-1_1 ... done
Creating kafka_zookeeper-2_1 ... done
Creating kafka_kafka-2_1     ... done
Creating kafka_kafka-1_1     ... done

启动完成,使用Kafka Tool连接集群,地址通过逗号分割只读多个zookeeper地址和端口:

总结

本文使用Docker技术创建单个Kafka节点和Kafka集群环境,并且使用可视化工具连接服务查看代理服务器的配置信息。

到此这篇关于使用Docker搭建Apache Kafka环境的文章就介绍到这了,更多相关Docker Apache Kafka环境内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 开放Docker端口的实现示例

    开放Docker端口的实现示例

    本篇文章主要介绍了开放Docker端口的实现示例, 需要的朋友可以过来参考下,希望对大家有所帮助
    2014-01-01
  • docker5 全功能harbor仓库搭建过程

    docker5 全功能harbor仓库搭建过程

    Harbor是构建企业级私有docker镜像的仓库的开源解决方案,本文给大家分享docker5 全功能harbor仓库搭建过程,感兴趣的朋友一起看看吧
    2021-06-06
  • Docker容器数据卷技术介绍

    Docker容器数据卷技术介绍

    这篇文章主要为大家介绍了Docker容器数据卷技术介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Docker本地部署Firefox火狐浏览器并远程访问的流程

    Docker本地部署Firefox火狐浏览器并远程访问的流程

    在Docker中打开Firefox意味着我们将在一个Docker容器中运行Firefox浏览器,下面是一个简单的示例,演示如何在Docker中打开Firefox,本次实践部署环境为本地环境,感兴趣的朋友一起看看吧
    2023-11-11
  • Docker如何拉取oracle11g镜像

    Docker如何拉取oracle11g镜像

    这篇文章主要介绍了Docker如何拉取oracle11g镜像问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • Docker下安装zookeeper(单机和集群)

    Docker下安装zookeeper(单机和集群)

    这篇文章主要介绍了Docker下安装zookeeper(单机和集群),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 使用Docker部署Dashdot服务器仪表盘的步骤

    使用Docker部署Dashdot服务器仪表盘的步骤

    Dashdot是一款简单、实用的开源服务器仪表盘,设计时考虑到了玻璃形态,它旨在用于较小的 VPS 和私人服务器,这篇文章主要介绍了使用Docker部署Dashdot服务器仪表盘,需要的朋友可以参考下
    2022-12-12
  • Docker 技巧之删除Docker容器和镜像

    Docker 技巧之删除Docker容器和镜像

    本篇文章主要介绍了Docker 技巧之删除Docker容器和镜像,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Dockerfile命令参数的具体使用

    Dockerfile命令参数的具体使用

    Dockerfile是一个文本文件,包含用户构建镜像的所需要的全部命令,本文主要介绍了Dockerfile命令参数的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06
  • 给docker创建的elasticsearch容器添加密码简单步骤

    给docker创建的elasticsearch容器添加密码简单步骤

    在使用Elasticsearch(ES)Docker容器时,有时需要设置密码来保护数据的安全性,这篇文章主要给大家介绍了关于给docker创建的elasticsearch容器添加密码的简单步骤,需要的朋友可以参考下
    2024-02-02

最新评论