我一直在谷歌上疯狂搜索,但找不到答案。因为我们在俄亥俄州,所以我们有三个可用区/子网。但这张图足以解释这个问题。
我们已经设置了 squid 代理来过滤来自我们某项服务的出站流量。
- 对于每个可用区,应用服务器位于私有子网中。
- 然后每个都有一个代理民众该 AZ 的子网。
- 私有子网的路由表将 0.0.0.0 指向相应公共子网中代理的 ENI。
随着时间的推移,每个子网的出站流量都消失了。我们花了一点时间才弄清楚出了什么问题,因此,当每个子网都死机时,我们从服务的 ALB 中删除了该子网中的实例,并在研究期间继续使用受阻的服务。昨天,第三个子网也死了,我们决定“绕过”代理直接路由到每个子网的 NAT 网关。当我们进入路由表时,我们注意到每个代理的 ENI 都被列为黑洞。
我们已经检查过
- 代理实例日志
- ENI 分配时间,以及
- Cloudtrail 日志
...寻找任何迹象来说明为什么 ENI 会变得无效,从而破坏我们的默认路由。毫无用处。
- 这些情况已经持续了三个多星期
- ENI 分配时间戳与实例创建时间相匹配
- 启动日志未显示任何重启
- Cloudtrail 没有显示对 ENI/实例的任何修改。
我们被难住了。我们的路由表怎么会“突然”包含一条通向不存在的 ENI 的路由?