業務利用を想定した高可用性マルチAZインフラ構成

構築手順

①,VPCのコンソール画面より「VPCを作成」を押下。

②,設定パラメータを選択し「VPC作成」を押下。

 

設定パラメータ

【VPCの設定】
   VPCなど
【名前タグの自動生成】
   自動生成にチェックを入れ「任意の名
   前」を入力。(本手順では「高可用
   性マルチインフラAZ構成」と入力)
【IPv4 CIDR ブロック】
   10.0.0.0/16
【IPv6 CIDR ブロック】
   IPv6 CIDR ブロックなし
【テナンシー】
   デフォルト
【アベイラビリティゾーン(AZ)の数】
   2
【パブリックサブネットの数】
   2
【プライベートサブネットの数】
   2
【ap-northeast-1aのパブリックサブネット】
   10.0.1.0/24
【ap-northeast-1cのパブリックサブネット】
   10.0.2.0/24
【ap-northeast-1aのプライベートサブネット】
   10.0.101.0/24
【ap-northeast-1cのプライベートサブネット】
   10.0.102.0/24
【NATゲートウェイ】
   なし
【VPCエンドポイント】
   S3ゲートウェイ
【DNSオプション】
   「DNSホスト名を有効化」および「DNS解    
   決を有効化」にチェック

③,以下画面に遷移。VPCワークフローの作成がすべて成功になっていることを確認。

④,VPCコンソールの「サブネット」より、作成されたパブリックサブネットにチェックを入れ、「アクション」配下の「サブネットの設定を編集」を開く。

⑤,「パブリックIPv4アドレスの自動割り当てを有効化」をチェック後、保存を押下。(もう一つのパブリックサブネットにも同様の設定をする)

⑥,EC2のコンソール画面より「インスタンスを起動」を押下。

⑦,設定パラメータを選択し「インスタンスを起動」を押下。

 

設定パラメータ

【名前とタグ】
   インスタンスの名前
   (本手順では「Web1a」と入力)
【アプリケーションおよびOSイメージ】
   Amazon Linux
【インスタンスタイプ】
   t2.micro
【キーペア】
   「新しいキーペアの作成」を押下
   キーペア名:任意の名前
   キーペアのタイプ:RSA
   ファイル形式:pem
   「キーペアを作成」を押下後、pemファ
   イルをダウンロードしローカルに保存
【VPC】
   ①で作成したVPC
【サブネット】
   ①で作成したパブリックサブネット
 (ap-northeast-1aのパブリックサブネット)
【セキュリティグループ名】
   任意の名前
   (本手順では「web-sg」と入力)
【インバウンドセキュリティのルール】
   タイプ:ssh  ソースタイプ:任意の場所
   タイプ:HTTP ソースタイプ:任意の場所
【プライマリIP】
   10.0.1.10

⑧,以下画面に遷移。インスタンスの起動が正常に開始されていることを確認。

⑨,CloudShellコンソールより「ファイルアップロード」を押下し、⑦で作成したキーペアのpemファイルをアップロード。

⑩,CloudShell上で実行コマンドを用いて、EC2インスタンスのシステム設定変更およびApacheのインストール。

 

実行コマンド

【EC2インスタンスへのログイン】
  ssh -i pem”ファイル名” ec2-user@”public ip”

【ロケール設定】
   sudo localectl set-locale LANG=JP.UTF-8

【ロケール設定の反映】
   source /etc/locale.conf

【タイムゾーン設定】
  sudo timedatectl set-timezone Asia/TOKYO

【パッケージ更新】
   sudo dnf update -y

【Apache HTTP Serverのインストール】
   sudo dnf install -y httpd

【Apache自動起動設定】
   sudo systemctl enable httpd

【Apache起動】
   sodu systemctl start httpd

⑪,PHP環境構築およびGitHub格納コードの配置。

 

実行コマンド

【PHPのインストール】
   sudo dnf install -y php8.5

