LoginSignup
2
3

More than 5 years have passed since last update.

0.5から始めるAWS CLI入門 - ⑤ELB

Last updated at Posted at 2016-03-03

AWS CLI勉強中の内容をまとめていきます。
PREV:0.5から始めるAWS CLI入門 - ④EC2


hiroshik1985さんの0から始めるAWS入門③:ELB編の内容をAWS CLIで行います(若干違うとこもあります)。

準備

ELB用のセキュリティグループの作成、テスト用Webページ作成

ELB用のセキュリティグループを作成

VPCは前々回で作成したもの

$ aws ec2 create-security-group --group-name Test-elb-SG --description "Test-elb-SG" --vpc-id vpc-@@@@@@@@
{
    "GroupId": "sg-ESESESES"
}

Nameタグをつけて

$ aws ec2 create-tags --resources sg-ESESESES --tags Key=Name,Value=Test-elb-SG

ルール登録

$ aws ec2 authorize-security-group-ingress --group-id sg-ESESESES --protocol tcp --port 80 --cidr 0.0.0.0/0

テスト用Webページの作成

前回用意しておくの忘れてました。
別にデフォルトのページでも良いんですが、後の分散を実感するおまけの為に。
作成したEC2インスタンスでテスト用のWebページ作成します。

$ sudo yum install httpd
$ sudo vi /var/www/html/index.html
~
~
~
<html>
<head>
<title>Hello world !</title>
</head>
<body>
This page is pripri!!!
</body>
</html>
~
~
~
$ sudo service httpd start
$ sudo chkconfig httpd on

ELBの作成と設定

ELBの作成、設定、インスタンスの追加

ELBの作成

Load Balancer Protocol Load Balancer Port Instance Protocol Instance Port
HTTP 80 HTTP 80

長い。。。ひたすらに長い作成コマンド
前々回で作成したsubnet-AAAAAAAA subnet-CCCCCCCCを跨がせ、先ほど作成したELB用のセキュリティーグループsg-ESESESESを適用。
作成が成功したらDNSNameが出力される

$ aws elb create-load-balancer --load-balancer-name Test-Web-elb --listeners Protocol=HTTP,LoadBalancerPort=80,InstanceProtocol=HTTP,InstancePort=80 --tag Key=Name,Value=Test-Web-elb --subnets subnet-AAAAAAAA subnet-BBBBBBBB --security-groups sg-ESESESES
{
    "DNSName": "Test-Web-elb-000000000.ap-northeast-1.elb.amazonaws.com"
}

ヘルスチェックについてはこんな感じ

"HealthCheck": {
                "HealthyThreshold": 10,
                "Interval": 30,
                "Target": "TCP:80",
                "Timeout": 5,
                "UnhealthyThreshold": 2
            }

設定

クロスゾーン負荷分散をオンにする

クロスゾーン負荷分散については、Cross-Zone Load Balancing を有効にしない理由がない件

マネジメントコンソールからの作成だとデフォルトでオンになっているのに、AWS CLIだと
オフになってる。。。

$ aws elb modify-load-balancer-attributes --load-balancer-name Test-Web-elb --load-balancer-attributes "{\"CrossZoneLoadBalancing\":{\"Enabled\":true}}"
{
    "LoadBalancerAttributes": {
        "CrossZoneLoadBalancing": {
            "Enabled": true
        }
    },
    "LoadBalancerName": "Test-Web-elb"
}

ELBへインスタンスを追加

前回作成したEC2インスタンスをELBへ追加

$ aws elb register-instances-with-load-balancer --load-balancer-name Test-Web-elb --instances i-HHHHHHHH

ELBのDNSNameをブラウザに入力する事で、テスト用Webページが出力されます。(追加したEC2インスタンスをELBが正常だと判断するには少し時間がかかるっぽいので3分くらいは待ってみて)
キャプチャ.JPG

おまけ

バランシングが行われているか実感できなかったので実証

Webサーバのインスタンスを作成

もうひとつインスタンスを作成します。
今回は、既存の「Test-Server01」のAMIを作成し、「Test-Server02」を作成する。

AMI作成

※AMI取得対象のインスタンス「Test-Server01」は事前に停止かシャットダウンしておきます

$ aws ec2 create-image --instance-id i-HHHHHHHH --no-reboot --name test_web_server
{
    "ImageId": "ami-MMMMMMMM"
}

AMIからインスタンス作成

今回作成したAMIとsubnet-CCCCCCCC(AZ-Cにあるsubnet)を指定してインスタンス作成

$ aws ec2 run-instances --image-id ami-MMMMMMMM --count 1 --instance-type t2.micro --key-name Test-key --security-group-ids sg-GGGGGGGG --subnet-id subnet-CCCCCCCC --associate-public-ip-address
################出力略################

           "VpcId": "vpc-@@@@@@@@",
           "StateTransitionReason": "",
           "InstanceId": "i-NNNNNNNN",

######################################

いそいそNameタグ

$ aws ec2 create-tags --resources i-NNNNNNNN --tagsKey=Name,Value=Test-Server02

テスト用Webページ作成

Test-Server02にログインして

$ sudo yum install httpd
$ sudo vi /var/www/html/index.html
~
~
~
<html>
<head>
<title>Hello world !</title>
</head>
<body>
This page is secsec!!!
</body>
</html>
~
~
~
$ sudo service httpd start
$ sudo chkconfig httpd on

ELBへインスタンスを追加


$ aws elb register-instances-with-load-balancer --load-balancer-name Test-Web-elb --instances i-NNNNNNNN

無題.png

ELBのDNSNameをブラウザ更新するごとに「This page is pripri!!!」⇔「This page is secsec!!!」と表示が変わってバランシングが実感できます。


間違い、改善点等ありましたらご指摘お願いします。

Next:0.5から始めるAWS CLI入門 - ここまでのコマンドまとめ

2
3
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
3