【问题标题】:Kafka on AWS ECS, how to handle advertised.host without known instance?AWS ECS上的Kafka,如何在没有已知实例的情况下处理advertising.host?
【发布时间】:2017-10-16 02:00:23
【问题描述】:

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

为了让这个在本地工作,我需要确保ADVERTISED_HOST environment variable was setADVERTISED_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

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

【问题讨论】:

  • 你试过0.0.0.0吗?
  • @kichik 感谢您的回复。是的,只是尝试过但没有用,虽然我认为它必须是外部 IP(公共或私有都可以),以便 Kafka 代理可以连接到它

标签: amazon-web-services docker apache-kafka amazon-ecs


【解决方案1】:

您的入口点脚本将需要在启动时调用 EC2 Metadata Service(在本例中为 http://169.254.169.254/latest/meta-data/local-hostname)以获取 external-to-docker 主机名并设置该变量。

示例:

[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/local-hostname
ip-10-251-50-12.ec2.internal

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2014-04-04
  • 2022-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-29
相关资源
最近更新 更多