zoukankan      html  css  js  c++  java
  • Kafka-Docker:使用Docker运行Apache Kafka的步骤

    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 
    供参考

  • 相关阅读:
    三个心态做人做学问 沧海
    成功走职场要找准自己的"快捷键" 沧海
    免费离线下载 拂晓风起
    Hibernate 获取某个表全部记录时 奇怪现象 (重复出现某个记录) 拂晓风起
    无法读取mdb 如果连接不了ACCESS mdb文件,就尝试安装MDAC 拂晓风起
    Netbeans 使用 Hibernate 逆向工程 生成hbm和pojo 拂晓风起
    如何点击单选框 radio 后面的文字,选中单选框 拂晓风起
    Java 连接access 使用access文件 不用配置 拂晓风起
    mysql下如何执行sql脚本 拂晓风起
    Hibernate配置access Hibernate 连接 access 拂晓风起
  • 原文地址:https://www.cnblogs.com/a00ium/p/10852459.html
Copyright © 2011-2022 走看看