有没有办法使用boto有目的地将实例附加到ELB不健康?
到目前为止,我尝试了很少的方法,而不是它们。
感谢您的帮助!!
答案 0 :(得分:0)
不,这是不可能的。没有AWS API调用可以更改实例的运行状况。 (Auto Scaling具有此功能,但不具有负载平衡功能。)
您可以使用deregister_instances()
API调用,这将有效地实现相同的结果。
Register or Deregister EC2 Instances for Your Classic Load Balancer文档说:
取消注册EC2实例会将其从负载均衡器中删除。负载均衡器在取消注册后立即停止将请求路由到实例。如果需求减少,或者您需要为实例提供服务,则可以从负载均衡器中注销实例。取消注册的实例仍在运行,但不再从负载均衡器接收流量,您可以在准备好后再次将其注册到负载均衡器。
取消注册实例时,如果启用了连接耗尽,则Elastic Load Balancing 等待,直到完成正在进行的请求。
答案 1 :(得分:0)
是的,我们可以在下面的场景中做到这一点。 让我们假设你有loadblancer(myloadbalancer),一个附加了它的实例和下面的PingPath配置。
Ping Protocol: HTTP
Ping Port: 80
Ping Path: /
只需添加boto3代码即可编辑健康检查配置,如下所示,您可以看到魔术(Instance OutOfService)。
client.configure_health_check(
LoadBalancerName='myloadbalancer',
HealthCheck={
'Target': 'HTTP:80/hjkx',
'Interval': 30,
'Timeout': 5,
'UnhealthyThreshold': 5,
'HealthyThreshold': 3
}
)
答案 2 :(得分:0)
另外两个选择: 1.暂时禁用响应运行状况检查的Web服务器/进程。在我们的例子中,我们在它前面运行Java webapps和nginx代理。关闭nginx代理使得健康检查失败,而Java应用程序仍将运行。 2.临时防火墙ELB用于执行运行状况检查的端口。您可以通过调用AWS api来执行此操作。