EC2 Auto Scaling Group关联Target Group仅显示80端口如何注册3000-3005端口
EC2 Auto Scaling Group(ASG)原生关联Target Group(TG)的配置项本身就只支持单端口指定,你找不到多端口配置入口是正常的,当前自动注册出来只有80端口的目标,就是因为你关联TG时填的默认端口是80。
不要手动在TG里逐个添加实例端口,这种方式完全不可持续:ASG触发扩缩容、实例故障替换、滚动更新的时候,新启动的实例不会自动注册你手动加的端口,被销毁的实例对应手动条目也不会自动清理,时间长了TG里会堆积大量失效目标,直接导致流量转发异常。
正确操作方式
根据业务场景选以下两种方案即可:
- 方案1:按端口拆分独立Target Group(AWS官方推荐标准方案)
为3000-3005区间的每个端口单独创建对应TG,每个TG单独配置匹配对应服务的健康检查规则,之后把这6个TG全部关联到同一个ASG,同时按业务需要把这些TG挂载到负载均衡的对应监听器转发规则下。
配置完成后ASG的生命周期管理会自动接管所有TG的目标注册/注销:新实例启动时会自动把对应端口注册到每个关联TG,实例销毁时自动完成注销,不需要额外人工维护。 - 方案2:单TG多端口 + 生命周期钩子自动注册
如果不想创建多个TG,可以给ASG添加实例启动/终止的生命周期钩子,触发Lambda函数或者直接在实例启动脚本(User Data)里调用AWS API,自动完成3000-3005端口的注册/注销操作。
单实例多端口注册的CLI参考命令如下:
实例触发终止流程时,调用对应的aws elbv2 register-targets \ --target-group-arn <替换为你的目标组ARN> \ --targets Id=<替换为当前实例ID>,Port=3000 Id=<替换为当前实例ID>,Port=3001 Id=<替换为当前实例ID>,Port=3002 Id=<替换为当前实例ID>,Port=3003 Id=<替换为当前实例ID>,Port=3004 Id=<替换为当前实例ID>,Port=3005deregister-targets接口注销上述端口即可。
内容的提问来源于stack exchange,提问作者vincentsty
相关产品推荐
相关产品推荐

