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

AWS CLI勉強中の内容をまとめていきます。
PREV：**[0.5から始めるAWS CLI入門 - ④EC2](http://qiita.com/yarakaki/items/45b59ad11f17142b5817)**
* * *

[hiroshik1985](http://qiita.com/hiroshik1985)さんの[0から始めるAWS入門③：ELB編](http://qiita.com/hiroshik1985/items/ffda3f2bdb71599783a3)の内容をAWS CLIで行います（若干違うとこもあります）。

#準備
ELB用のセキュリティグループの作成、テスト用Webページ作成
##ELB用のセキュリティグループを作成
VPCは[前々回](http://qiita.com/yarakaki/items/39c035d3d66918726c61)で作成したもの

```:
$ 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            |

長い。。。ひたすらに長い作成コマンド
[前々回](http://qiita.com/yarakaki/items/39c035d3d66918726c61)で作成した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 を有効にしない理由がない件](http://qiita.com/rch850/items/23c0743876ef5ab7bd30)を

マネジメントコンソールからの作成だとデフォルトでオンになっているのに、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へインスタンスを追加
[前回](http://qiita.com/yarakaki/items/45b59ad11f17142b5817#_reference-6c60d22f77ea93714678)作成した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](https://qiita-image-store.s3.amazonaws.com/0/113901/17f04827-c131-bab8-130a-63263f6e4ae7.jpeg)

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

##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](https://qiita-image-store.s3.amazonaws.com/0/113901/0f0fdb66-dc64-3984-25d4-47ed23fab307.png)

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

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

Next：**[0.5から始めるAWS CLI入門 - ここまでのコマンドまとめ](http://qiita.com/yarakaki/items/5c77b6579d05b9e5e50a)**