Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 卡夫卡-简单的消费者/生产者设置';我不能在不同的机器上工作,但可以在本地工作_Apache Kafka_Kafka Consumer Api_Kafka Producer Api - Fatal编程技术网

Apache kafka 卡夫卡-简单的消费者/生产者设置';我不能在不同的机器上工作,但可以在本地工作

Apache kafka 卡夫卡-简单的消费者/生产者设置';我不能在不同的机器上工作,但可以在本地工作,apache-kafka,kafka-consumer-api,kafka-producer-api,Apache Kafka,Kafka Consumer Api,Kafka Producer Api,我使用以下简单的producer/consumer教程安装和设置了Kafka: 我有两台机器,都在使用Ubuntu 问题的恢复: 如果我在同一台机器上使用生产者和消费者,一切正常。 如果我在机器2上使用制作人,在机器1上使用其他人,如卡夫卡、动物园管理员服务器和消费者,我就不会在机器1上收到任何消息 Machine 1 has IP: 192.168.1.100 Machine 2 has IP: 192.168.1.101 仅使用机器1和4控制台的工作示例 应用程序 控制台1-启动zoo

我使用以下简单的
producer
/
consumer
教程安装和设置了
Kafka

我有两台机器,都在使用Ubuntu

问题的恢复:

如果我在同一台机器上使用
生产者
消费者
,一切正常。 如果我在
机器2
上使用
制作人
,在
机器1
上使用其他人,如
卡夫卡
动物园管理员
服务器和
消费者
,我就不会在
机器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
bin/zookeeper-server-start.sh config/zookeeper.properties
控制台2-启动kafka服务器

bin/kafka-server-start.sh config/server.properties
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 --create --zookeeper 192.168.1.100:2181 --replication-factor 1 --partitions 1 --topic test
测试主题:

bin/kafka-topics.sh --list --zookeeper localhost:2181
bin/kafka-topics.sh --list --zookeeper 192.168.1.100:2181
消费者开始

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test
bin/kafka-console-consumer.sh --bootstrap-server 192.168.1.100:9092 --topic test
控制台4-发送一些消息:

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
它起作用了

使用机器1和2的工作示例

机器1-控制台1-启动zookeeper:

bin/zookeeper-server-start.sh config/zookeeper.properties
bin/zookeeper-server-start.sh config/zookeeper.properties
机器1-控制台2启动kafka服务器

bin/kafka-server-start.sh config/server.properties
bin/kafka-server-start.sh config/server.properties
机器1-控制台3 创建了一个名为测试的主题:

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic 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 localhost:2181
bin/kafka-topics.sh --list --zookeeper 192.168.1.100:2181
消费者开始

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test
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来测试连接…这是输出

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?

来自,常见的问题是主机名:

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

因此,打开您的
服务器。属性
,并更改
主机名

host.name=<your hostname>
如果这确实不起作用,请查看播发的.listeners并确保它是
0.0.0.0:port
:port
。例如:

advertised.listeners=PLAINTEXT://0.0.0.0:9092

谢谢你,德林。我通过设置服务器端(zookeeper、kafka服务器和使用者所在的位置)的IP/端口,在客户端设置了所有这些。但它不起作用。但是,如果我运行从服务器转储所有主题的脚本,我会正确地看到这些主题。唯一不起作用的是从生产者向消费者(服务器)发送消息。有什么想法吗?这是我想要使用的命令:bin/kafka-console-producer.sh--代理列表192.168.1.100:9092--主题测试[2017-10-11 16:02:26234]警告无法建立到节点0的连接。经纪人可能不在。(org.apache.kafka.clients.NetworkClient)如果确实设置了上述所有属性,请尝试重新启动kafka(使用
bin/kafka-server-start.sh config/server.properties
)和zookeeper,并确保该主题存在。仍然不起作用。你能检查一下我的编辑吗?我添加了一个新的测试。