{Accelerator}AWS Global Accelerator の使用開始

 

https://docs.aws.amazon.com/ja_jp/global-accelerator/latest/dg/getting-started.html

標準アクセラレーター  -> エンドポイントはALB,NLB,EC2
カスタムルーティングアクセラレーター

標準アクセラレータの場合、トラフィックは、ユーザーの場所、エンドポイントの正常性、設定するエンドポイントの重みなど、
いくつかの要因に基づいて、最適な AWS エンドポイントにルーティングされます。


Global Accelerator はグローバルサービスであるため、特定の AWS リージョンに関連付けられていません。
アクセラレーターを作成または更新するには、米国西部(オレゴン)リージョンを指定する必要があります。

 

東京リージョン(ap-northeast-1)とオレゴン(us-west-2)にALBを作成
そのALBを送信先とする標準アクセラレーターを作成

前提: オレゴン(us-west-2)にkey1インポート済

 

-- 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. ALB作成 [ap-northeast-1での作業]

-- 2.1 EC2インスタンス作成 [ap-northeast-1での作業]


-- ap-northeast-1a

export AWS_DEFAULT_REGION=ap-northeast-1

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 ec2 run-instances \
--image-id ami-0404778e217f54308 \
--instance-type t3.nano \
--key-name key1 \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=instance01}]' \
--subnet-id subnet-11111111111111111 \
--user-data file://a.sh


aws ec2 describe-instances


-- 2.2 ロードバランサーの作成 [ap-northeast-1での作業]


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

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


-- 2.3 ターゲットグループの作成 [ap-northeast-1での作業]

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

aws elbv2 register-targets \
--target-group-arn arn:aws:elasticloadbalancing:ap-northeast-1:999999999999:targetgroup/target01/5555555555555555  \
--targets Id=i-66666666666666666


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


-- 2.4 ALBリスナーの作成 [ap-northeast-1での作業]

aws elbv2 create-listener \
--load-balancer-arn arn:aws:elasticloadbalancing:ap-northeast-1:999999999999:loadbalancer/app/alb01/7777777777777777 \
--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/7777777777777777

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

 

 

-- 3. ALB作成 [us-west-2での作業]

-- 3.1 EC2インスタンス作成 [us-west-2での作業]

-- us-west-2a
export AWS_DEFAULT_REGION=us-west-2

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 ec2 run-instances \
--image-id ami-098e42ae54c764c35 \
--instance-type t3.nano \
--key-name key1 \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=instance01}]' \
--subnet-id subnet-88888888888888888 \
--user-data file://a.sh


aws ec2 describe-instances


-- 3.2 ロードバランサーの作成 [us-west-2での作業]

aws elbv2 create-load-balancer \
--name alb01  \
--subnets subnet-88888888888888888 subnet-00000000000000000 \
--security-groups sg-00fefcad5bf19065a


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


-- 3.3 ターゲットグループの作成 [us-west-2での作業]

aws elbv2 create-target-group \
--name target01 \
--protocol HTTP \
--port 80 \
--vpc-id vpc-aaaaaaaaaaaaaaaaa \
--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:us-west-2:999999999999:targetgroup/target01/bbbbbbbbbbbbbbbb

aws elbv2 register-targets \
--target-group-arn arn:aws:elasticloadbalancing:us-west-2:999999999999:targetgroup/target01/bbbbbbbbbbbbbbbb  \
--targets Id=i-ccccccccccccccccc


aws elbv2 describe-target-health \
--target-group-arn arn:aws:elasticloadbalancing:us-west-2:999999999999:targetgroup/target01/bbbbbbbbbbbbbbbb


-- 3.4 ALBリスナーの作成 [us-west-2での作業]

aws elbv2 create-listener \
--load-balancer-arn arn:aws:elasticloadbalancing:us-west-2:999999999999:loadbalancer/app/alb01/dddddddddddddddd \
--protocol HTTP \
--port 80  \
--default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:us-west-2:999999999999:targetgroup/target01/bbbbbbbbbbbbbbbb


aws elbv2 describe-listeners \
--load-balancer-arn arn:aws:elasticloadbalancing:us-west-2:999999999999:loadbalancer/app/alb01/dddddddddddddddd

aws elbv2 describe-listeners \
--load-balancer-arn arn:aws:elasticloadbalancing:us-west-2:999999999999:loadbalancer/app/alb01/dddddddddddddddd | jq -r .Listeners.ListenerArn

 

 

-- 4. 標準アクセラレータ作成 [us-west-2での作業]

aws globalaccelerator create-accelerator \
--name ga01 \
--ip-address-type IPV4 \
--enabled


aws globalaccelerator list-accelerators

 

 

-- 5. GAリスナー作成 [us-west-2での作業]

aws globalaccelerator create-listener \
--accelerator-arn arn:aws:globalaccelerator::999999999999:accelerator/eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee \
--port-ranges '[
                {
                    "FromPort": 80,
                    "ToPort": 80
                }
            ]' \
--protocol TCP \
--client-affinity NONE

 


aws globalaccelerator list-listeners \
--accelerator-arn arn:aws:globalaccelerator::999999999999:accelerator/eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee

 

-- 6. エンドポイントグループ作成 [us-west-2での作業]


