如何在ECS上为运行UDP服务的容器设置别名?

问题描述:

我试图运行logstash在一个针对ECS的容器中,该容器将通过UDP监听日志消息。如何在ECS上为运行UDP服务的容器设置别名?

我希望我的应用能够发送消息给logging.mydomain.com无需知道可能更改的底层IP。

通常我会CNAME一个ELB,但ELB不支持UDP。我需要在这里做一些服务发现还是有更简单的我可以做的?

我会推荐使用Amazon Route 53 DNS循环来解决这个问题。

的作品是:

  • 连接到CloudWatch的事件流,用于在ECS您logstash服务lambda函数。只要有任务状态发生变化就会调用此lambda函数,因此当新的logstash任务启动或停止并更新Route 53记录时,它将运行。
  • 当您的应用程序解析dns记录时,将会给出其中一个IP地址采用循环方式,并使用IP直接与托管logstash容器的实例进行通信。
  • 您的ECS服务需要有一个静态分配的主机端口,而不是动态端口。

有,在更详细地描述这个参考架构,而且对你的示例代码:https://aws.amazon.com/blogs/compute/service-discovery-for-amazon-ecs-using-dns/

+0

我觉得有使用平面CNAME记录和容器有一些限制 - 每1个IP地址1容器(假设服务在同一端口上监听)。 SRV记录的使用可能在客户端的实施方面存在限制。 – karnauskas

+0

正确,您需要使用DNS记录方法将静态分配的主机端口限制为每个主机一个容器。你也可以调查Weaveworks或Consul。 – nathanpeck