【Apache設定ファイルの編集】
   sudo vim /etc/httpd/conf/httpd.conf

   -編集箇所
   DirectoryIndex index.html
      ↓
   DirectoryIndex index.php index.html

【Apache再起動】
   sudo systemctl restart httpd

【Gitのインストール】
   sudo dnf install -y git

【リポジトリのクローン】
   git clone “コピーしたいリポジトリのURL”

【Web公開ディレクトリへの配置】
sudo cp -r “対象ディレクトリ”* /var/www/html/

⑫,Aurora and RDSコンソール配下のサブネットグループより「DBサブネットグループを作成」を押下。

⑬,設定パラメータを選択し「作成」を押下。

設定パラメータ

【名前】
  任意の名前

【VPC】
  ①で作成したVPC

【アベイラビリティーゾーン】
  ①で作成したサブネットが配置されている   
   2つのアベイラビリティーゾーン
   ap-northeast-1a  ap-northeast-1c

【サブネット】
 ①で作成した2つのプライベートサブネット

⑭,以下画面に遷移。サブネットグループが正常に作成されていることを確認。

⑮,Aurora and RDSコンソール配下のパラメータグループより「パラメータグループの作成」を押下。

⑯,設定パラメータを選択し「作成」を押下。



設定パラメータ

【パラメータグループ名】
  任意の名前

【エンジンのタイプ】
  MySQL Community

【パラメータグループファミリー】
  mysql8.4

【タイプ】
  DB Parameter Group

⑰,Aurora and RDSコンソール配下のデータベースより「データベースの作成」を押下。

⑱,設定パラメータを選択し「データベースの作成」を押下。

設定パラメータ

【エンジンのオプション】
   MySQL
【データベース作成方法】
   フル設定
【テンプレート】
   開発/テスト
【可用性と耐久性】
   マルチAZ DBインスタンスデプロイ
            (2インスタンス)
【エンジンバージョン】
   MySQL 8.4.8
【DBインスタンス識別子】
   任意の名前(db-mysql)
【マスターユーザー名】
   任意の名前(root)
【認証情報管理】
   セルフマネージド
【マスターパスワード】
   任意のパスワード
【データベース認証オプション】
   パスワード認証
【DBインスタンスクラス】
   バースト可能クラス
【インスタンスタイプ】
   db.t4g.micro
【ストレージタイプ】
   汎用SSD(gp3)
【ストレージ割り当て】
   20
【VPC】
   ①で作成したVPC
【VPCセキュリティグループ】
   新規作成
【新しいVPCセキュリティグループ名】
   任意の名前(本手順では「db-sg」)
【バックアップ】
 「自動バックアップを有効にする」にチェック 
    (バックアップの日数等は適宜に設定)

⑲,以下画面に遷移。データベースが正常に作成されていることを確認。

⑳,EC2コンソールの「セキュリティグループ」より、⑱で作成されたセキュリティグループ(本手順では「db-sg」)を押下。

㉑,「インバウンドのルールを編集」を押下。

㉒,インバウンドルールを設定パラメータの内容に変更し、「ルールを保存」を押下。

 

設定パラメータ

 

【インバウンドルール】
  タイプ:MYSQL/Aurora ソース:web-sg
  タイプ:SSH ソース:web-sg

㉓,以下画面に遷移。インバウンドルールが正常に変更されていることを確認。

㉔,CloudShellで⑥で起動したEC2インスタンスに接続。
Webサーバ(PHP)とデータベース(RDS)を接続し、データを表示する構成を構築。

実行コマンド

【MariaDBクライアントのインストール】
   sudo dnf install -y mariadb105

【データベースへの接続】
   mysql -h <RDSのエンドポイント> root -p

【データベースユーザの作成】
   CREATE USER ‘ユーザ名’ IDENTIFIED BY ‘pass’;

【権限付与】
GRANT ALL PRIVILEGES ON “データベース名”.
* TO ‘ユーザ名’@’%’ WITH GRANT OPTION;

