AWS ECS 上的 Kafka,如何在没有已知实例的情况下处理 advertised.host?
Kafka on AWS ECS, how to handle advertised.host without known instance?
我正在尝试在 AWS ECS 容器上获取 Kafka 运行ning。我已经有了这个设置/在我的本地 docker 环境中工作正常,使用 spotify/kafka
image
为了让它在本地工作,我需要确保 。 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
现在的问题是,我不知道 IP 是什么,因为我不知道这将 运行 在哪个实例上。那么我该如何设置那个环境变量呢?
您的入口点脚本将需要调用 EC2 Metadata Service on startup (in this case 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
我正在尝试在 AWS ECS 容器上获取 Kafka 运行ning。我已经有了这个设置/在我的本地 docker 环境中工作正常,使用 spotify/kafka
image
为了让它在本地工作,我需要确保 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
现在的问题是,我不知道 IP 是什么,因为我不知道这将 运行 在哪个实例上。那么我该如何设置那个环境变量呢?
您的入口点脚本将需要调用 EC2 Metadata Service on startup (in this case 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