我的Docker化微服务的动态端口设置

时间:2019-06-13 13:53:11

标签: amazon-web-services docker microservices amazon-ecs

我想部署微服务的多个实例,这些实例使用某些端口,但使其具有可伸缩性,而不是在任务定义/ Dockerfile中修复该端口。我的微服务可以侦听环境变量或命令行中提供的端口。

目前,所有微服务都在AWS ECS任务定义中进行了描述,并具有静态端口分配。 每个微服务都向Eureka服务器注册,现在我只能在不同的EC2实例上运行多个服务实例。

我希望能够在同一个EC2实例上运行多个容器,但是每个新的服务实例都应该有一些可用的端口来监听它。

实现此目标的标准方法是什么?

1 个答案:

答案 0 :(得分:0)

只需在任务定义中将主机端口设置为0:

  

如果在具有EC2启动类型的任务中使用容器,则可以   为您的容器端口映射指定一个非保留的主机端口(此   称为静态主机端口映射),也可以省略   hostPort(或将其设置为0),同时指定容器端口和   容器自动接收一个端口(这称为   您的临时端口范围内的动态主机端口映射)   容器实例操作系统和Docker版本。

enter image description here

  

默认临时端口范围是49153–65535,此范围是   用于1.6.0之前的Docker版本。对于Docker版本1.6.0和   稍后,Docker守护程序尝试从以下目录读取临时端口范围   / proc / sys / net / ipv4 / ip_local_port_range(在计算机上为32768–61000   最新的Amazon ECS优化的AMI)

因此,在这种情况下,您将需要应用程序LB在动态端口上路由流量。

您可以从本文dynamic-port-mapping-in-ecs-with-application-load-balancer那里寻求帮助。