Elasticbeanstalk FastAPI 应用程序间歇性不响应 https 请求

问题描述 投票:0回答:1

我的 Elastic Beanstalk 应用程序间歇性地没有响应,但我无法找出原因。发生了什么:

  1. 该应用程序将定期响应我的健康检查 200 秒。然后,它就会停止。然后它会自己回来。
  2. 当应用程序心情好的时候,后续的 API 调用 200。然后突然所有呼叫都失败(直到不再失败)。
  3. 在日志中,我没有看到任何崩溃的迹象,但我对此很陌生。我确实看到这个特性多次出现,并且与我对应用程序进行的 api 调用相对应:
Mar 31 05:15:47 ip-172-31-28-174 systemd[1]: Starting [email protected] - Refresh policy routes for ens5...
Mar 31 05:15:47 ip-172-31-28-174 ec2net[2485]: Starting configuration for ens5
Mar 31 05:15:48 ip-172-31-28-174 systemd[1]: [email protected]: Deactivated successfully.
Mar 31 05:15:48 ip-172-31-28-174 systemd[1]: Finished [email protected] - Refresh policy routes for ens5.
Mar 31 05:15:48 ip-172-31-28-174 audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=refresh-policy-routes@ens5 comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
Mar 31 05:15:48 ip-172-31-28-174 audit[1]: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=refresh-policy-routes@ens5 comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'

另外,这是设置:

  1. FastAPI python 应用程序,最初通过 eb cli 使用经典负载均衡器部署。后来迁移了负载均衡器。
  2. 最少 2 个实例,最多 4 个实例(全部为 t3 micro)
  3. 所有实例均健康。
  4. EB环境健康
  5. https:// 侦听器在 EB 配置上设置,使用来自 AWS 的证书。
  6. 子域上 SSL 的 CNAME 配置。
  7. 默认 VPC,在两个独立区域中具有两个子网。
  8. 子网映射到映射到 IGW 的路由表
  1. 过程文件:
    web: gunicorn main:app --workers=4 --worker-class=uvicorn.workers.UvicornWorker

可能是什么?是网络配置问题吗?负载均衡器?还是与应用环境有关?我还能够将代码部署到单实例 EBS 应用程序,并且没有出现停机问题。我无法在该实例上轻松获取 https,因此我无法确定问题是否出在负载均衡器级别。

amazon-web-services deployment amazon-elastic-beanstalk devops fastapi
1个回答
0
投票

我能够弄清楚这里发生了什么。

流量本质上被路由到私有子网,该子网将流量映射到 NAT 网关而不是 Internet 网关。由于有两个实例正在运行,因此仅有时会将请求发送到连接到有问题的子网的实例。为了解决这个问题,我更新了默认子网以指向路由表上的互联网网关。 (入站流量 0.0.0.0 -> IGN)。我这样做是因为我无法轻松更改 EBS 在从命令行启动时选择 VPC 和默认子网的方式。

导致这个问题的原因有很多,导致排查困难。需要明确的是:

  1. 如果您从命令行创建 EBS 环境,它将选择默认 VPC,从而选择该 VPC 的默认子网。 (是的,实际上可以设置默认值。)
  2. 路由表也可以设置为默认值,如果您不小心创建事物的方式,这可能会毁了您的生活。
  3. 我原来的 EBS 实例是使用经典负载均衡器设置的。后来我尝试将其迁移到应用程序。该迁移过程对 Elastic beanstalk 环境没有影响。 EBS 继续使用旧的负载均衡器及其配置设置。
© www.soinside.com 2019 - 2024. All rights reserved.