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分くらいは待ってみて)
#おまけ
バランシングが行われているか実感できなかったので実証
##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
ELBのDNSNameをブラウザ更新するごとに「This page is pripri!!!」⇔「This page is secsec!!!」と表示が変わってバランシングが実感できます。
間違い、改善点等ありましたらご指摘お願いします。