网络负载均衡器目标组中的 AWS Auto Scaling 目标
Posted
技术标签:
【中文标题】网络负载均衡器目标组中的 AWS Auto Scaling 目标【英文标题】:AWS auto scaling targets in target groups for Network Load Balancers 【发布时间】:2018-09-03 22:22:06 【问题描述】:最近开始使用网络负载均衡器,它侦听端口 80 并将流量转发到我的目标组。我的自动缩放组已配置为向此目标组添加任何新目标。
但是,我在目标 EC2 实例上的应用程序在端口 8001 上运行,而不是 80。所以我的目标应该在目标组中的端口 8001 下注册。自动缩放配置似乎不支持这一点。所有由 Auto Scaling 创建的新实例都被添加为端口 80 的目标,并且无法自动指定应该使用哪个端口(我是 8001)。
有什么想法可以实现吗?
【问题讨论】:
【参考方案1】:目标组中的端口定义是您要查找的端口定义。目标组中的端口是目标接收流量的端口。 listener 上的端口是负载均衡器侦听请求的端口。
所以你应该在监听器上设置80端口,在目标组上设置8001端口。
【讨论】:
你在目标组的哪里设置端口?我没看到。我只能在手动添加目标实例时看到它。所以当自动缩放器添加它时,它并不关心,只是将端口 80 的实例添加到目标组。 您可能需要为此重新创建目标组。我没有看到修改目标端口而不重新创建它的方法。【参考方案2】:您正在使用哪种应用程序(Web 服务器、应用程序服务器……)?也许 ALB 会更适合您,因为它适用于 OSI 模型的第 7 层,因此它能够处理 HTTP 标头,例如。
回到你的问题;为了能够将流量转发到在端口 8001 上运行应用程序的 EC2 实例,您必须将目标组上的端口设置为 8001。 Auto-scaling 组不知道它预置的 EC2 上运行的是什么应用程序,也不知道该应用程序使用的端口。
所以最后的流程是这样的:
LB 侦听端口 80 并将流量转发到端口 8001 上的目标组。然后此目标组将流量发送到端口 8001 上的目标(您的 EC2 实例)。
【讨论】:
运行一个 Web 服务器(Daphne 用于 python 的东西)。通过控制台创建新目标组时,我无法看到在目标组上设置端口的位置。我唯一可以设置端口的地方是当我覆盖目标组的健康检查设置时。 不幸的是,一旦您创建了一个目标组,您就无法更改它转发的流量的端口号。因此,必须在创建资源时指定(见附件img) 谢谢。我没有意识到目标组上的端口实际上是这样做的。希望我去创建目标组的时候字段名旁边有这样的解释。 @jpact,当手动将实例添加到目标组(TG)时,可以在多个端口上向 TG 注册单个实例(大概是为了支持微服务)。但是,当 Auto Scaling 组与 TG 关联时,不确定是否可以在 ASG 启动的实例上指定多个侦听端口 - 有什么想法吗?以上是关于网络负载均衡器目标组中的 AWS Auto Scaling 目标的主要内容,如果未能解决你的问题,请参考以下文章