2017-10-11 88 views
0

我已经安装和设置Kafka卡夫卡 - 简单的消费/制造商设置没有不同的机器上工作,但使用下面的简单<code>producer</code>/<code>consumer</code>教程本地工作

https://kafka.apache.org/quickstart

我有2机器,并且都使用Ubuntu

简历的问题:

如果我使用producerconsumer在同一台机器上,一切工作正常。 如果我用machine 2producer,并在machine 1休息,如kafkazookeeper服务器和consumer,我从来没有在machine 1收到任何消息。

Machine 1 has IP: 192.168.1.100 

Machine 2 has IP: 192.168.1.101 

工作只使用机1只,有4台 应用

控制台1示例 - 开始饲养员:

bin/zookeeper-server-start.sh config/zookeeper.properties 

控制台2 - 启动卡夫卡服务器

bin/kafka-server-start.sh config/server.properties 

控制台3 创建一个话题叫做测试:

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 

它的工作原理!

不使用机器1和2工作实施例

机1 - 控制台1 - 开始动物园管理员:

bin/zookeeper-server-start.sh config/zookeeper.properties 

机1 - 控制台2 - 开始卡夫卡服务器

bin/kafka-server-start.sh config/server.properties 

机1 - 控制台3 创建一个话题叫做测试:

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 192.168.1.100

bin/kafka-console-producer.sh --broker-list 192.168.1.100:9092 --topic test 

不工作...

缺少什么我在这里?

编辑:

我现在用的kafkacat测试连接...这里是输出。

[email protected]:~/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

回答

3

the FAQ,一个常见的问题是主机名:

当代理启动时,它在ZK注册其IP /端口。您需要确保注册的IP与生产者配置中的metadata.broker.list中列出的IP一致。默认情况下,注册的IP由InetAddress.getLocalHost.getHostAddress()给出。通常,这应该返回主机的真实IP地址。但是,有时(例如,在EC2中),返回的IP是内部IP,不能从外部连接。解决方案是通过设置server.properties中的hostname属性来明确设置要在ZK中注册的主机ip。在绑定主机/端口与用于客户端连接的主机/端口不同的另一罕见情况下,您可以设置用于客户端连接的advertised.host.nameadvertised.port

所以,打开你的server.properties并更改hostname

host.name=<your hostname> 

如果这仍然不起作用,尝试修改advertised.host.name

advertised.host.name=<your ip> 

如果这真的不起作用,看看advertised.listeners并确保它是0.0.0.0:port<your.ip>:port。例如:

advertised.listeners=PLAINTEXT://0.0.0.0:9092 
+0

谢谢德林。我通过设置服务器端的IP /端口(zookeeper,kafka服务器和客户端所在的位置)来设置客户端的所有内容。但它没有奏效。但是,如果我运行从服务器转储所有主题的脚本,我会正确地看到这些主题。唯一不起作用的是从制作者向消费者(服务器)发送消息。有什么想法吗? – waas1919

+1

你使用什么命令?你有没有登录? – Derlin

+0

这是我想要使用的命令:bin/kafka-console-producer.sh --broker-list 192.168.1.100:9092 - topic test – waas1919