4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AWS勉強会(4) / ELB + AutoScalingグループでwebサーバ

Posted at

以上を踏まえ、AutoScalingグループ設定を行ったwebサーバをELBでロードバランスする構成を作成する。

これまでは「EC2を作成後、手動でwebサーバの設定やコンテンツの配置」をしていたが、AutoScalingによる起動・終了の自動化を行うため、起動設定とユーザーデータへの設定でEC2起動の時点で必要なパッケージインストールや各設定が済んでいる状態にする。

webコンテンツは、とりあえずphpもインストールしてphpinfo()で…(IPアドレス表示が確認にも便利なので)

ここでの完成イメージ

bastion+web(ASG)+ELB (1).png

起動設定

作成するec2のwebサーバをAutoScalingグループに加えるため、[起動設定]を作成する。

高度な詳細

cloud-initを使って以下の設定をEC2起動時に行うよう設定する。

  • タイムゾーン設定
  • パッケージインストール
    • httpd
    • php
  • ドキュメントルートにphpinfo()を表示するphpコンテンツ作成
  • httpdプロセスの起動

詳細は AWS勉強会(補足1) / ユーザーデータでEC2作成時の初期設定を行う を参照。

# cloud-config

timezone: "Asia/Tokyo"

packages:
 - httpd
 - php

runcmd:
 - echo "<?php phpinfo(); ?>" > /var/www/html/index.php
 - /etc/init.d/httpd restart

パブリックIPアドレスはELB経由でのアクセスとなるので不要 (AWS勉強会(2) / ELB + プライベートサブネットのwebサーバ参照)

image.png

セキュリティグループの設定

image.png

次は、AutoScalingグループではなくロードバランサの作成を行う。
(AutoScalingグループの作成中に、作成済みロードバランサの設定があるため)

ロードバランサの作成

作成の流れはAWS勉強会(2) / ELB + プライベートサブネットのwebサーバの「ELBの作成」の手順通り。

ただし、まだEC2が稼働していない(起動設定を作成しただけ)なので、「ステップ5: ターゲットの登録」は何も設定しない。(AutoScalingグループの作成の中で行う)

image.png

Auto Scalingグループの作成

image.png

詳細設定

VPCとサブネットを選択

image.png

高度な詳細では「ロードバランシング」を有効にし、ターゲットグループに、ELBの作成で登録したターゲットグループを指定する。

image.png

スケーリングポリシー、通知についてはひとまず未入力。

タグの設定

「AutoScalingで自動で起動したEC2であること」がわかるようにしておけばひとまずOK

image.png

この設定でAutoScalingグループを作成すると、登録した定義に従ってEC2が1個作成される

image.png

EC2の確認

起動したらsshで(踏み台サーバ経由で)アクセスして確認してみる

zaki@wensley% ssh -o ProxyCommand='ssh -i ~/.ssh/aws-practice.pem ec2-user@*.*.*.* -W 172.26.20.100:22' -i ~/.ssh/aws-practice.pem ec2-user@172.26.20.100
The authenticity of host '172.26.20.100 (<no hostip for proxy command>)' can't be established.
ECDSA key fingerprint is SHA256:eo5sF26m3RsVFNI2rkPJcSDEB2lUYJWF5Nx7B2/IjRQ.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.26.20.100' (ECDSA) to the list of known hosts.

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2018.03-release-notes/
8 package(s) needed for security, out of 14 available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-172-26-20-100 ~]$ 
[ec2-user@ip-172-26-20-100 ~]$ 
[ec2-user@ip-172-26-20-100 ~]$ 
[ec2-user@ip-172-26-20-100 ~]$ rpm -qa | grep httpd
httpd-2.2.34-1.16.amzn1.x86_64
httpd-tools-2.2.34-1.16.amzn1.x86_64
[ec2-user@ip-172-26-20-100 ~]$ rpm -qa | grep php
php-cli-5.3.29-1.8.amzn1.x86_64
php-5.3.29-1.8.amzn1.x86_64
php-common-5.3.29-1.8.amzn1.x86_64
[ec2-user@ip-172-26-20-100 ~]$ ps aux | grep http
root      2704  0.0  1.6 281004 17136 ?        Ss   14:47   0:00 /usr/sbin/httpd
apache    2706  0.0  1.3 281756 13844 ?        S    14:47   0:00 /usr/sbin/httpd
apache    2707  0.0  1.3 281756 13844 ?        S    14:47   0:00 /usr/sbin/httpd
apache    2708  0.0  1.3 281756 13860 ?        S    14:47   0:00 /usr/sbin/httpd
apache    2710  0.0  1.3 281136 13836 ?        S    14:47   0:00 /usr/sbin/httpd
apache    2711  0.0  1.3 281756 13844 ?        S    14:47   0:00 /usr/sbin/httpd
apache    2712  0.0  1.3 281136 13836 ?        S    14:47   0:00 /usr/sbin/httpd
apache    2713  0.0  1.3 281136 13836 ?        S    14:47   0:00 /usr/sbin/httpd
apache    2714  0.0  1.3 281136 13836 ?        S    14:47   0:00 /usr/sbin/httpd
ec2-user  2790  0.0  0.2 110512  2148 pts/0    S+   14:50   0:00 grep --color=auto http
[ec2-user@ip-172-26-20-100 ~]$ 

ELBのアドレスにhttpアクセス

EC2上でtail -f /var/log/httpd/access_log しながら、ブラウザでアクセス

image.png

1個しかEC2を稼働させてないのでいわゆる片肺運用中だが、動作している。
phpinfo()で表示されるIPアドレスも、そのEC2のプライベートIPのものと一致している。

この時点での構成図

bastion+web(ASG)+ELB.png

インスタンス数を2個に増やす

Auto Scalingグループの設定でインスタンス数を2に変更する(最大値が1の場合は、そこも2に変更する)

image.png

Auto Scalingグループの設定でAZを複数設定していたので、起動したEC2は1つ目と異なるAZに割り振られる

image.png

ちなみに、ELBでロードバランスしている各EC2の状態は、設定しているターゲットグループの「ターゲット」からステータスを確認できる。

image.png

ここがinitialからhealthyに遷移すればOK

image.png

EC2が起動したら、webアクセスで何度かリロードしてみると、起動している複数のEC2のwebサーバへアクセスが振り分けられているのが確認できる。

image.png

この時点でこういう構成になっている。

bastion+web(ASG)+ELB (1).png

あとは、AutoScalingグループの設定で起動するインスタンスを増減させることで、負荷分散するwebサーバの数を簡単に変更することができる。

EC2の停止・削除

AutoScalingグループでインスタンス数を0い設定すればOK。

image.png

ELBとの切断に少し時間がかかるが、しばらく待てば通常のEC2の削除と同様に停止・削除される。

image.png

4
1
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
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?