ざっくり
3層アーキテクチャというものを使って、Webアプリケーションを3種類の構造に分けて構築していきます。
加えて、適切なネットワーク設定と冗長化を行なった上で、自前のWordPressのサーバとDBをAWSを使って立てます。
利用するAWSリソースの説明
Amazon VPC
https://aws.amazon.com/jp/vpc/
- AWS上に、仮想のプライベートネットワークを構築することができるサービス
- VPCを作成した上で、複数のプライベート/パブリックサブネットに分割することができる
ELB
https://aws.amazon.com/jp/elasticloadbalancing/
- 従量課金で使うことのできるロードバランサ
-
異なる3種類のロードバランサがある
-
☆Application Load Balancer (ALB)
- 今回使うのはこれ
- レイヤ7に対応
-
Network Load Balancer (NLB)
- レイヤ4に対応
-
Gateway Load Balancer (GWLB)
- サードパーティのセキュリティ製品をうまいこと使えるようにするためのVPCを接続するためのロードバランサ
-
☆Application Load Balancer (ALB)
EC2
https://aws.amazon.com/jp/ec2/
- 台数やスペックを柔軟に変更可能な仮想サーバ
- 必要な時に、必要な台数を時間課金で利用可能
RDS
- RDBMSのマネージドサービス
-
今回はその中でもAmazon Auroraを利用します
- https://aws.amazon.com/jp/rds/aurora/
- MySQLとPostgreSQLに互換性のあるクラウド向けのRDB
- WordPressにはMySQLが必要なので、今回はMySQL互換のAuroraを使います
AWS CloudShell
https://aws.amazon.com/jp/cloudshell/
- AWSコンソールから使えるシェル
- Bash、PowerShell、Z shellが利用可能
- aws cliはデフォルトで利用可能
-
コンソールでログインしたユーザと同じ権限を引き継ぐ
- IAMユーザやプロファイルの管理が不要
- 今回はaws cliを簡単に利用するために使います
- リソースの後片付けに、CloudShellからaws cliを使って一気に消すようにします
AWS以外の説明
-
WordPress
- 簡単にサイトを構築できるオープンソースのCMS
- 一番シンプルな使い方だと、ブログとか作れます
構成の説明
-
リソースは全て作成するVPC内に配置
- アベイラビリティゾーンは1aと1cを利用
-
アベイラビリティゾーンごとにパブリックサブネットとプライベートサブネットを作成
1cのプライベートサブネットは今回は作成しますが利用しません
- 元々の演習だと1cのプライベートサブネットにもRDSを配置して、DBをマルチAZ構成にして冗長化するという演習がありました
- が、残念ながら今回は時間の関係上カットです…
-
ユーザはインターネットゲートウェイ経由でELBにアクセスし、パブリックサブネットに配置されたEC2のどちらかにアクセスする
- ユーザはプライベートサブネットに配置されたRDSに直接アクセスすることはできない
- ELBがEC2の状態を監視しているので、仮に片方のEC2が落ちていても、ユーザのアクセスは正常なEC2に振り分けられる
- EC2はアクセスがあると、プライベートサブネットにあるRDSから情報を取得しユーザに返す
ポイント
-
適切なネットワーク設定
- ユーザはパブリックサブネットに配置されたEC2にしかアクセスできない
- プライベートサブネットに配置されたRDSへ、直接外部からアクセスすることはできない
-
冗長化
- EC2は2台あり、ELBを通すことで冗長化している