AWS

初心者向け入門 理解しながら構築してみるAWSインフラ(ALB 〜 EC2)その2

前回のその1の続きとなります。前回は

用語概要現実世界
VPC大きなネットワーク範囲
サブネット小さなネットワーク範囲都道府県
ルートテーブル通信データの向き先の設定道路(経路案内)標識
インターネット
ゲートウェイ
内部NW(VPC)と外部NW(インターネット)
を出入りするゲート
海外につながる港
セキュリティグループ通信データの制限の設定様々な箇所に配備する門番

を作成したので今回は残りの

用語概要現実世界
EC2サーバ建物(e.g.ビル)
ターゲットグループサーバ群ビル群
ロードバランサー通信データの負荷分散装置複数車線の道路入り口

を作成して、以下の構成まで持っていきたいと思います。

AWSインフラ構成図(ALB 〜 EC2)
スポンサーリンク

構築手順

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 typeInstances
Target group nametest-target
ProtocolHTTP
Port80
VPCtest-vpc
VPCipv4

あとはデフォルトでダイジョブです。

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
アベイラビリティーゾーン
項目名入力値
VPCtest-vpc
ap-northeast-1atest-sub-east
ap-northeast-1ctest-sub-west

ここで 次へ いくと「ロードバランサーは、いずれのセキュアリスナーも使用していません。」と警告がでますが(今回は)無視します。

セキュリティグループの割り当て

[ 既存のセキュリティグループを選択する ] をチェックし test-sg-lb を選択し、[ 次へ ] をクリックします。

ターゲットグループ
項目名入力値
ターゲットグループ既存
名前test-target

あとはデフォルトでダイジョブです。
[ 次へ ] → [ 確認 ] をクリックします。

疎通テスト

以上で構築が終わったのでアクセスして確認します。

コンソールに表示されているDNS名にブラウザなどでアクセスしてみましょう。

AWSマネジメントコンソールのロードバランサー設定画面


以下は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 インスタンスの開始方法