前回のその1の続きとなります。前回は
用語 | 概要 | 現実世界 |
---|---|---|
VPC | 大きなネットワーク範囲 | 国 |
サブネット | 小さなネットワーク範囲 | 都道府県 |
ルートテーブル | 通信データの向き先の設定 | 道路(経路案内)標識 |
インターネット ゲートウェイ | 内部NW(VPC)と外部NW(インターネット) を出入りするゲート | 海外につながる港 |
セキュリティグループ | 通信データの制限の設定 | 様々な箇所に配備する門番 |
を作成したので今回は残りの
用語 | 概要 | 現実世界 |
---|---|---|
EC2 | サーバ | 建物(e.g.ビル) |
ターゲットグループ | サーバ群 | ビル群 |
ロードバランサー | 通信データの負荷分散装置 | 複数車線の道路入り口 |
を作成して、以下の構成まで持っていきたいと思います。
構築手順
EC2 – 建物
Webサーバを建てます。無料枠のEC2を起動しapacheをインストールします。
EC2作成 1台目
AWSコンソールにログイン後、 画面上部検索窓 [ EC2 ] で検索 → 当該サービスをクリック → 左ペインの [ インスタンス ] → [ インスタンスの作成 ] で以下を入力します。
ステップ 1: Amazon マシンイメージ (AMI)
Amazon Linux 2 AMI (HVM), SSD Volume Typ を選択
ステップ 2: インスタンスタイプの選択
t2.micro にチェックを入れ、 次のステップ へ
ステップ 3: インスタンスの詳細の設定
設定項目が多いので重要な項目のみ明記します。以下を入力し 次のステップ へ
項目名 | 入力値 |
---|---|
ネットワーク | test-vpc |
サブネット | test-sub-east |
自動割り当てパブリック IP | 有効 |
ステップ 4: ストレージの追加
何も変更せず 次のステップ へ
ステップ 5: タグの追加
以下入力し 次のステップ へ
項目名 | 入力値 |
---|---|
キー | Name |
値 | test-server-east |
ステップ 6: セキュリティグループの設定
既存のセキュリティグループを選択する をチェックし test-sg-server を選択し、確認と作成 へ
ステップ 7: インスタンス作成の確認
[ 起動 ]ボタン → [ 新しいキーペアの作成 ] を選択 → [ キーペア名:test-key ] → [ キーペアのダウンロード ] → [ ファイルを保存 ] した後、 インスタンスの作成 をします。
EC2作成 2台目
1台目とほぼ同じ手順ですが以下のみ異なります。
ステップ 3: インスタンスの詳細の設定
項目名 | 入力値 |
---|---|
サブネット | test-sub-west |
ステップ 5: タグの追加
項目名 | 入力値 |
---|---|
キー | Name |
値 | test-server-west |
ステップ 7: インスタンス作成の確認
[ 起動 ] ボタン → [ 既存キーペアの選択 ] → [ キーペア名:test-key ] → [ インスタンスの作成 ] をクリックします。
Apacheインストール
EC2にログインしてApacheをインストールします。
左ペインの [ インスタンス ] → 画面上部の [ 接続 ] をクリックし、 スタンドアロン SSH クライアント に表示されているコマンドをターミナルより実行します。
% ssh -i ~/Downloads/test-key.pem ec2-user@3.123.123.123
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/user-name/Downloads/test-key.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Users/user-name/Downloads/test-key.pem": bad permissions
ec2-user@3.123.123.123: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
%
鍵のパーミッションがゆるい場合、上記のように警告が出るので、ファイル所有者の自分しか読み込めないように、chmod コマンドで変更します。
% chmod 600 ~/Downloads/test-key.pem
%
サーバへSSHログインし、rootにスイッチしてApacheをインストールします。
% ssh -i ~/Downloads/test-key.pem ec2-user@3.123.123.123
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
$ sudo su -
# yum install httpd -y
# echo 'Hello East!' > /var/www/html/index.html
# systemctl start httpd
2台目は同じ手順で Hello West と入力してください。
ターゲットグループ – ビル群
ターゲットグループを作成しEC2を、そのグループに紐付けます。
ターゲットグループ作成
左ペイン下部の [ ターゲットグループ ] → [ Create target group ] で以下を入力します。
基本的な設定
項目名 | 入力値 |
---|---|
Choose a target type | Instances |
Target group name | test-target |
Protocol | HTTP |
Port | 80 |
VPC | test-vpc |
VPC | ipv4 |
あとはデフォルトでダイジョブです。
Available instances
test-server-eastとwestの2台 を選択 → [ Include as pending below ] → [ Create target group ] をクリックします。
ロードバランサー – 複数車線の道路入り口
LBを作成しターゲットグループを、そのLBに紐付けます。
ロードバランサー作成
左ペイン下部の [ ロードバランサー ] → [ ロードバランサーの作成 ] → [ Application Load Balancer 作成 ] で以下を入力します。
基本的な設定
項目名 | 入力値 |
---|---|
名前 | test-lb |
スキーム | インターネット向け |
IPアドレスタイプ | ipv4 |
リスナー
項目名 | 入力値 |
---|---|
ロードバランサーのプロトコル | HTTP |
ロードバランサーのポート | 80 |
アベイラビリティーゾーン
項目名 | 入力値 |
---|---|
VPC | test-vpc |
ap-northeast-1a | test-sub-east |
ap-northeast-1c | test-sub-west |
ここで 次へ いくと「ロードバランサーは、いずれのセキュアリスナーも使用していません。」と警告がでますが(今回は)無視します。
セキュリティグループの割り当て
[ 既存のセキュリティグループを選択する ] をチェックし test-sg-lb を選択し、[ 次へ ] をクリックします。
ターゲットグループ
項目名 | 入力値 |
---|---|
ターゲットグループ | 既存 |
名前 | test-target |
あとはデフォルトでダイジョブです。
[ 次へ ] → [ 確認 ] をクリックします。
疎通テスト
以上で構築が終わったのでアクセスして確認します。
コンソールに表示されているDNS名にブラウザなどでアクセスしてみましょう。
以下はcurlコマンドでの疎通確認になります。
何回かアクセスするとEast、Westの表示が変わります。
% for i in `seq 5`; do curl http://test-lb-11xxxxxx.ap-northeast-1.elb.amazonaws.com/ ; sleep 1 ; done
Hello East!
Hello East!
Hello East!
Hello West!
Hello West!
%
まとめ
前回は国を興し、都道府県を決めて、港を作り、道路(経路案内)標識を立てて外と貿易できるようにしました。
今回は、その続きとして、ビル群を建て、複数車線の道路入り口を用意しました。
前回で作成した門番はビル、道路入り口に配置して(簡易的ではありますが)アクセス制限をかけました。最後に疎通テストで自分の端末からビル群にアクセスした形になります。
かなりボリュームありましたがお疲れさまでした!公式マニュアルを読む、とっかかりとしてお役にたてば嬉しいです。
参考
(´・ω・`)ゞアリガトゴザイマス.。.・゚
チュートリアル: Amazon EC2 Linux インスタンスの開始方法