#はじめに
EC2は障害対策のため、複数のアベイラビリティゾーンに配置し冗長化すると思います。
また、大量アクセス等のサーバーへの負荷にも備えて、自動でEC2を増加させる(AutoScaling)させることも重要です。
本記事では、ハンズオン形式で、以上の内容(+冗長化したRDS)をまとめていきます。
またVPCの作成から始めるので、初心者の方もぜひ参考にしてください!
よかったら最後まで読んでください!
#概要
本記事では、以下の構成を目指します。
※ EC2にはapacheをインストールします。
大まかには、以下の手順で構築していきます。
- VPCの作成
- 冗長化したEC2の作成
- ALBの作成
- AutoScalingの設定
- 冗長化したRDSの作成
#VPCの作成
###0.概要
この章では以下の構成まで行います。
大まかな手順は以下の通りです。
- VPCを作成
- サブネットの作成
- インターネットゲートウェイの作成とアタッチ
- ルートテーブルの設定
###1.VPCの作成
まずは、VPCを作成していきます。
今回のCIDRブロックは10.0.0.0/21で進めます。
こうすることで、10.0.0.0/24〜10.0.7.0/24のIPアドレスをサブネットに割り当てることができます。
###2. サブネットの作成
今回はEC2, RDSの冗長化を行うため、4つのサブネットを作成します。
それぞれ2つのアベイラビリティゾーン(以下AZと記載)に割り振ります。
-
サブネットを設定
privateサブネット、publicサブネットをそれぞれ2つずつ、合計4つのサブネットを作成します。
「新しくサブネットを追加」を押すと、一度に複数のサブネットを作成することができます。
今回は以下の4つのサブネットを作成します。
Name | IPv4 CIDR ブロック | AZ |
---|---|---|
test-subnet-public1 | 10.0.0.0/24 | ap-northeast-1a |
test-subnet-public2 | 10.0.1.0/24 | ap-northeast-1c |
test-subnet-private1 | 10.0.2.0/24 | ap-northeast-1a |
test-subnet-private2 | 10.0.3.0/24 | ap-northeast-1c |
全てのサブネットの設定が終わったら「サブネットを作成」を押します。
###3. インターネットゲートウェイの作成とアタッチ
次にインターネットゲートウェイを作成します。
また作成したらアタッチをして、インターネットゲートウェイを通してVPCにアクセスできるようにします。
###4. ルートテーブルの編集
通信の設定を行うためにルートテーブルを編集します。
VPCの作成は以上です。続いてEC2を作成していきます。
#冗長化したEC2の作成
###0.概要
この章では以下の構成まで行います。
EC2は複数のAZに作成していきます。
また、EC2にはapacheをインストールしていきます。
大まかな手順は以下の通りです。
- EC2の作成(1つ目、ap-northeast-1a)
- apacheのインストール
- 仮ファイルの作成
- EC2の作成(2つ目、ap-northeast-1c)
仮ファイルはALBの通信チェックのために作成します。
※ALBにおいてヘルスチェックというEC2へリクエストを送ってリスポンスが返ってくるかチェックをするのですが、その時のためにファイルを用意しておきます。
###1. EC2の起動(1つ目、ap-northeast-1aにて起動)
まずは、1つ目のEC2をap-northeast-1aにて作成していきます。
-
VPCとサブネットを選択します。
作成したVPCとtest-subnet-public1を選択しましょう!
また、「自動割り当てパブリック」は「有効」にしましょう!
他はデフォルトのまま、「次のステップ:ストレージの追加」をクリック
-
Nameタグを追加します。今回はTest-server1とします。
追加できたら、「次のステップ:セキュリティグループの設定」をクリックします。
-
新しいセキュリティグループを作成するを選択し、セキュリティグループを「Test-WebSG1」をします。
後ほどALBの設定で変更しますが、一旦SSHとHTTPの2つのタイプを設定しましょう!
※タイプを設定すると、プロトコルとポート範囲は自動で設定されます。
設定が終わったら「確認と作成」をクリック
-
次にキーペアを作成します。
キーペアはEC2インスタンスにログインするための鍵のことです。
キーペアを既に作成していれば、既存のキーペアを利用することができます。今回は「test」という名前で新しくキーペアを作成します。
ダウンロードが完了したらキーペアをダウンロードのフォルダから移動させます。(今回はデスクトップに移動させました)。
全て終わったら「起動」をクリックしましょう
###2. apacheのインストール
それではapacheをインストールしていきます。
- まずは、ローカルからEC2にログインします。
ログインの際は先ほど、取得したキーペアを用います。
まずは、キーペアがあるフォルダ(今回はデスクトップ)に移動します。
その後、キーペアの権限を変更し、読み取り専用にしEC2にログインします。
$ cd desktop
$ chmod 400 test.pem
# 以下の「XX.XX.XX.XX」には、作成したEC2インスタンスのパブリックIPを入力してください
$ ssh -i test.pem ec2-user@XX.XX.XX.XX
- それではapacheをインストールしていきます。
$ sudo su -
$ yum -y install httpd
- apacheを起動します。またEC2の起動と同時にapacheも起動するよう設定します。
$ systemctl start httpd.service
$ systemctl enable httpd.service
- apacheが起動しているか確認してみましょう!
以下の様にactive(ruunning)になっていれば大丈夫です。
$ systemctl status httpd.service
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2021-01-30 05:32:27 UTC; 2s ago
# 中略
Jan 30 05:32:27 ip-10-0-0-165.ap-northeast-1.compute.internal systemd[1]: Starting The Apache HTTP Server...
###3. 仮ファイルの作成
ロードバランサーでヘルスチェックをする際に、ファイルがないと「unhealty」表示になってしまうため、表示ファイルを作成します。
EC2にログインした後に、htmlディレクトリまで移動します。
# rootユーザーに変更しておきます。
$ sudo su -
$ cd /var/www/html
$ touch index.html
これで、OKです。何も記載しなくても問題はないのですが、今回は以下のような表示で進めます。
<h1>Test-server1</h1>
###4. EC2の作成(2つ目、ap-northeast-1c)
それでは、apacheをインストールしたEC2インスタンス(Name:Test-server1)のAMIイメージを作成して2つ目のEC2インスタンスを作成していきます。
-
まずは1つ目のインスタンスをコピーしましょう!
1つ目のインスタンスを選択し、アクション> イメージとテンプレート>イメージを作成をしていきます。
-
それでは2つ目のインスタンスを作成してきます。
「インスタンスを起動」をクリックした後、マイAMIをクリックしましょう。
先ほど、作成した「Test-Server-image」があるので、こちらを選択しましょう。
-
インスタンスタイプは先ほどと同様「t2.micro」で進めます。
-
ネットワークは作成したVPCを選択します。
サブネットは「test-subnet-public2」を選択しましょう。
自動割り当てパブリックは有効にします。
-
ストレージはデフォルトのままで進めます。
-
確認と作成を押し、先ほど作成したキーペアを選択したのち、インスタンスを起動しましょう!
以上でEC2の起動は終了となります。
次に、ALBを作成していきましょう
#ALBの作成
###0.概要
この章では以下の構成まで行います。
大まかな手順は以下の通りです。
- ALBの作成
- EC2のセキュリティグループの変更
まずはALBを作成し、その後はEC2へのアクセスをALBからできるようにセキュリティグループを変更していきます。
###1. ALBの作成
-
ロードバランサーの種類を選択します。今回は「Application Load Balancer」を選択します(HTTP, HTTPSと書いてある方です)。
-
ロードバランサーの設定をしていきます。
名前を「Test-LB」にしました。
対象となるVPCは「TestVPC」、サブネットは「test-subnet-public-1」「test-subnet-public-2」を指定します。
-
新しいセキュリティグループを作成していきます。今回は「Test-LB-SG」としました。
タイプは「HTTP」、ソースは「0.0.0.0/0, ::/0」を指定します。
-
ヘルスチェックの項目については、プロトコルが「HTTP」、パスは「/」を記入します。
ヘルスチェックの詳細は、デフォルトから正常のしきい値を「2」、感覚を「10」に変更します。
-
ターゲットを登録していきます。下の2つのインスタンスにチェックをつけて、「登録済みに追加」をクリックします。
追加されたら、「次の手順:確認」をクリックし、ALBの作成を完了しましょう
###2. EC2のセキュリティグループの変更
EC2をALB経由でインターネットに接続されるように、EC2のセキュリティグループを変更しましょう。
-
セキュリティグループのページからEC2で用いているセキュリティグループを選択し、「インバウンドルールを編集」をクリック。
-
HTTPのソースを「0.0.0.0/0」から先ほど作成したALBのセキュリティグループ「Test-LB-SG」に変更します。
ルールを保存したら、完了です!
ALBの作成は以上となります。
次にAutoAcalingの設定をしていきます。
#AutoScalingの設定
###0.概要
この章では以下の構成まで行います。
大まかな手順は以下の通りです。
- 起動テンプレートの作成
- AutoScalingグループの作成
- cloudWatchで監視の設定
- AutoScalingのポリシーの追加
デフォルトで2つのEC2インスタンスを設定し、最大4つまでEC2インスタンスを増やす設定にします。
###1. 起動テンプレートの作成
まずはAutoScalingで複製するEC2のテンプレートを作成します。
-
起動テンプレートの設定をしていきます。
今回は、起動テンプレート名は「Test-LT」、テンプレートバージョンは「1.0.0」 にしました。
-
AMIは「Test-Server-image」、インスタンスタイプは「t2.micro」、キーペアは「test.pem」を用います。
その他の設定はデフォルトで、起動テンプレートを作成していきます。
###2. AutoScalingグループの作成
先ほど作成した起動テンプレートを元にAutoScalingグループを作成します。
-
名前を「Test-AS」に設定し、起動テンプレートは先ほど作成した「Test-LT」を選択した後「次へ」をクリックします。
-
「起動テンプレートに準拠する」を選択し、サブネットは「test-subnet-public-1」「test-subnet-public-2」を選択します(VPCは「TestVPC」です)。
-
次に「既存のロードバランサーにアタッチ」「アプリケーションまたはNetwork Load Balanceerターゲットグループから選択」を選択します。
-
ターゲットグループには「Test-LB-TG」を選択します。
ヘルスチェックは「ELB」にもチェックを入れます。ヘルスチェックの猶予期間は300秒で進めます。
-
グループサイズについて希望する容量は「2」、最小キャパシティは「2」、最大キャパシティは「4」で進めます。
※既存のEC2インスタンスと合わせてデフォルトで4つのEC2インスタンスが立ち上がり、最大で6つとなります。
-
通知については、何も設定せず「次へ」をクリックします。
-
タグについても何も設定せずに「次へ」をクリックします。
-
その後のページで「AutoScalingグループを作成」をクリックして、作成していきましょう
###3. CloudWatchで監視の設定
次にCloudWatchにて、EC2の負荷状況を監視するための設定をしていきます。
今回は、「CPU稼働が70%より大きい」「CPU稼働が30%より小さい」という基準を設けます。
これらの基準に満ちた場合は、アラームを発生させる設定を組みます。
-
「メトリックスを選択」から以下の順番で最終的にTest-ASのCPUUtilizationを選択します。
メトリクスを選択> EC2 > Auto Scaling グループ別 >Test-ASのCPUUtilization
-
アクションの設定は今回は設定しないこととします。
「次へ」をクリックします。 -
アラーム名を「Test-CPU-High」と設定します。
「次へ」をクリックし、次のページで「アラームを作成」をクリックしましょう
-
同様に30%未満のアラームを作成していきます。
アラーム名を「Test-CPU-Low」と設定していきます。
現在では、CPU稼働率が30%よりも低いため、Test-CPU-Lowがアラーム状態になっております。
次に「Test-CPU-High」「Test-CPU-Low」をAutoScalingと対応させます。
###4. AutoScalingのポリシーの追加
-
まずは、「Test-CPU-High」の設定からしていきます。
ポリシータイプは「シンプルなポリシー」、アラームは「Test-CPU-High」、アクションは「追加、1、キャパシティユニット」、待機は「30秒」で設定していきます。
全て設定できたら作成を押します。
-
「Test-CPU-Low」も同様に作成します。
AutoScalingの設定は以上となります。
最後にデータベース作成のために、RDSを作成していきます。
#RDSの作成
###0.概要
この章では以下の構成まで行います。
大まかな手順は以下の通りです。
- サブネットグループの作成
- RDSの作成
- セキュリティグループの編集
###1. サブネットグループの作成
まずはDBサブネットグループを作成していきます。
###2. RDSの作成
-
データベースを作成していきます。
画像で示したいのですが、かなり長くなってしまうためこちらは表で記載いたします。
※以下の表に記載がないものはデフォルトの設定で進めます。
全ての記入が終わったら「データベースの作成」をクリック
項目 | 選択 |
---|---|
データベース作成を選択 | 標準作成 |
エンジンのオプション | MySQL |
テンプレート | 開発/テスト |
DBインスタンス識別子 | test-database-1 |
パスワード | 各自設定をしてください |
DBインスタンスサイズ | db.t2.micro(以前の世代のクラスを含める) |
マルチAZ配置 | スタンバイインスタンスを作成する |
VPC | TestVPC |
サブネットグループ | test-subnetg |
VPCセキュリティグループ | 新規作成(名前:Test-RDS-SG) |
追加設定>最初のデータベース設定 | Test_db |
###3. セキュリティグループの編集
最後にセキュリティグループのインバウンドルールをEC2からのみに設定します。
以上で終了となります。
大変長くなってしまいましたが、これで冗長化されたEC2とRDSを構築し、さらにAutoScalingも設定することができました。
最後まで読んでいただきありがとうございました。