{ALB}Auto Scaling with ALB

https://qiita.com/miyuki_samitani/items/e06c8cdcfe8a8df226e5
https://beyondjapan.com/blog/2017/03/aws-cli-autoscaling/

ロードバランサー
  |
  |---> リスナー
  |
ターゲットグループ
  ↓
オートスケーリンググループ
  ↑
起動設定

 

-- 1. コマンド等のインストール

-- 1.1 aws cli version 2 インストール

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

aws --version

-- 1.2 jqインストール
sudo yum -y install jq

 

 

-- 2. ロードバランサーの作成
※internal-ALBを作成
※AZはap-northeast-1a と ap-northeast-1c


aws elbv2 create-load-balancer \
--name alb01  \
--subnets subnet-11111111111111111  subnet-22222222222222222 \
--security-groups sg-33333333333333333 \
--scheme internal


aws elbv2 describe-load-balancers
aws elbv2 describe-load-balancers| jq -r .LoadBalancers.LoadBalancerArn

 

 

-- 3. ターゲットグループの作成

aws elbv2 create-target-group \
--name target01 \
--protocol HTTP \
--port 80 \
--vpc-id vpc-44444444444444444 \
--ip-address-type ipv4 \
--target-type instance

aws elbv2 describe-target-groups
aws elbv2 describe-target-groups| jq -r .TargetGroups.TargetGroupArn

aws elbv2 describe-target-group-attributes \
--target-group-arn arn:aws:elasticloadbalancing:ap-northeast-1:999999999999:targetgroup/target01/5555555555555555

 


-- 4. 起動設定の作成


vim a.sh

#!/bin/bash
yum -y update
yum -y install httpd
systemctl start httpd
systemctl enable httpd
echo $(hostname) > /var/www/html/index.html


aws autoscaling create-launch-configuration \
--launch-configuration-name lc01 \
--image-id ami-0404778e217f54308 \
--key-name key1 \
--security-groups sg-33333333333333333 \
--instance-type t3.nano \
--user-data file://a.sh


aws autoscaling describe-launch-configurations

 

-- 5. オートスケーリンググループの作成

aws autoscaling create-auto-scaling-group \
--auto-scaling-group-name asg01 \
--launch-configuration-name lc01 \
--min-size 1 \
--max-size 2 \
--desired-capacity 1 \
--availability-zones "ap-northeast-1a" "ap-northeast-1c" \
--target-group-arns "arn:aws:elasticloadbalancing:ap-northeast-1:999999999999:targetgroup/target01/5555555555555555" \
--vpc-zone-identifier "subnet-11111111111111111,subnet-22222222222222222"

 

aws autoscaling describe-auto-scaling-groups

 

 


-- 6. スケーリングポリシーを作成する

aws autoscaling describe-policies

 

aws autoscaling put-scaling-policy \
--auto-scaling-group-name asg01 \
--policy-name policy01 \
--policy-type TargetTrackingScaling \
--target-tracking-configuration '{
                "PredefinedMetricSpecification": {
                    "PredefinedMetricType": "ASGAverageCPUUtilization"
                },
                "TargetValue": 30.0,
                "DisableScaleIn": false
            }'


アラームが2個自動で作成される

 


-- 7. リスナーの作成

aws elbv2 create-listener \
--load-balancer-arn arn:aws:elasticloadbalancing:ap-northeast-1:999999999999:loadbalancer/app/alb01/6666666666666666 \
--protocol HTTP \
--port 80  \
--default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:ap-northeast-1:999999999999:targetgroup/target01/5555555555555555


aws elbv2 describe-listeners \
--load-balancer-arn arn:aws:elasticloadbalancing:ap-northeast-1:999999999999:loadbalancer/app/alb01/6666666666666666

aws elbv2 describe-listeners \
--load-balancer-arn arn:aws:elasticloadbalancing:ap-northeast-1:999999999999:loadbalancer/app/alb01/6666666666666666 | jq -r .Listeners[].ListenerArn

 


curl -v -X GET http://internal-alb01-0000000000.ap-northeast-1.elb.amazonaws.com

 

-- 8. 動作確認

ターゲットのEC2にログインして実行

yes > /dev/null &


aws elbv2 describe-target-health \
--target-group-arn arn:aws:elasticloadbalancing:ap-northeast-1:999999999999:targetgroup/target01/5555555555555555

 

-- 9. クリーンアップ


-- リスナーの削除

aws elbv2 describe-listeners \
--load-balancer-arn arn:aws:elasticloadbalancing:ap-northeast-1:999999999999:loadbalancer/app/alb01/6666666666666666


aws elbv2 delete-listener \
--listener-arn arn:aws:elasticloadbalancing:ap-northeast-1:999999999999:listener/app/alb01/6666666666666666/7777777777777777

-- ロードバランサーの削除

aws elbv2 describe-load-balancers

aws elbv2 delete-load-balancer \
--load-balancer-arn arn:aws:elasticloadbalancing:ap-northeast-1:999999999999:loadbalancer/app/alb01/6666666666666666


-- ターゲットグループの削除

aws elbv2 describe-target-groups


aws elbv2 delete-target-group \
--target-group-arn arn:aws:elasticloadbalancing:ap-northeast-1:999999999999:targetgroup/target01/5555555555555555

 

 


-- オートスケーリンググループの削除

aws autoscaling describe-auto-scaling-groups

aws autoscaling detach-instances \
--instance-ids "i-88888888888888888" "i-aaaaaaaaaaaaaaaaa" \
--auto-scaling-group-name asg01 \
--no-should-decrement-desired-capacity


aws autoscaling delete-auto-scaling-group \
--auto-scaling-group-name asg01 

 


-- 起動設定の削除

aws autoscaling describe-launch-configurations

aws autoscaling delete-launch-configuration \
--launch-configuration-name lc01


-- EC2インスタンスの削除

aws ec2 describe-instances

aws ec2 terminate-instances --instance-ids i-88888888888888888
aws ec2 terminate-instances --instance-ids i-aaaaaaaaaaaaaaaaa