NLB、目标组、Fargate服务和任务,以及具有多个端口的容器

0

【以下的问题经过翻译处理】 我刚接触AWS,试图将一些本地服务转移到Fargate上。我首先从一个简单的Nginx虚拟机开始,它只是将一个域名重定向到Sharepoint中的一个网址。容器中的SSL已经终止(我们使用Nginx中的301将端口80重定向到443),因此需要打开两个端口。

从我阅读的一些文档中得知,我需要:https://repost.aws/zh-Hans/knowledge-center/ecs-fargate-static-elastic-ip-address

1.为80端口和443端口定义两个目标组(使用TCP协议,而不是HTTP/S)。 2.定义一个网络负载平衡器,并将弹性IP地址分配给每个TG(TCP端口80和端口443)。 3.将本地DNS指向NLB IP地址(使用A记录或CNAME别名指向NLB DNS名称),使用RRDNS。 4.为每个目标组(80和443)定义一个Fargate服务(不能将多个TG分配给一个服务)。 5.在fg1-80-servicefg1-443-service(下面)中启动所需数量的任务来提供请求。

设置完毕后,我意识到只能连接其中一个EIP上的80端口,另一个只能连接443端口。我回头检查了NLB配置,意识到正是我告诉它要做的事情,因为监听器获取了EIP,而不是NLB界面。

我看不到完成这个任务的方法,所以我一定忽略了什么。是否有一种方法在目标组中定义多个端口,使用相同的EIP,我没看到吗?也许有一些更详细的文档来设置所有这些内容?

profile picture
专家
已提问 3 个月前8 查看次数
1 回答
0

【以下的回答经过翻译处理】 除非有特定原因使用NLB,否则可以使用ALB并创建一个规则,来处理重定向。这样就少了一件事要考虑。此外,你还可以将TLS终止的任务交给ALB去完成,这样对于你的NGINX来说就又少了一件要考虑的事情,除非你需要/想要将ALB转发到NGINX的流量用SSL加密(专业提示,你可以使用自签名证书来做这件事)。

至于你的问题,对于NLB,请不要忘记这些没有安全组,因此需要更新的安全组是ECS服务的安全组。此外,默认情况下,NLB不进行交叉AZ流量,因此您必须"在顶部"启用它并在route53中实施更好的健康检查,以便如果区域不起作用,则不会在DNS响应中显示。

否则,对于你要做的事情,我建议你参照这个示例:它使用Traefik,但你可以轻松地用NGINX/你的应用程序来替换。这将自动为你处理所有事情:安全组、入口、任务和服务定义、IAM策略等等。你可以通过使用Lookup来使用现有的基础架构(VPC)。它还可以为你处理route53和ACM。

profile picture
专家
已回答 3 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则