我不能評論我低信譽的原因。以下是我製作的一些片段,可能對那裏的人非常有用。它利用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以修復這個。 –