这个想法使用ELB的能力来检测不健康的节点并将其从池中删除,但是它依赖于ELB在下面的假设中的行为。这是我自己测试的一些东西,但还没有时间。我会更新答案。
流程概述
在节点需要关闭时,可以包装和运行以下逻辑。
>阻止到nodeX的新HTTP连接,但是继续允许现有的连接
>等待现有的连接流失,通过监控与应用程序的现有连接或允许“安全”的时间量。
>使用EC2 API直接或抽象脚本在nodeX EC2实例上启动关闭。
根据您的应用“安全”,这可能无法为某些应用程序确定。
假设需要测试
>与最近关闭的端口的新连接将被正确地重定向到池中的下一个节点
>当节点被标记为Bad时,已经建立到该节点的连接不受影响。
可能的测试用例:
>在ELB上Fire HTTP连接(例如从卷曲脚本)登录
在脚本打开一个节点的关闭期间的结果
HTTP端口你需要尝试找到一个
允许ELB始终确定状态的可接受的时间量
更改。
>保持较长的HTTP会话(例如文件下载),同时阻止新的
HTTP连接,长期会话应该希望继续。
1.如何阻止HTTP连接
在nodeX上使用本地防火墙来阻止新会话,但继续允许已建立的会话。
例如IP表:
iptables -A INPUT -j DROP -p tcp --syn --destination-port