aws

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

前回のその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).
% 


鍵のパーミッションがゆるい場合上記のようにWarnが出るのでchmodで変更します

% chmod 600 ~/Downloads/test-key.pem 


ログイン、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名にブラウザなどでアクセスしてみましょう。

以下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インスタンスの開始方法 - Amazon Elastic Compute Cloud
Amazon EC2 の使用を開始します。Linux インスタンスを起動、接続、使用する方法について説明します。
タイトルとURLをコピーしました