TLDR: 我应该等待多长时间才能保证GCE实例已从负载均衡路径中删除并可以安全删除?
Details: 我有一个相对标准的设置:托管实例组中的GCE实例,前面的全局HTTPS负载均衡器指向后端服务,其中只有一个托管实例组 . Health 检查标准是5秒超时,5秒不 Health 阈值,2连续失败,连续2次成功 .
我部署了一些新实例,将它们添加到实例组,然后删除旧实例 . 几分钟后(通常为10-15分钟),我删除旧的实例 .
每隔一段时间,我注意到删除旧实例(我认为不再接收流量)与对客户端的零星502响应相关联,这只能在负载均衡器级别日志中看到:
我已经做了一堆日志关联和tcpdumping以及负载测试,相当确信这个502不是由一个新的, Health 的实例提供服务的 . 无论如何,我的问题是:
What is the upper-bound on how long I should wait to guarantee that a GCE instance has been removed from the load-balancing path and can be safely deleted?
2 回答
我认为您正在寻找的是连接耗尽功能 . https://cloud.google.com/compute/docs/load-balancing/enabling-connection-draining
回答我自己的问题:事实证明,这些502与关闭实例无关,10分钟有足够的时间从服务路径中删除实例 . 502s是由nginx超时之间的竞争条件引起的,GCP 's HTTP(S) Load Balancer timeouts—I' ve在这里写了一篇完整的博客文章:Tuning NGINX behind Google Cloud Platform HTTP(S) Load Balancer