【データベース作成】
   CREATE DATABASE “データベース名”;

【データベースの選択】
   USE “データベース名”;

【テーブルの作成】
   CREATE TABLE “テーブル名” (
    id int not null primary key,
    title varchar(100),
    detail varchar(1000),
    image varchar(1000)
   );

【データの挿入】
   INSERT INTO “テーブル名” VALUES 
   (1,”title”,”detail”,”imagefile”);

【データベース切断】
   exit

【PHPとMySQL連携モジュール】
   sudo dnf install -y php0mysqlnd

【PHPファイル編集】
   sudo vim /var/www/html/index.php

   ファイル内に
   「挿入するPHPコード」を入力

㉕,EC2コンソール画面より「Web1a」インスタンスを停止。

㉖,「Web1a」の停止後、「アクション」配下の「イメージとテンプレート」より、「イメージを作成」を押下。

㉗,以下画面に遷移するので任意のイメージ名(本手順では「Web-AMI」)を入力し、「イメージを作成」を押下。

㉘,EC2コンソールの「AMI」より、作成されたAMI(本手順では「Web-AMI」)にチェックを入れ、「AMIからインスタンスを起動」を押下。

㉙,設定パラメータを選択し「インスタンスを起動」を押下。

 

設定パラメータ

【名前とタグ】
   インスタンスの名前
   (本手順では「Web1c」と入力)

【キーペア】
   ⑦で作成したキーペア

VPC
   ①で作成したVPC

【サブネット】
   ①で作成したパブリックサブネット
 (ap-northeast-1cのパブリックサブネット)

【セキュリティグループ名】
   ⑦で作成したセキュリティグループ
   (本手順では「web-sg」)

【プライマリIP
   10.0.2.10

㉚,EC2コンソールの「インスタンス」より、「Web1a」を選択し、「インスタンスを開始」を押下。

㉛,EC2コンソールの「ターゲットグループ」より、「ターゲットグループの作成」を押下。

㉜,設定パラメータを選択し「次へ」を押下。

 

設定パラメータ

【ターゲットの種類】
   インスタンス

【ターゲットグループ名】
   任意の名前(本手順では「Web-tg」)

【プロトコル】
   HTTPS

【VPC】
   ①で作成したVPC

【ヘルスチェック】
   HTTPS

【ヘルスチェックの詳細設定】
   適宜変更

㉝,インスタンス(本手順では「Web1a」と「Web1c」)を選択し「保留中として以下を含める」を押下。

㉞,選択したインスタンスがターゲットに含まれたことを確認し「次へ」を押下。

㉟,以下の画面へ遷移後、「ターゲットグループの作成」を押下。

㊱,EC2コンソールの「セキュリティグループ」より、「セキュリティグループを作成」を押下。

㊲,設定パラメータを選択し「セキュリティグループを作成」を押下。
  (ロードバランサー用のセキュリティグループを作成)

 

設定パラメータ

【セキュリティグループ名】
  任意の名前(本手順では「alb-sg」)

【VPC】
  ①で作成したVPC

【インバウンドルール】
  タイプ:HTTP ソース:Anywhere-IPv4
  タイプ:HTTPS ソース:Anywhere-IPv4

 

㊳,「web-sg」のインバウンドルールを設定パラメータの内容に変更。

 

設定パラメータ

【インバウンドルール】
  タイプ:HTTP ソース:alb-sg
  タイプ:HTTPS ソース:alb-sg
  タイプ:SSH  ソース:Anywhere-IPv4

㊴,EC2コンソールの「ロードバランサー」より、「ロードバランサーの作成」を押下。

㊵,「Application Load Balancer」の「作成」を押下。

㊶,設定パラメータを選択し「ロードバランサーを作成」を押下。

 

設定パラメータ

【ロードバランサー名】
  任意の名前(本手順では「web-alb」)

【VPC】
  ①で作成したVPC

【アベイラビリティーゾーンとサブネット】
  作成されたサブネットのAZを選択の上、
  ①で作成した2つのパブリックサブネット

