EC2 を複数台構成にするため、既存の EC2 インスタンスを複製します。
このページは AWS基礎入門チュートリアル の一部です。 AWS チュートリアル全体は AWS基礎入門チュートリアルを参照してください。
目次
インスタンスの複製
複数台構成にするには、もう一台 EC2 インスタンスを作成する必要があります。 一台目と同じ手順で作成し、同じ手順で Apache や PHP をインストールするのでもよいのですが、 複製を簡単に作れるというのはクラウドのメリットですので、 インスタンスを複製してみましょう。
作成済 EC2 インスタンスのアベイラビリティゾーン確認
AWS コンソール > EC2 > インスタンス にて、EC2 インスタンス一覧が表示されます。 作成済みの EC2 インスタンスの「アベイラビリティゾーン」を確認してください。 ここでは “us-east-2c” となっています。 なぜアベイラビリティゾーンを確認するかというと、新しい EC2 インスタンスを立てる際、 1台目とは異なるアベイラビリティゾーンを設定したいからです。
![](https://cloud-textbook.com/wp-content/uploads/2019/02/tuto-aws-ec2-dup-0.png)
余談 アベイラビリティゾーンとは
ここでアベイラビリティゾーンについて説明しておきます。 AWS では「東京」「オハイオ」などのリージョンがありますが、 実体としては下記の図のように複数のアベイラビリティゾーンで構成されています。
![](https://cloud-textbook.com/wp-content/uploads/2019/02/tuto-aws-ec2-dup-0-5.png)
us-east-2 (オハイオ) だと下記の3つのアベイラビリティゾーンで構成されています。
- us-east-2a
- us-east-2b
- us-east-2c
アベイラビリティゾーンは 3つだけというわけではなく、 us-east-1 (バージニア北部) の場合、us-east-1a〜1f までの 6つ、 asia-northeast-1 (東京)の場合、asia-northeast-1a〜1d の 4つあります。
EC2 インスタンス一覧画面からスタート
再び AWS コンソール > EC2 > インスタンス にて、EC2 インスタンス一覧 に戻ります。
複製したいインスタンスの行にマウスポインタを移動し、右クリックでメニューを開き、「イメージ > イメージの作成」を選択します。
![](https://cloud-textbook.com/wp-content/uploads/2019/02/tuto-aws-ec2-dup-1.png)
イメージ作成ダイアログ
下記のように「イメージの作成」ダイアログが表示されます。 これは選択した EC2 インスタンスを元にイメージ (AMI) を作ります、ということです。 今回はコピーしたいわけなので余計な変更は不要です。
![](https://cloud-textbook.com/wp-content/uploads/2019/02/tuto-aws-ec2-dup-2.png)
入力
下記のようにイメージ名だけ入力しましょう。イメージ名は後から変更できないので、よく考えて決めましょう。 その後、画面右下の「イメージの作成」を押下します。
![](https://cloud-textbook.com/wp-content/uploads/2019/02/tuto-aws-ec2-dup-3.png)
イメージ作成中
下記のようにイメージ作成中となります。 待っていても何も起こらないので、AWSコンソール > EC2 > AMI に移動します。
![](https://cloud-textbook.com/wp-content/uploads/2019/02/tuto-aws-ec2-dup-4.png)
AMI 一覧
数分待つと、下記のように AMI が作成されます。 AMI の作成が完了した状態が下記です。 次に、この AMI を元に、新しい EC2 インスタンスを作成しましょう。 AMI 一覧の左にある、青いチェックボックスを ON にして、 左上にある「作成」ボタンを押します。
![](https://cloud-textbook.com/wp-content/uploads/2019/02/tuto-aws-ec2-dup-5.png)
AMI を元に、新しい EC2 インスタンスを作成
すると下記のように EC2 インスタンス生成画面に遷移するのですが、 「1. AMI の選択」をすっ飛ばして「2. インスタンスタイプの選択」画面になっています。
![](https://cloud-textbook.com/wp-content/uploads/2019/02/tuto-aws-ec2-dup-5-5.png)
AMI がどうなっているか、「1. AMI の選択」をクリックすると確認できます。 下記のように自分で作成した myami が設定されていますね。
![](https://cloud-textbook.com/wp-content/uploads/2019/02/tuto-aws-ec2-dup-6.png)
アベイラビリティゾーン設定
次に、「3. インスタンスの設定」を押してください。 「サブネット」のプルダウンが「優先順位なし」となっていると思います。
![](https://cloud-textbook.com/wp-content/uploads/2019/02/tuto-aws-ec2-dup-6-5.png)
このサブネットのプルダウンを、下記のように “us-east-2b” を含むものに変更してください。 1台目の “us-east-2c” 以外であれば何でもよいので、 “us-east-2a” でも “us-east-2b” でもよいのですが、何となく “us-east-2b” とします。
![](https://cloud-textbook.com/wp-content/uploads/2019/02/tuto-aws-ec2-dup-6-7.png)
セキュリティグループ設定
次に、「6. セキュリティグループの設定」を押してください。 下記のように「新しいセキュリティグループを作成する」にチェックが入っています。
![](https://cloud-textbook.com/wp-content/uploads/2019/02/tuto-aws-ec2-dup-7.png)
最初に作成した EC2 のセキュリティグループは launch-wizard-1 でした。 今回、2台とも同じセキュリティグループに含めたいので、 下記のように「既存のセキュリティグループを作成する」を選択し、 “launch-wizard-1” にチェックをしてください。
![](https://cloud-textbook.com/wp-content/uploads/2019/02/tuto-aws-ec2-dup-8.png)
なお、新しいセキュリティグループを作成してもよいのですが、 その場合はポート80を開け、RDS 側のセキュリティグループにて、 2台目の EC2 からのアクセスを許可しなくてはいけません。 既存と同じセキュリティグループにすることで、この作業を省くことができます。
この状態で下記のようになります。
- EC2 1台目のセキュリティグループ launch-wizard-1
- ポート 22/ssh を開放
- ポート 80/http を開放
- EC2 2台目のセキュリティグループ launch-wizard-1
- ポート 22/ssh を開放
- ポート 80/http を開放
- RDS のセキュリティグループ rds-launch-wizard
- EC2 に割り当てた launch-wizard-1 からの MySQL 接続を許可
画面右下の「確認と作成」ボタンを押して次に進みます。
確認
確認画面です。問題なければ画面右下の「作成」ボタンを押してください。
![](https://cloud-textbook.com/wp-content/uploads/2019/02/tuto-aws-ec2-dup-9.png)
キーペア設定
2台目の EC2 にキーペアを設定します。 新規キーペアを作ってしまうと、ssh ログインする際に「どのキーペアだっけ」となるので面倒ですので、1台目と同じ既存のキーペアを選択しましょう。
確認の文言「選択したプライベートキーファイル (ec2keypair.pem) へのアクセス権があり、このファイルなしではインスタンスにログインできないことを認識しています」のチェックボックスにチェックを入れ、「インスタンスの作成」ボタンを押します。
![](https://cloud-textbook.com/wp-content/uploads/2019/02/tuto-aws-ec2-dup-10.png)
作成中
EC2 インスタンス作成中画面になります。 数分かかります (画面は自動更新されませんので、ずっと待っていても何も起こりません)。
![](https://cloud-textbook.com/wp-content/uploads/2019/02/tuto-aws-ec2-dup-11.png)
EC2 インスタンス一覧
数分待つと「AWS コンソール > EC2 > インスタンス」にて、下記のように 2台目のインスタンスが起動したと思います。 1台目のアベイラビリティゾーンは「us-east-2c」ですが、2台目は「us-east-2b」となっています。 狙いどおり異なるアベイラビリティゾーンで EC2 インスタンスを立てることができました。
![](https://cloud-textbook.com/wp-content/uploads/2019/02/tuto-aws-ec2-dup-12.png)
Name を設定
複数台あるとどっちがどっちだかわかりづらいですね。名前をつけましょう。 「Name」の欄にマウスポインタを持っていくと下記のように鉛筆マークがでます。
![](https://cloud-textbook.com/wp-content/uploads/2019/02/tuto-aws-ec2-dup-12-5.png)
鉛筆マークをクリックすると、下記のようにフォームが出てきますので、 わかりやすい名前を入力し、「✓」を押して保存します。
![](https://cloud-textbook.com/wp-content/uploads/2019/02/tuto-aws-ec2-dup-13.png)
ただし、ホスト名に web-01 という名前が付くわけではありません。 内部的には単なる “Name: web-01” というタグを付けただけで、 Name が特別扱いされているわけではありません。なので、 複数インスタンスに同じ Name を付けることもできたりします。
動作確認
動作確認として以下を行ってください。 1台目・2台目どちらにアクセスしても、最新のツイート情報を取得できることを確認してください。
- 2台目の EC2 に ssh でアクセスできること
- http://[1台目のパブリックIP]/minitwitter-rds.php にて表示・投稿ができること
- http://[2台目のパブリックIP]/minitwitter-rds.php にて表示・投稿ができること
ただし、利用者に「この URL か、この URL にアクセスしてもらえれば、どれかはつながります」 と言うわけにもいきません。 負荷分散・フェイルオーバーについては、 一か所にアクセスすれば自動的に振り分けてくれるというのが世の中の一般的なやり方です。 次はこれを実現しましょう。
次の ALB によるロードバランシング・負荷分散 に進んでください。