Joh*_*sen 23 amazon-ec2 amazon-web-services amazon-elb
我在Amazon运行的服务器实例云使用其负载均衡器来分配流量.现在我正在寻找一种优雅的方法来优雅地缩小网络,而不会在浏览器端造成连接错误.
据我所知,当从负载均衡器中删除时,实例的任何连接都将被粗暴地终止.
我希望有一种方法可以在关闭之前一分钟通知我的实例,或者让负载均衡器停止向死亡实例发送流量,但不会终止与它的现有连接.
我的应用程序是基于在Ubuntu上运行的node.js.我也有一些特殊的软件在运行,所以我不想使用许多PAAS提供node.js托管.
谢谢你的任何提示.
Ray*_*hey 16
这个想法使用ELB的功能来检测不健康的节点并将其从池中移除但是它依赖于ELB在下面假设中的预期行为.这是我一直想要为自己测试的东西,但还没有时间.当我这样做时,我会更新答案.
流程概述
可以在节点需要关闭时包装并运行以下逻辑.
根据您的申请"安全",这可能无法确定某些应用程序.
需要测试的假设
我们知道ELB 从它的池中删除了不健康的实例我希望它是优雅的,所以:
可能的测试用例:
1.如何阻止HTTP连接
在nodeX上使用本地防火墙阻止新会话,但继续允许已建立的会话.
例如IP表:
iptables -A INPUT -j DROP -p tcp --syn --destination-port <web service port>
Run Code Online (Sandbox Code Playgroud)
Jaa*_*ans 16
我知道这是一个老问题,但应该注意亚马逊最近添加了支持connection draining,这意味着当从负载均衡器中删除实例时,实例将完成从负载均衡器中删除实例之前正在进行的请求.没有新请求将路由到已删除的实例.您还可以为这些请求提供超时,这意味着任何运行时间超过超时窗口的请求都将终止.
要启用此行为,请转到Instancesloadbalancer 的选项卡并更改Connection Draining行为.
从ELB分发流量的推荐方法是在多个可用区域中拥有相同数量的实例.例如:
ELB
现在有两个感兴趣的ELB API允许您以编程方式(或通过控制面板)分离实例:
该ELB开发指南具有一个描述禁用的可用性区域的影响的部分.该部分的说明特别令人感兴趣:
负载均衡器始终将流量分配到所有已启用的可用区.如果在为负载均衡器禁用可用区之前,可用区中的所有实例都已取消注册或运行状况不佳,则发送到该可用区的所有请求都将失败,直到DisableAvailabilityZonesForLoadBalancer调用该可用区.
有趣的是,上述说明可能意味着如果您调用DisableAvailabilityZonesForLoadBalancer,ELB可以立即开始仅向可用区域发送请求 - 当您对禁用可用区域中的服务器执行维护时,可能会导致0停机时间.
上述"理论"需要亚马逊云工程师的详细测试或确认.
| 归档时间: |
|
| 查看次数: |
18113 次 |
| 最近记录: |