我不能评论我低信誉的原因。以下是我制作的一些片段,可能对那里的人非常有用。它利用aws cli工具来检查一个实例何时连接中断。
您需要在ELB后面提供python服务器的ec2实例。
from flask import Flask
import time
app = Flask(__name__)
@app.route("/")
def index():
return "ok\n"
@app.route("/wait/<int:secs>")
def wait(secs):
time.sleep(secs)
return str(secs) + "\n"
if __name__ == "__main__":
app.run(
host='0.0.0.0',
debug=True)
然后从本地工作站向ELB运行以下脚本。
#!/bin/bash
which jq >> /dev/null || {
echo "Get jq from http://stedolan.github.com/jq"
}
# Fill in following vars
lbname="ELBNAME"
lburl="http://ELBURL.REGION.elb.amazonaws.com/wait/30"
instanceid="i-XXXXXXX"
getState() {
aws elb describe-instance-health \
--load-balancer-name $lbname \
--instance $instanceid | jq '.InstanceStates[0].State' -r
}
register() {
aws elb register-instances-with-load-balancer \
--load-balancer-name $lbname \
--instance $instanceid | jq .
}
deregister() {
aws elb deregister-instances-from-load-balancer \
--load-balancer-name $lbname \
--instance $instanceid | jq .
}
waitUntil() {
echo -n "Wait until state is $1"
while [ "$(getState)" != "$1" ]; do
echo -n "."
sleep 1
done
echo
}
# Actual Dance
# Make sure instance is registered. Check latency until node is deregistered
if [ "$(getState)" == "OutOfService" ]; then
register >> /dev/null
fi
waitUntil "InService"
curl $lburl &
sleep 1
deregister >> /dev/null
waitUntil "OutOfService"
来源
2014-12-23 10:46:50
Loa
您是否在使用ELB维护仅在特定EC2实例上有效的用户会话?如果是这样,这些会议持续多久? –
我不使用ELB进行用户会话管理 - 也许我会这样做仅出于性能原因,但我不依赖此功能。会话管理由所有节点都可以访问的中央数据库完成。 –
下面是关于ELB在删除实例时粗暴丢弃实时连接的主题:https://forums.aws.amazon.com/thread.jspa?threadID=61278亚马逊请求反馈意见,所以请随时添加+1以修复这个。 –