AWS ECS上的Kafka,如何在没有已知实例的情况下处理advertised.host?

Hor*_*rse 5 amazon-web-services amazon-ecs apache-kafka docker

我正在尝试让 Kafka 在 AWS ECS 容器上运行。我已经有了这个设置/在我的本地 docker 环境中工作正常,使用spotify/kafka 图像

为了在本地工作,我需要确保设置了ADVERTISED_HOST 环境变量ADVERTISED_HOST需要设置为容器的外部 IP,否则当我尝试连接时,它只会给我connection refused.

我的本地人docker-compose.yaml有这个用于 kafka 容器:

  kafka:
    image: spotify/kafka
    hostname: kafka
    environment:
    - ADVERTISED_HOST=192.168.0.70
    - ADVERTISED_PORT=9092
    ports:
    - "9092:9092"
    - "2181:2181"
    restart: always
Run Code Online (Sandbox Code Playgroud)

现在的问题是,我不知道 IP 将是什么,因为我不知道这将在哪个实例上运行。那么如何设置该环境变量呢?

Jas*_*tin 4

您的入口点脚本需要在启动时调用EC2 元数据服务(在本例中为http://169.254.169.254/latest/meta-data/local-hostname)以获取外部到 docker 主机名并设置该变量。

样本:

[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/local-hostname
ip-10-251-50-12.ec2.internal
Run Code Online (Sandbox Code Playgroud)

  • 此处已记录相同内容 https://github.com/wurstmeister/kafka-docker/blob/master/README.md#advertished-hostname (2认同)