gpt4 book ai didi

amazon-ec2 - 如何从 ELB 组正常关闭或删除 AWS 实例

转载 作者:行者123 更新时间:2023-12-03 08:03:00 29 4
gpt4 key购买 nike

我有一个在 Amazon 上运行的服务器实例云,使用他们的负载均衡器来分配流量。现在我正在寻找一种很好的方法来优雅地缩小网络,而不会在浏览器端造成连接错误。

据我所知,当从负载均衡器中删除时,实例的任何连接都会被粗暴地终止。

我希望有一种方法可以在实例关闭前一分钟通知我的实例,或者让负载均衡器停止向即将死亡的实例发送流量,但不终止与它的现有连接。

我的应用程序是基于 Ubuntu 运行的 node.js。我也有一些特殊的软件在上面运行,所以我不想使用许多 PAAS 提供的 node.js 托管。

感谢您的任何提示。

最佳答案

这个想法使用 ELB 的能力来检测不健康的节点并将其从池中删除,但它依赖于 ELB 的行为如以下假设中的预期。这是我一直想为自己测试但还没有时间的东西。当我这样做时,我会更新答案。

流程概览

可以在需要关闭节点时包装并运行以下逻辑。

  • 阻止与 nodeX 的新 HTTP 连接但继续允许现有连接
  • 通过监视与应用程序的现有连接或允许“安全”时间来等待现有连接耗尽。
  • 直接使用 EC2 API 或抽象脚本在 nodeX EC2 实例上启动关闭。

  • 根据您的应用程序“安全”,对于某些应用程序可能无法确定。

    需要检验的假设

    我们知道ELB removes unhealthy instances from it's pool我希望这是优雅的,所以:
  • 与最近关闭的端口的新连接将正常重定向到池中的下一个节点
  • 当一个节点被标记为 Bad 时,与该节点已经建立的连接不受影响。

  • 可能的测试用例:
  • 在 ELB 上触发 HTTP 连接(例如从 curl 脚本)记录
    脚本打开关闭节点之一期间的结果
    HTTP 端口。你需要尝试找到一个
    允许 ELB 始终确定状态的可接受时间量
    改变。
  • 保持长时间的 HTTP session ,(例如文件下载)同时阻止新的
    HTTP 连接,长 session 有望继续。

  • 1. 如何阻止 HTTP 连接

    在 nodeX 上使用本地防火墙来阻止新 session ,但继续允许已建立的 session 。

    例如 IP 表:
    iptables -A INPUT -j DROP -p tcp --syn --destination-port <web service port>

    关于amazon-ec2 - 如何从 ELB 组正常关闭或删除 AWS 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7665358/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com