amazon-web-services - 使用 Flask Web 应用程序配置 Route53、ALB 和 Fargate
问题描述
我有一个从端口 80 开始的烧瓶网络应用程序。我在 / 有一个运行状况检查端点。
烧瓶应用程序位于暴露端口 443 的 docker 容器内。
我也有一个 ALB 在听
- 80端口重定向到443端口
- 在 Route53 上购买域名并转发到我的 TargetGroup 后,我从 Amazon Certificate Manager 获得了带有 SSL 证书的端口 443。
SSL 证书标记为“已发行”和“使用中”。
ALB 的安全组仅允许端口 80 (http) 和 443 (https) 上的入站和出站流量。
我的 Fargate 集群有一个活动服务,负载均衡器位于 TargetGroup 中,属于上述相同的安全组。集装箱港口是443。
我有一项与我的服务相关联的任务,它正在运行。
在这一点上,我无法从负载均衡器获得任何响应,我一直试图通过浏览器访问它。我注册的域名也没有响应,但我怀疑这是因为负载均衡器没有响应,所以这就是我在这个问题中关注的内容。
我不知道从哪里开始,所以我用
nmap -p80 my-alb-xxxxxx.my-region.elb.amazonaws.com
但这告诉我有 0 个主机已启动。我使用端口 443 得到相同的结果。
我的理解(帮助)是我的负载均衡器将接受 80 和 443 上的流量,重新路由到 443,这是我的 docker 容器公开的端口,并将到达我在 80 上运行的 webapp。
这导致以下问题:
- 我的烧瓶应用程序是否需要了解 https 握手或 ssl 证书?
- 我在 docker 容器中公开端口 443 的想法是否连接到与负载均衡器关联的安全组的出站规则?
- 我还能做些什么来调试为什么我的负载均衡器 dnsname (my-alb-xxxxxx.my-region.elb.amazonaws.com) 没有响应。
解决方案
我将利用我的经验回答我能回答的部分。
不,我假设您正在加密出站世界和 LB 之间的流量。听起来从 LB 到 Fargate 集群的流量是未加密的。这可以。想想交通不知道它从一个路段到另一个路段的旅程。现在加密在 LB 处终止。从端口 80 到 443 的重定向是当客户端在没有指定连接类型的情况下尝试连接时,它将切换到 443。
如果这样做,您必须能够加密连接。出于测试目的,为了确保您的信号路径正常工作,我会让您的 Fargate 任务在端口 80 上侦听,并将流量转发到端口 80。(负载均衡器到 Fargate)。有关更多信息,请参阅这些资源: https ://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-troubleshooting.html
https://gist.github.com/jonashaag/4c01174c92ac71986e3dcc44cec6ad9c
https://docs.aws.amazon.com/AmazonECS/latest/userguide/service-load-balancing.html
- 因此,除非您在负载均衡器安全组上打开正确的端口(特别是),否则它不会响应通用 ICMP 请求。请参阅此问题/答案以获取更多信息:
- 底线是安全组对 ELB 的作用与它们对实例的作用相同。
现在,我会检查 SG 和 Fargate 和 ALB 之间的允许端口。记住:
- ALB 必须将流量转发到应用程序在您的应用程序中侦听的同一端口。如果您的应用程序在侦听时暴露了端口 5050 - elb 必须将流量转发到 5050。
- 该端口必须在 SG 上为 Fargate 集群授权
- 如果您有任何 ACL,他们必须授权双向流量(如果您没有设置,请不要担心,默认情况下不启用)
推荐阅读
- c# - ZXing,带有 TryInverted 颜色选项的 DataMatrix Reader 似乎不适用于 iOs (Xamarin.Forms)
- python - 为什么 .join() 方法在 threading 模块中称为 .join()?
- php - 上传大文件时 Laravel 崩溃
- java - 如何使 WebView 中的文本换行?
- python - 将数据保存到文件 .txt - 请求标头、响应标头和 POST 方法中 - 请求有效负载
- python - 语法错误:无效错误。电报机器人
- memory-management - 如何在实际硬件中指定内存区域,即 STM32F103RB
- salesforce - 使用第三方开放 ID 连接的 Salesforce 登录 - no_openid_response
- r - 大数据集的市场桶分析
- javascript - 单击提交按钮时的Jquery表单验证