我正在使用一个解决方案,我在一个主机系统中将Kafka和Confluent部署在两个不同的Docker容器中 . 为了我的测试目的,我需要向Kafka提供一些测试数据 . 所以我正在修改Kafka server.configuration
以修改正在运行的docker容器中的"listeners"和"advertised.listeners"属性,如下所示 .
修改后的属性
listeners = PLAINTEXT://0.0.0.0:9092 advertised.listeners = PLAINTEXT:// GuestHost:9092
注意: - GuestHost是部署Docker容器的主机系统的主机名 .
经过这些修改后,我正在重新启动Kafka容器 . 稍后当我重新启动Confluent时,它会崩溃并显示以下消息 .
confluent_1 | [2018-01-19 07:34:34,480] ERROR Server died unexpectedly: (io.confluent.kafka.schemaregistry.rest.SchemaRegistryMain:51)
confluent_1 | org.apache.kafka.common.errors.TimeoutException: Timeout expired while fetching topic metadata
confluent_confluent_1 exited with code 1
从错误消息我可以看到Confluent无法从Kafka获取主题元数据,但为什么我无法获取 . 我怀疑Confluent无法使用来宾主机与Kafka通信 .
注意: - 通过将Kafka泊坞窗容器名称设置为advertised.listener主机名,Confluent能够与Kafka通信并且不会崩溃 .
需要一些指针才能使用Guest Host名称从Confluent容器与Kafka Docker容器进行通信 .