aws globalaccelerator create-endpoint-group \
--listener-arn arn:aws:globalaccelerator::999999999999:accelerator/eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee/listener/ffffffff \
--endpoint-group-region ap-northeast-1 \
--endpoint-configurations '[
                {
                    "EndpointId": "arn:aws:elasticloadbalancing:ap-northeast-1:999999999999:loadbalancer/app/alb01/7777777777777777",
                    "Weight": 128,
                    "ClientIPPreservationEnabled": true
                }
            ]' \
--traffic-dial-percentage 100.0 \
--health-check-port 80 \
--health-check-protocol TCP \
--health-check-path "/" \
--health-check-interval-seconds 30 \
--threshold-count 3

 

aws globalaccelerator create-endpoint-group \
--listener-arn arn:aws:globalaccelerator::999999999999:accelerator/eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee/listener/ffffffff \
--endpoint-group-region us-west-2 \
--endpoint-configurations '[
                {
                    "EndpointId": "arn:aws:elasticloadbalancing:us-west-2:999999999999:loadbalancer/app/alb01/dddddddddddddddd",
                    "Weight": 128,
                    "ClientIPPreservationEnabled": true
                }
            ]' \
--traffic-dial-percentage 100.0 \
--health-check-port 80 \
--health-check-protocol TCP \
--health-check-path "/" \
--health-check-interval-seconds 30 \
--threshold-count 3

 

aws globalaccelerator list-endpoint-groups \
--listener-arn arn:aws:globalaccelerator::999999999999:accelerator/eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee/listener/ffffffff

 


-- 7. 動作確認

curl http://xxxxxxxxxxxxxxxxx.awsglobalaccelerator.com/

 

 

-- 8. クリーンアップ

-- エンドポイントグループ削除 [us-west-2での作業]

aws globalaccelerator list-endpoint-groups \
--listener-arn arn:aws:globalaccelerator::999999999999:accelerator/eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee/listener/ffffffff


aws globalaccelerator delete-endpoint-group \
--endpoint-group-arn arn:aws:globalaccelerator::999999999999:accelerator/eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee/listener/ffffffff/endpoint-group/gggggggggggg

aws globalaccelerator delete-endpoint-group \
--endpoint-group-arn arn:aws:globalaccelerator::999999999999:accelerator/eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee/listener/ffffffff/endpoint-group/hhhhhhhhhhhh


-- GAリスナー削除 [us-west-2での作業]

aws globalaccelerator list-listeners \
--accelerator-arn arn:aws:globalaccelerator::999999999999:accelerator/eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee


aws globalaccelerator delete-listener \
--listener-arn arn:aws:globalaccelerator::999999999999:accelerator/eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee/listener/ffffffff

 


-- 標準アクセラレータ削除 [us-west-2での作業]

aws globalaccelerator list-accelerators


aws globalaccelerator update-accelerator \
--accelerator-arn arn:aws:globalaccelerator::999999999999:accelerator/eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee \
--no-enabled

 

aws globalaccelerator delete-accelerator \
--accelerator-arn arn:aws:globalaccelerator::999999999999:accelerator/eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee

 


-- ALBリスナーの削除 [us-west-2での作業]

aws elbv2 describe-listeners \
--load-balancer-arn arn:aws:elasticloadbalancing:us-west-2:999999999999:loadbalancer/app/alb01/dddddddddddddddd

aws elbv2 delete-listener \
--listener-arn arn:aws:elasticloadbalancing:us-west-2:999999999999:listener/app/alb01/dddddddddddddddd/iiiiiiiiiiiiiiii

-- ターゲットグループの削除 [us-west-2での作業]

aws elbv2 describe-target-groups

aws elbv2 deregister-targets \
--target-group-arn arn:aws:elasticloadbalancing:us-west-2:999999999999:targetgroup/target01/bbbbbbbbbbbbbbbb \
--targets Id=i-ccccccccccccccccc

aws elbv2 delete-target-group \
--target-group-arn arn:aws:elasticloadbalancing:us-west-2:999999999999:targetgroup/target01/bbbbbbbbbbbbbbbb

-- ロードバランサーの削除 [us-west-2での作業]

aws elbv2 describe-load-balancers

aws elbv2 delete-load-balancer \
--load-balancer-arn arn:aws:elasticloadbalancing:us-west-2:999999999999:loadbalancer/app/alb01/dddddddddddddddd

-- EC2インスタンスの削除 [us-west-2での作業]

aws ec2 describe-instances

aws ec2 terminate-instances --instance-ids i-ccccccccccccccccc

 

 

export AWS_DEFAULT_REGION=ap-northeast-1


-- ALBリスナーの削除 [ap-northeast-1での作業]

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

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

-- ターゲットグループの削除 [ap-northeast-1での作業]

aws elbv2 describe-target-groups

aws elbv2 deregister-targets \
--target-group-arn arn:aws:elasticloadbalancing:ap-northeast-1:999999999999:targetgroup/target01/5555555555555555 \
--targets Id=i-66666666666666666

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

-- ロードバランサーの削除 [ap-northeast-1での作業]

aws elbv2 describe-load-balancers

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

-- EC2インスタンスの削除 [ap-northeast-1での作業]

aws ec2 describe-instances

aws ec2 terminate-instances --instance-ids i-66666666666666666