我使用以下简单的producer
/consumer
教程安装并设置了Kafka
:
https://kafka.apache.org/quickstart
我有两台机器,两者都使用Ubuntu
。
简历问题:
如果我在同一台机器上使用producer
和consumer
,一切正常。如果我在machine 2
上使用producer
,而在machine 1
上使用,例如kafka
,zookeeper
服务器和consumer
,我从未在machine 1
上收到任何消息。
Machine 1 has IP: 192.168.1.100
Machine 2 has IP: 192.168.1.101
仅使用机器 1 的工作示例,具有 4 个控制台应用程序
控制台 1 - 启动了 zookeeper:
bin/zookeeper-server-start.sh config/zookeeper.properties
控制台 2 - 启动了 kafka 服务器
bin/kafka-server-start.sh config/server.properties
控制台 3创建了一个名为 test 的主题:
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
测试了主题:
bin/kafka-topics.sh --list --zookeeper localhost:2181
开始消费者
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test
控制台 4 - 发送一些消息:
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
有用!
NOT使用机器 1 和 2 的工作示例
机器 1 - 控制台 1 - 启动了 zookeeper:
bin/zookeeper-server-start.sh config/zookeeper.properties
机器 1 - 控制台 2 - 启动了 kafka 服务器
bin/kafka-server-start.sh config/server.properties
机器 1 - 控制台 3创建了一个名为 test 的主题:
bin/kafka-topics.sh --create --zookeeper 192.168.1.100:2181 --replication-factor 1 --partitions 1 --topic test
测试了主题:
bin/kafka-topics.sh --list --zookeeper 192.168.1.100:2181
开始消费者
bin/kafka-console-consumer.sh --bootstrap-server 192.168.1.100:9092 --topic test
机器 2 - 控制台 1 - 在 IP 上发送一些消息给 kafka 192.168.1.100
bin/kafka-console-producer.sh --broker-list 192.168.1.100:9092 --topic test
不起作用......
我在这里错过了什么?
编辑:
我现在用 kafkacat 来测试 connection...here 是输出。
root@ubuntu:~/kafka/kafka_2.11-0.11.0.1# kafkacat -b 192.168.1.100 -t test -L
Metadata for test (from broker -1: 192.168.1.100:9092/bootstrap):
1 brokers:
broker 0 at ubuntu:9092
1 topics:
topic "test" with 1 partitions:
partition 0, leader 0, replicas: 0, isrs: 0
%3|1507802180.807|FAIL|rdkafka#producer-1| [thrd:ubuntu:9092/0]: ubuntu:9092/0: Connect to ipv4#127.0.1.1:9092 failed: Connection refused
%3|1507802180.807|ERROR|rdkafka#producer-1| [thrd:ubuntu:9092/0]: ubuntu:9092/0: Connect to ipv4#127.0.1.1:9092 failed: Connection refused
为什么127.0.1.1:9092
设置在上面?不应该是192.168.1.100:9092
?
1 回答
从常见问题开始,常见的问题是主机名:
所以,打开
server.properties
并更改hostname
:如果仍然无效,请尝试修改
advertised.host.name
:如果这确实不起作用,请查看
advertised.listeners
并确保它是0.0.0.0:port
或<your.ip>:port
。例: