ELBのConnection Drainingを使ってみる
ELBのConnection Drainingがサポートされたので試してみた。
今までApacheのgraceful-stopでELBからインスタンス外してたりしてたけどこれで安全、簡単に取り外しができそう。
使ってみた環境
ELB <=> EC2(<=> sinatra)な構成を構築
sinatraは以下のようなコード
require 'sinatra'
get '/' do
sleep 30
'test'
end
get '/status' do
'ok'
end
management consoleから使ってみる
- オフの確認
- ELBのConnection Drainingオフ
- ブラウザやcurlでELBドメインの/にアクセス
- ELBからEC2をRemove
- /からレスポンスが返らないことを確認(curlではEmpty reply from serverでエラー)
- オンの確認
- ELBのConnection Drainingオン
- ブラウザやcurlでELBドメインの/にアクセス
- ELBからEC2をRemove
- /から"test"が返ることを確認
API(rubyのaws-sdk)から使ってみる
- ELBのConnection Drainingオン
- ブラウザやcurlでELBドメインの/にアクセス
- 以下のスクリプトを実行
require 'aws-sdk'
REGION = "ap-northeast-1"
ELB_NAME = "test"
elb = AWS::ELB.new(:proxy_uri => ENV['HTTP_PROXY'] || ENV['http_proxy'],
:region => REGION).load_balancers[ELB_NAME]
deregister_instances = []
elb.instances.each do |instance|
elb.instances.deregister(instance)
deregister_instances << instance
puts "#{instance.instance_id} #{instance.tags["Name"]}"
end
while true
sleep 3
deregister_instances.each do |instance|
p instance.elb_health
end
end
- 結果確認(レスポンス返す間はInService)
$ bundle exec ruby elb_ec2_deregister.rb
i-12345678 test
{:description=>"Instance deregistration currently in progress.", :state=>"InService", :reason_code=>"N/A"}
{:description=>"Instance deregistration currently in progress.", :state=>"InService", :reason_code=>"N/A"}
{:description=>"Instance deregistration currently in progress.", :state=>"InService", :reason_code=>"N/A"}
{:description=>"Instance deregistration currently in progress.", :state=>"InService", :reason_code=>"N/A"}
{:description=>"Instance deregistration currently in progress.", :state=>"InService", :reason_code=>"N/A"}
{:description=>"Instance deregistration currently in progress.", :state=>"InService", :reason_code=>"N/A"}
{:description=>"Instance deregistration currently in progress.", :state=>"InService", :reason_code=>"N/A"}
{:description=>"Instance is not currently registered with the LoadBalancer.", :state=>"OutOfService", :reason_code=>"Instance"}
Author And Source
この問題について(ELBのConnection Drainingを使ってみる), 我々は、より多くの情報をここで見つけました https://qiita.com/mechamogera/items/654253372bc0c1a086bc著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .