aws 中的阻塞端口和自动缩放组
Blocked ports and autoscaling group in aws
我有一个具有以下设置的自动缩放组:
- name: configure auto-scaling group
ec2_asg:
name: "{{ application_name }}-{{ application_environment }}-auto-scaling-group"
availability_zones:
- "{{ region }}a"
- "{{ region }}b"
- "{{ region }}c"
state: present
launch_config_name: "{{ application_name }}-{{ application_environment }}-launch-configuration"
min_size: 1
max_size: 2
region: "{{ region }}"
desired_capacity: 2
tags:
- environment: "{{application_environment}}"
vpc_zone_identifier:
- "{{ vpc.subnets[0].id }}"
- "{{ vpc.subnets[1].id }}"
- "{{ vpc.subnets[2].id }}"
它正在启动两个 ec2 实例。
在这两个实例中,都有一个服务 运行 一个监听端口 80 的 nginx。我知道我不能使用端口 80 两次。该服务的理想容量为 2,但我愿意在滚动更新期间有一个 运行。
但是,如果我更新服务和任务定义,我会收到以下错误:
ERROR: (service myapp-testing-service) was unable to place a task because no container instance met all of its requirements. The closest matching (container-instance 24d9d97e-c979-41a3-a438-212390612ae3) is already using a port required by your task. For more information, see the Troubleshooting section of the Amazon ECS Developer Guide.
没错,端口被封了。在那种情况下我想要发生的是一个 nginx 服务被关闭,新的被占用,另一个被关闭并替换为新的。
我认为这是默认行为,但看起来不是 - 或者我弄错了什么?
您将需要重新配置 myapp-testing-service
的 ECS 服务配置。
将最小健康百分比设置为 50。
这将允许您的服务在部署新版本时 运行 旧版本的 1 个任务。
我有一个具有以下设置的自动缩放组:
- name: configure auto-scaling group
ec2_asg:
name: "{{ application_name }}-{{ application_environment }}-auto-scaling-group"
availability_zones:
- "{{ region }}a"
- "{{ region }}b"
- "{{ region }}c"
state: present
launch_config_name: "{{ application_name }}-{{ application_environment }}-launch-configuration"
min_size: 1
max_size: 2
region: "{{ region }}"
desired_capacity: 2
tags:
- environment: "{{application_environment}}"
vpc_zone_identifier:
- "{{ vpc.subnets[0].id }}"
- "{{ vpc.subnets[1].id }}"
- "{{ vpc.subnets[2].id }}"
它正在启动两个 ec2 实例。
在这两个实例中,都有一个服务 运行 一个监听端口 80 的 nginx。我知道我不能使用端口 80 两次。该服务的理想容量为 2,但我愿意在滚动更新期间有一个 运行。
但是,如果我更新服务和任务定义,我会收到以下错误:
ERROR: (service myapp-testing-service) was unable to place a task because no container instance met all of its requirements. The closest matching (container-instance 24d9d97e-c979-41a3-a438-212390612ae3) is already using a port required by your task. For more information, see the Troubleshooting section of the Amazon ECS Developer Guide.
没错,端口被封了。在那种情况下我想要发生的是一个 nginx 服务被关闭,新的被占用,另一个被关闭并替换为新的。
我认为这是默认行为,但看起来不是 - 或者我弄错了什么?
您将需要重新配置 myapp-testing-service
的 ECS 服务配置。
将最小健康百分比设置为 50。
这将允许您的服务在部署新版本时 运行 旧版本的 1 个任务。