小编LeP*_*rMu的帖子

无法从 EC2 外部连接到 AWS 上运行的 kafka 连接集群

我有一个 ECS 集群,其中有 3 个 EC2 实例,全部位于私有子网中。我创建了一个任务定义来运行 Confluence 提供的 kafka-connect 映像,并使用以下环境变量:

    CONNECT_CONFIG_STORAGE_TOPIC=quickstart-config
    CONNECT_GROUP_ID=quickstart
    CONNECT_INTERNAL_KEY_CONVERTER=org.apache.kafka.connect.json.JsonConverter
    CONNECT_INTERNAL_VALUE_CONVERTER=org.apache.kafka.connect.json.JsonConverter
    CONNECT_KEY_CONVERTER=org.apache.kafka.connect.json.JsonConverter
    CONNECT_OFFSET_STORAGE_TOPIC=quickstart-offsets
    CONNECT_PLUGIN_PATH=/usr/share/java
    CONNECT_REST_ADVERTISED_HOST_NAME=localhost
    CONNECT_REST_ADVERTISED_PORT=8083
    CONNECT_SECURITY_PROTOCOL=SSL
    CONNECT_SSL_ENDPOINT_IDENTIFICATION_ALGORITHM=
    CONNECT_STATUS_STORAGE_TOPIC=quickstart-status
    CONNECT_VALUE_CONVERTER=org.apache.kafka.connect.json.JsonConverter
Run Code Online (Sandbox Code Playgroud)

我在此集群前面有一个应用程序负载均衡器,并在端口 8083 上有一个侦听器。我已正确设置目标组以包含运行 kafka-connect 的 EC2 实例。因此负载均衡器应该将请求转发到集群。确实如此,但我总是能得到回复502 Bad Gateway。我可以 ssh 进入 EC2 实例并curl localhost:8083从 kafka-connect 获取响应,但从 EC2 外部,我没有得到响应。

为了排除负载均衡器和集群之间的网络问题,我创建了一个在端口 80 上运行 Nginx 的单独任务定义,并且我能够通过负载均衡器从 EC2 实例外部成功访问它。

我感觉我没有设置CONNECT_REST_ADVERTISED_HOST_NAME正确的值。据我了解,这是客户端应该连接的主机。但是,因为我的 EC2 实例位于私有子网中,所以我不知道将其设置为什么,这就是我将其设置为 localhost 的原因。我尝试将其设置为负载均衡器的 DNS 名称,但这不起作用。

amazon-ecs apache-kafka apache-kafka-connect

2
推荐指数
1
解决办法
2941
查看次数