使用 KAFKA_ADVERTISED_HOST_NAME 的 kafka 经纪人数量增加
Increasing number of brokers in kafka using KAFKA_ADVERTISED_HOST_NAME
我是 Kafka 的新手,我正在尝试 运行 我本地机器上的 Kafka 服务,并使用它来将一些数据从一个 .NET 项目传输到另一个。
我正在使用 docker-compose.yml 文件为 wurstmeister 的 zookeeper 和 Kafka 创建两个 docker 容器。
在环境变量的 Kafka 定义中有 KAFKA_ADVERTISED_HOST_NAME,我将其设置为 127.0.0.1。
在 docker wurstmeister/kafka 的中心说我引用
》修改docker-compose.yml中的KAFKA_ADVERTISED_HOST_NAME以匹配您的docker主机IP(注意:不要使用localhost或127.0.0.1作为主机IP如果你想 运行 多个经纪人。)”。
当我将我的主题设置为具有超过 1 个副本和超过 1 个分区时,我收到此消息
“执行主题命令时出错:复制因子:2 大于可用代理:1。”。
在 KAFKA_ADVERTISED_HOST_NAME 中定义的正确 IP 地址是什么,这将允许我获得超过 1 个代理?
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1
KAFKA_CREATE_TOPICS: "simpletalk_topic:2:2"
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
应该是你机器的ip地址。
Linux: 使用 ifconfig
命令,您的 IP 将是 inet <IP_ADDRESS>
在 windows 中,您将使用 ipconfig
获得此信息
注意 - 运行一台机器上的多个代理不提供真正的容错。
use it to transfer some data from one .NET project to another
为此您只需要一名经纪人。
首先,建议阅读https://github.com/wurstmeister/kafka-docker/wiki/Connectivity
KAFKA_ADVERTISED_HOST_NAME
已弃用。不要使用它。
它已被 KAFKA_ADVERTISED_LISTENERS
取代,它可以包含 ${DOCKER_HOST_IP:-127.0.0.1}
(或来自 ifconfig
的主机 IP),因为这是您的客户端将使用的 IP(来自主机).
由于代理是自己的客户,因此您还需要通告容器名称。而且,如果您想容器化您的客户端,您的应用程序也会使用这些地址。
除了 Kafka 网络配置之外,KAFKA_BROKER_ID
需要在每个配置之间有所不同,并且您的错误提示您需要覆盖所有其他复制因子代理配置。
总而言之。
version: '3'
services:
zookeeper:
image: wurstmeister/zookeeper
kafka-1:
image: wurstmeister/kafka
depends_on: [zookeeper]
ports:
- "9092:9092"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://${DOCKER_HOST_IP:-127.0.0.1}:9092,PLAINTEXT_INTERNAL://kafka-1:29092
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092,PLAINTEXT_INTERNAL://:29092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT_INTERNAL:PLAINTEXT,PLAINTEXT:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT_INTERNAL
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_DEFAULT_REPLICATION_FACTOR: 2
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 2
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 2
kafka-2:
image: wurstmeister/kafka
ports:
- "9093:9093"
environment:
KAFKA_BROKER_ID: 2 # unique
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://${DOCKER_HOST_IP:-127.0.0.1}:9093,PLAINTEXT_INTERNAL://kafka-2:29093
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9093,PLAINTEXT_INTERNAL://:29093
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT_INTERNAL:PLAINTEXT,PLAINTEXT:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT_INTERNAL
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_DEFAULT_REPLICATION_FACTOR: 2
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 2
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 2
KAFKA_CREATE_TOPICS: "simpletalk_topic:2:2"
depends_on: # ensure this joins the other
- zookeeper
- kafka-1
I'm trying to run a Kafka service on my local machine
设置bootstrap.servers="localhost:9092,localhost:9093"
进一步阅读 -
用法示例
请注意,创建主题似乎不会自动进行。理想情况下,您应该使用您的应用程序来实际创建/检查主题是否存在。
$ kcat -b localhost:9093 -L
Metadata for all topics (from broker -1: localhost:9093/bootstrap):
2 brokers:
broker 2 at 127.0.0.1:9093
broker 1 at 127.0.0.1:9092 (controller)
0 topics:
生成一些数据...并使用它
$ kcat -b localhost:9093 -t test -o earilest
% Auto-selecting Consumer mode (use -P or -C to override)
hello
world
sample
data
of
no
importance
我是 Kafka 的新手,我正在尝试 运行 我本地机器上的 Kafka 服务,并使用它来将一些数据从一个 .NET 项目传输到另一个。 我正在使用 docker-compose.yml 文件为 wurstmeister 的 zookeeper 和 Kafka 创建两个 docker 容器。 在环境变量的 Kafka 定义中有 KAFKA_ADVERTISED_HOST_NAME,我将其设置为 127.0.0.1。 在 docker wurstmeister/kafka 的中心说我引用
》修改docker-compose.yml中的KAFKA_ADVERTISED_HOST_NAME以匹配您的docker主机IP(注意:不要使用localhost或127.0.0.1作为主机IP如果你想 运行 多个经纪人。)”。
当我将我的主题设置为具有超过 1 个副本和超过 1 个分区时,我收到此消息
“执行主题命令时出错:复制因子:2 大于可用代理:1。”。
在 KAFKA_ADVERTISED_HOST_NAME 中定义的正确 IP 地址是什么,这将允许我获得超过 1 个代理?
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1
KAFKA_CREATE_TOPICS: "simpletalk_topic:2:2"
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
应该是你机器的ip地址。
Linux: 使用 ifconfig
命令,您的 IP 将是 inet <IP_ADDRESS>
在 windows 中,您将使用 ipconfig
注意 - 运行一台机器上的多个代理不提供真正的容错。
use it to transfer some data from one .NET project to another
为此您只需要一名经纪人。
首先,建议阅读https://github.com/wurstmeister/kafka-docker/wiki/Connectivity
KAFKA_ADVERTISED_HOST_NAME
已弃用。不要使用它。
它已被 KAFKA_ADVERTISED_LISTENERS
取代,它可以包含 ${DOCKER_HOST_IP:-127.0.0.1}
(或来自 ifconfig
的主机 IP),因为这是您的客户端将使用的 IP(来自主机).
由于代理是自己的客户,因此您还需要通告容器名称。而且,如果您想容器化您的客户端,您的应用程序也会使用这些地址。
除了 Kafka 网络配置之外,KAFKA_BROKER_ID
需要在每个配置之间有所不同,并且您的错误提示您需要覆盖所有其他复制因子代理配置。
总而言之。
version: '3'
services:
zookeeper:
image: wurstmeister/zookeeper
kafka-1:
image: wurstmeister/kafka
depends_on: [zookeeper]
ports:
- "9092:9092"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://${DOCKER_HOST_IP:-127.0.0.1}:9092,PLAINTEXT_INTERNAL://kafka-1:29092
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092,PLAINTEXT_INTERNAL://:29092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT_INTERNAL:PLAINTEXT,PLAINTEXT:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT_INTERNAL
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_DEFAULT_REPLICATION_FACTOR: 2
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 2
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 2
kafka-2:
image: wurstmeister/kafka
ports:
- "9093:9093"
environment:
KAFKA_BROKER_ID: 2 # unique
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://${DOCKER_HOST_IP:-127.0.0.1}:9093,PLAINTEXT_INTERNAL://kafka-2:29093
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9093,PLAINTEXT_INTERNAL://:29093
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT_INTERNAL:PLAINTEXT,PLAINTEXT:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT_INTERNAL
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_DEFAULT_REPLICATION_FACTOR: 2
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 2
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 2
KAFKA_CREATE_TOPICS: "simpletalk_topic:2:2"
depends_on: # ensure this joins the other
- zookeeper
- kafka-1
I'm trying to run a Kafka service on my local machine
设置bootstrap.servers="localhost:9092,localhost:9093"
进一步阅读 -
用法示例
请注意,创建主题似乎不会自动进行。理想情况下,您应该使用您的应用程序来实际创建/检查主题是否存在。
$ kcat -b localhost:9093 -L
Metadata for all topics (from broker -1: localhost:9093/bootstrap):
2 brokers:
broker 2 at 127.0.0.1:9093
broker 1 at 127.0.0.1:9092 (controller)
0 topics:
生成一些数据...并使用它
$ kcat -b localhost:9093 -t test -o earilest
% Auto-selecting Consumer mode (use -P or -C to override)
hello
world
sample
data
of
no
importance