2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

目的(やりたいこと)

  • ELBの各操作をCLI行いたい

メンテナンスなどでELBが指定するターゲットグループから、ターゲットのマシン(EC2)を登録除外するときに行う。GUIでも実施可能だが煩雑。GUIも頻繁にアップデートされるため、コマンドで実施。

前提条件

  • Cloudshellを利用

手順

ターゲットグループARN取得

ターゲットグループのARNが必要のため、これを取得する。GUIでも可能だが、ここではコマンドで行う。事前にターゲットグループの名前を確認し、以下コマンドを追記修正する。

export TARGET_GROUP_ARN=`aws elbv2 describe-target-groups --query "TargetGroups[].[TargetGroupName,TargetGroupArn]" --output text | column -t | grep -i "検索対象ELBターゲットグループ名" | awk '{print $2}'`

TARGET_GROUP_ARN変数にARNが代入されたことを確認する。
ARNはarn:aws:elasticloadbalancing:ap-northeast-1…という名称。

echo ${TARGET_GROUP_ARN}

インスタンスID取得

EC2のタグ「Name」に対して、「target-grp-machine01」と設定しているマシンのインスタンスIDを確認する(このマシンがターゲットグループ配下にいると仮定)。タグNameでなくとも、なにかしらタグとValueを入れていれば検索できる。

EC2_NAME変数にtarget-grp-machine01を代入。

export EC2_NAME=target-grp-machine01

この名前から、Nameタグを検索し、インスタンスIDを表示してINSTANCE_ID変数に代入。

export INSTANCE_ID=`aws ec2 describe-instances --filter "Name=tag:Name,Values=${EC2_NAME}" --query "Reservations[].Instances[].[InstanceId]" --output text | column -t`

インスタンスIDが代入されたことを確認する。

echo ${INSTANCE_ID}

ターゲットグループのターゲット状態確認

ターゲットグループの対象EC2の状態を確認する。healthyになっているかどうかなどをこのコマンドで確認する。

aws elbv2 describe-target-health --target-group-arn ${TARGET_GROUP_ARN} --query 'TargetHealthDescriptions[].{Id:Target.Id,Port:Target.Port,State:TargetHealth.State}' --output text | column -t

ポート番号も表示されるため、次のコマンドで利用する。

ターゲットグループ除外

ターゲットグループから確認したインスタンスIDを除外する。

aws elbv2 deregister-targets --target-group-arn ${TARGET_GROUP_ARN} --targets Id=${INSTANCE_ID}

状態は先ほどの「ターゲットグループのターゲット状態確認」コマンドで確認する。

aws elbv2 describe-target-health --target-group-arn ${TARGET_GROUP_ARN} --query 'TargetHealthDescriptions[].{Id:Target.Id,Port:Target.Port,State:TargetHealth.State}' --output text | column -t

実行後はしばらくdrainingとなり、最終的にリストから対象インスタンスが消える。


ターゲットグループ登録

CloudShellは10分ぐらいでサインアウトされるので、念のため環境変数を確認する。値が入っていればOK。なければ再度代入。

echo ${TARGET_GROUP_ARN}
echo ${INSTANCE_ID}

以下コマンドで対象インスタンスをターゲットグループに登録する。ここでは443(https)で負荷分散しているが、環境に合わせて「Port=」の数値は変更する。

aws elbv2 register-targets --target-group-arn ${TARGET_GROUP_ARN} --targets Id=${INSTANCE_ID},Port=443

状態は先ほどの「ターゲットグループのターゲット状態確認」コマンドで確認する。

aws elbv2 describe-target-health --target-group-arn ${TARGET_GROUP_ARN} --query 'TargetHealthDescriptions[].{Id:Target.Id,Port:Target.Port,State:TargetHealth.State}' --output text | column -t

登録直後はしばらくinitialとなり、最終的に対象インスタンスがhealthyと表示される。

参考

【AWS CLI】ALBおよびNLB関連の情報取得編


AWS – ターゲットグループのターゲット情報の取得


【AWS】ALBからの切り離しと再登録手順


いまさらですがLinuxで環境変数を設定したい


複数行の文字列をShell変数に格納して、forで回した時の挙動

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?