1.目标

在这个Kafka教程中,我们将学习Kafka-Docker的概念。此外,我们将在Kafka中看到Docker的卸载过程。这包括使用Docker 运行Apache Kafka的所有步骤  。除此之外,要使用Docker运行Kafka,我们将学习它的用法,经纪人ID,广告主机名,广告端口等。
所以,让我们开始Kafka-docker教程。

Kafka-Docker:使用Docker运行Apache Kafka的步骤

2. Kafka-docker是什么?

这里是使用Docker即Kafka-docker运行Apache Kafka的步骤。

一世。使用Docker的先决条件

  • 首先,安装docker-compose

让我们来探索Kafka Performance Tuning - Kafka Optimization
a的方法。安装Docker Compose 
我们可以在macOS,Windows以及64位Linux上运行compose 。
现在,要安装Kafka-Docker,步骤如下:
1。对于任何有意义的工作,Docker组合依赖于Docker Engine。因此,我们必须确保我们在本地或远程安装Docker引擎,具体取决于我们的设置。
基本上,在Docker for Mac和Windows等桌面系统上,Docker组合作为桌面安装的一部分包含在内。
2.然后,在MacOS Docker for Mac 上安装Compose 
和Docker Toolbox已经包含Compose和其他Docker应用程序,因此Mac用户不需要单独安装Compose。Docker安装说明如下:
阅读Apache Kafka Consumer
3.卸载Kafka-docker

  • 如果我们使用curl安装它,那么卸载Docker Compose:

sudo rm / usr / local / bin / docker-compose

  • 如果我们使用pip安装,那么卸载Docker Compose:

pip uninstall docker-compose

  • 安装compose后,修改docker-compose.yml中的KAFKA_ADVERTISED_HOST_NAME以匹配我们的docker主机IP

注意:请勿使用localhost或127.0.0.1作为主机IP来运行多个代理。

  • 如果我们想要自定义任何Kafka参数,我们需要将它们作为环境变量添加到docker-compose.yml中。
  • 通过添加前缀为LOG4J_的环境变量,可以自定义Kafka的log4j用法。这些将映射到log4j.properties。例如LOG4J_LOGGER_KAFKA_AUTHORIZER_LOGGER = DEBUG,authorizerAppender

注意:配置网络有各种“问题”。 
阅读Apache Kafka职业范围与薪资趋势

II。用法

启动Kafka集群:

  • docker-compose up -d

要添加更多Kafka经纪人

  • docker-compose scale kafka = 3

要销毁群集:

  • 码头工人组成停止

注意:默认的docker-compose.yml应该被视为一个起点。默认情况下,每个Kafka代理将在重新启动时获得新的端口号和代理ID。这取决于我们的用例,这可能是不可取的。此外,我们可以相应地修改docker-compose配置,以使用特定端口和代理ID,例如docker-compose-single-broker.yml:docker 
-compose -f docker-compose-single-broker.yml up

III。经纪人ID

可以以不同方式配置代理ID

  • 明确地,使用KAFKA_BROKER_ID
  • 通过命令,使用BROKER_ID_COMMAND,例如BROKER_ID_COMMAND:“hostname | awk -F'-''{print $ 2}'“

但是,如果我们在docker-compose文件中没有指定代理ID,则意味着它将自动生成。它允许放大和缩小。此外,为了确保不重新创建容器,请不要使用docker-compose的-no-recreate选项,从而保留其名称和ID。

IV。自动创建主题

如果我们想让Kafka- docker 在创建过程中自动在Kafka中创建主题,  可以在docker-compose.yml中添加KAFKA_CREATE_TOPICS环境变量  。
以下是来自docker-compose.yml的示例代码:
environment:
KAFKA_CREATE_TOPICS:“Topic1:1:3,Topic2:1:1:compact” 
在这里,我们可以看到主题1有1个分区以及3个副本,而主题2具有1个分区,1个副本,以及设置为压缩的cleanup.policy。
了解Kafka Producer
此外,通过指定KAFKA_CREATE_TOPICS_SEPARATOR环境变量来覆盖默认分隔符,以便在我们的主题定义之间使用多行YAML或其他分隔符。
例如,要拆分主题定义KAFKA_CREATE_TOPICS_SEPARATOR:“$$'\ n”'将使用换行符。确保语法必须遵循docker-compose转义规则和ANSI-C引用。

v。广告主机名

我们可以以不同的方式配置通告的主机名

  • 明确地,使用KAFKA_ADVERTISED_HOST_NAME
  • 通过命令,使用HOSTNAME_COMMAND,例如HOSTNAME_COMMAND:“route -n | awk'/ UG [\ t] / {print $$ 2}'“

但是,如果已指定KAFKA_ADVERTISED_HOST_NAME,则优先于HOSTNAME_COMMAND 
为了获取容器主机的IP,我们可以使用元数据服务进行AWS部署:
HOSTNAME_COMMAND = wget -t3 -T2 -qO- http://169.254.169.254 /最新/元数据/本地的IPv4

  • 将HOSTNAME_COMMAND注入配置

如果我们在任何其他KAFKA_XXX变量中需要HOSTNAME_COMMAND的值,请使用变量值中的_ {HOSTNAME_COMMAND}字符串,即
KAFKA_ADVERTISED_LISTENERS = SSL:// _ {HOSTNAME_COMMAND}:9093,PLAINTEXT:// 9092 
让我们探索Apache Kafka工作流程| Kafka Pub-Sub Messaging

六。广告端口

确定所需的通告端口是否不是静态非常重要。可以使用PORT_COMMAND环境变量。
PORT_COMMAND:“ docker port $$(hostname)9092 / tcp | cut -d:-f2
通过使用_ {PORT_COMMAND}字符串,我们可以在任何其他KAFKA_XXX配置中插入它,即
KAFKA_ADVERTISED_LISTENERS:PLAINTEXT://1.2.3.4:_ {PORT_COMMAND}

七。监听器配置

如果Kafka文档是开放的,那么它非常有用,以便轻松理解各种代理监听器配置选项。
对于版本0.9.0的时间,有多个侦听器配置,Kafka支持代理以帮助支持不同的协议以及区分内部和外部流量。 
注意: advertised.host.name和advertised.port仍然按预期工作,但在配置侦听器时不应使用。

你对卡夫卡了解多少

八。例

以下示例环境:
HOSTNAME_COMMAND:

  1. 卷曲http://169.254.169.254/latest/meta-data/public-hostname

KAFKA_ADVERTISED_LISTENERS:

  1. INSIDE ://:9092,OUTSIDE:// _ {HOSTNAME_COMMAND}:9094

KAFKA_LISTENERS:

  1. INSIDE ://:9092,OUTSIDE://:9094KAFKA_LISTENER_SECURITY_PROTOCOL_MAP:INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT

KAFKA_INTER_BROKER_LISTENER_NAME:INSIDE 
使用JMeter查看Apache Kafka-Load测试
将导致以下代理配置:

  1. advertised.listeners = OUTSIDE ://ec2-xx-xx-xxx-xx.us-west-2.compute.amazonaws.com:9094,INSIDE://:9092
  2. listeners = OUTSIDE ://:9094,INSIDE://:9092
  3. inter.broker.listener.name = INSIDE

九。规则

  • 没有侦听器可以共享端口号。
  • 第二个规则是,advertised.listener必须由侦听器列表中的协议名称和端口号出现。

X。经纪人机架

我们可以通过不同方式配置代理机架关联

  • 明确地,使用KAFKA_BROKER_RACK
  • 通过命令,使用RACK_COMMAND,例如RACK_COMMAND:“curl http://169.254.169.254/latest/meta-data/placement/availability-zone”

在上面的示例中,AWS元数据服务用于将实例的可用区域放在broker.rack属性中。

十一。JMX

出于监控目的,我们可能需要配置JMX。此外,对于标准JMX参数,可能会出现用于连接的基础RMI协议的问题

  1. java.rmi.server.hostname - 接口以绑定侦听端口
  2. com.sun.management.jmxremote.rmi.port

带命令的Apache Kafka操作
例如,
如果我们要连接到本地运行的Kafka(假设暴露端口1099)
KAFKA_JMX_OPTS:“ - Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate = false -Dcom。 sun.management.jmxremote.ssl = false -Djava.rmi.server.hostname = 127.0.0.1 -Dcom.sun.management.jmxremote.rmi.port = 1099“ 
JMX_PORT:1099 
Jconsole现在可以连接到jconsole 192.168.99.100:1099

十二。Docker Swarm模式

在使用覆盖网络在Docker Swarm中部署Kafka时,上述侦听器配置是必需的。在分离OUTSIDE以及INSIDE侦听器时,主机可以在群组内受益时与覆盖网络外的客户端进行通信。
在Docker Swarm中运行Kafka的更多好方法包括:
让我们讨论Apache Kafka术语

  1. 要为每个群集节点启动一个且仅一个Kafka代理,请在撰写文件中使用“deploy:global”。
  2. 而不是默认的“入口”负载平衡端口绑定,使用组合文件版本“3.2”以及“长”端口定义以及“主机”模式下的端口。例如:

ports:
- target:9094 
发布:9094 
protocol:tcp 
mode:host
所以,这完全是关于Kafka-docker的。希望您喜欢我们对Kafka Docker的解释。

3.结论

因此,我们已经看到了整个Kafka-docker教程。此外,我们还看到了如何在Kafka中卸载Docker。但是,如果您对Kafka-docker有任何疑问,请随时通过评论部分询问。
另请参阅 - 
Kafka Connect
供参考