【セキュリティグループ】
  ㊲で作成したセキュリティグループを選択
  (本手順では「alb-sg」を選択)

【リスナーとルーティング】
  プロトコル:HTTP
  ターゲットグループ:Web-tg

㊷,Route53コンソールの「Route53の使用開始」より、「開始する」を押下。

㊸,「ドメインを登録」を選択し、「開始する」を押下。

㊹,任意のドメイン名を設定し「チェックアウトに進む」を押下。(本手順では「taosuan-sub.click」と設定)

㊺,適宜、「自動更新」にチェックを入れ、「次へ」を押下。

㊻,「登録者の連絡先」を入力し、「次へ」を押下。

㊼,入力した「登録者の連絡先」に誤りが無いかを確認し、「送信」を押下。

㊽,「登録者の連絡先」に設定したメールアドレス宛に送信されるメール内のリンクを押下し、認証する。

㊾,Route53コンソールのホストゾーンより、作成されたホストゾーン名を押下。(本手順では「taosuan-sub.click」を押下)

㊿,「レコードを作成」を押下。

(51),設定パラメータを入力し「レコードを作成」を押下。

設定パラメータ

【レコード名】
 任意の名前(本手順では空白としている)

【レコードタイプ】
 「A-IPv4アドレスと〜」を選択

【エイリアス】
 チェックを入れる

【トラフィックのルーティング先】
 エンドポイント:「Application Load〜」
 リージョン:「アジアパシフィック(東京)」
 ロードバランサー:㊴で作成したALB
                                                               (web-alb)

 

(52),AWS Certificate Managerコンソールより、「証明書をリクエスト」を押下。

(53),「パブリック証明書をリクエスト」を選択し、「次へ」を押下。

(54),「完全修復ドメイン名」に㊲で作成したドメイン名(本手順では”taosuan-sub.click”)を入力し、「リクエスト」を押下。

(55),ACMコンソール配下の「証明書を一覧」より、作成した証明書IDを押下。

(56),作成した証明書の「CNAME名」と「CNAME値」を確認(メモ帳アプリ等に記録し、控える)。

(57),Route53コンソール配下の「ホストゾーン」より㊲で作成したドメイン名(本手順では”taosuan-sub.click”)を押下

(58),「レコードを作成」を押下

(59),設定パラメータを入力し「レコードを作成」を押下。

設定パラメータ

【レコード名】
 (56)で確認したCNAME名
 (ドメインと直前のドットは入力しない)

【レコードタイプ】
 「CNAME- 〜」を選択

【エイリアス】
 チェックを入れない

【値】
 (56)で確認したCNAME値

 

(60),EC2コンソールの「ロードバランサー」より、㊴で作成したロードバランサー(本手順では「web-alb」)を押下。

(61),「リスナーの追加」を押下。

(62),設定パラメータを入力し「リスナーの追加」を押下。

設定パラメータ

【プロトコル】
 HTTPS

【ポート】
 443

【デフォルトアクション】
 事前ルーティングアクションなし

【ターゲットグループ】
 ㉛で作成したターゲットグループ
 (本手順では「Web-tg」)

【証明書の取得先】
 ACMから

【証明書】
 (52)で作成した証明書
 (本手順では「taosuan-sub.click」)

 

(63),「リスナーとルール」より既存のリスナー(HTTP:80)にチェックを入れ、「ルールを管理」配下の「ルールの編集」を押下。

(64),「リスナールール」より「最後(デフォルト)」にチェックを入れ、「アクション」配下の「ルールの編集」を押下。

(65),設定パラメータを入力し「変更内容の保存」を押下。

設定パラメータ

【プロトコル】
 HTTP

【ポート】
 80

【デフォルトアクション】
 URLにリダイレクト

【URLにリダイレクト】
 「URI部分」を選択

【プロトコル】
 HTTPS

【ポート】
 443

【ステータスコード】
 301-完全に移動されました

 

 

上部へスクロール