Kafka-Docker:使用Docker运行Apache Kafka的步骤的更多相关文章

  1. Windows OS上安装运行Apache Kafka教程

    Windows OS上安装运行Apache Kafka教程 下面是分步指南,教你如何在Windows OS上安装运行Apache Zookeeper和Apache Kafka. 简介 本文讲述了如何在 ...

  2. 在 Docker 上快速运行 Apache Airflow 2.2.4

    Docker 安装 Apache Airflow 参考资料 Running Airflow in Docker 安装依赖 Docker Engine Docker Composite 快速运行 Apa ...

  3. 11:57:24 [org.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1] WARN o.apache.kafka.clients.NetworkClient - [Consumer clientId=consumer-2, groupId=jiatian_api] 3 partitions have leader……

    错误如下: 11:57:24 [org.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1] WARN  o.apache.kaf ...

  4. 物联网架构成长之路(28)-Docker练习之MQ中间件(Kafka)

    0. 前言 消息队列MQ,这个在一般的系统上都是会用到的一个中间件,我选择Kafka作为练手的一个中间件,Kafka依赖Zookeeper.Zookeeper安装上一篇博客已经介绍过了. 1. Kaf ...

  5. Apache Kafka Connect - 2019完整指南

    今天,我们将讨论Apache Kafka Connect.此Kafka Connect文章包含有关Kafka Connector类型的信息,Kafka Connect的功能和限制.此外,我们将了解Ka ...

  6. Apache Kafka工作流程| Kafka Pub-Sub Messaging

    1.目标 在我们上一篇Kafka教程中,我们讨论了Kafka Docker.今天,我们将讨论Kafka Workflow.此外,我们将详细介绍Pub-Sub Messaging的工作流程以及Queue ...

  7. 【转】apache kafka技术分享系列(目录索引)

    转自:  http://blog.csdn.net/lizhitao/article/details/39499283   估计大神会不定期更新,所以还是访问这个链接看最新的目录list比较好 apa ...

  8. apache kafka技术分享系列(目录索引)--转载

    原文地址:http://blog.csdn.net/lizhitao/article/details/39499283 kafka开发与管理: 1)apache kafka消息服务 2)kafak安装 ...

  9. 转 Apache Kafka:下一代分布式消息系统

    简介 Apache Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apache项目的一部分.Kafka是一种快速.可扩展的.设计内在就是分布式的,分区的和可复制的提交 ...

随机推荐

  1. C# 基础回顾: volatile 关键字

    有些人可能从来没看到过这个关键字,这也难怪,因为这个关键字并不常用.那这个关键字到底有什么用呢? 我在网上搜索这个关键字的时候,发现很多朋友都有一个错误的认识 ------ 认为这个关键字可以防止并发 ...

  2. java 修改HttpServletRequest的参数或请求头

    场景:过滤器中获取参数Token并添加到请求头(用户认证兼容老系统) 请求头和请求参数是不能直接修改,也没有提供修改的方法,但是可以在过滤器和拦截器中使用HttpServletRequestWrapp ...

  3. 09-Flutter移动电商实战-移动商城数据请求实战

    1.URL接口管理文件建立 第一步需要在建立一个URL的管理文件,因为课程的接口会一直进行变化,所以单独拿出来会非常方便变化接口.当然工作中的URL管理也是需要这样配置的,以为我们会不断的切换好几个服 ...

  4. 如何把上传图片时候的文件对象转换为图片的url !

    getObjectURL(file) { var url = null; if (window.createObjectURL != undefined) { url = window.createO ...

  5. Windbg的主题---Theme

    主题是预配置的windbg工作区,其中包含调试信息窗口的有用配置.任何主题都可以保存为基本工作区.Windows调试工具包中的主题作为一组注册表文件(扩展名为.reg)提供.当您积累更多的调试会话时, ...

  6. 解决IE报错[vue router]Failed to resolve async component default:strict 模式下不允许分配到只读属性

    之前遇到过一个奇怪的问题,在其他浏览器下一切正常,但在万恶的IE下,却一直不行. 具体问题场景就是:比如orderDetail页面出现问题,那么只要是路由跳转的,点第1次无法跳转,必须得点第2次才可以 ...

  7. C博客作业02——循环结构

    0.展示PTA总分 单循环题目集 嵌套循环题目集 1.本章学习总结 1.1学习内容总结 (a)while语句 while(表达式) { 循环体语句: } 执行流程:当表达式的值为"真&quo ...

  8. GoCN每日新闻(2019-10-21)

    GoCN每日新闻(2019-10-21) GoCN每日新闻(2019-10-21)   1. 使用 Golang, RabbitMQ 和 Protobuf 构建高效的微服务 https://mediu ...

  9. .getCellType()的几种类型值

    CellType 类型 值   CELL_TYPE_NUMERIC 数值型 0 CELL_TYPE_STRING 字符串型 1  CELL_TYPE_FORMULA 公式型       2   CEL ...

  10. 【cf补题记录】A. Hotelier

    思考之后再看题解,是与别人灵魂之间的沟通与碰撞 A. Hotelier 题意 给出长度为n的字符串,字符串由'L'.'R'以及数字0~9组成.旅馆有10间房子,L代表客人从左边入住,R代表客人从右边入 ...