本番環境は以下2つのネットワークに分けることが普通です。
- 公開されたネットワーク
- 隠されたネットワーク
公開されたネットワーク
インターネットに公開されていているネットワークです。
Webサーバ
リバースプロキシの役割を持つApacheやNignix等のWebサーバを配置します。
アプリケーションサーバ
ビジネスロジックの役割を持つアプリケーションサーバを配置します。DBサーバや別アプリと通信できるようにします。
隠されたネットワーク
インターネットからはアクセスできないネットワークです。
DBサーバ
隠されたネットワークに配置することで外部から不正にアクセスされてデータの改ざんをされるのを防ぎます。
NAT(Network Address Translation)
ただ、ソフトウェアのアップデート等のことを考えるとDBサーバが全くインターネットに接続できないのは困る場合もあるでしょう。そのような場合はNAT(Network Address Translation)を導入します。NATを使えばプライベートIPアドレスをグローバルIPアドレスに変換できるので「片方だけの接続を許す」と言うことが可能です。(もちろん、片方から送った通信の応答まで返してくれます。)
インフラ構成の種類
Webサーバー1、DBサーバー1
最小構成になります。
Webサーバー2、DBサーバー1
Webサーバーの性能が不足している場合にWeb冗長化や負荷分散を行いたい場合にこの構成にします。
Webサーバー2、DBサーバー2
DBをマスターとスレーブに分けることでDBの冗長化を行います。Webの冗長化とDBの冗長化が同時に行えている状態になります。マスタサーバーは親サーバーでレプリケーションしてスレーブに同期をします。
構成例
イメージ図
Public Subnet(Ingress用)
ここにALBなど外部からのアクセスするサービスを配置します。
Private Subnet(アプリ用)
フロントアプリ、内部ALB、バックエンドアプリケーション稼働用のプライベートサブネット
Private Subnet(DB用)
Public Subnet(管理用)
ここに「管理サーバー」や「踏み台サーバー」などを配置したりします。
インターネットゲートウェイ
VPC内のリソースがインターネットと接続する際に必要となるネットワークリソース。VPCごとに一つだけ紐付ける。特に設計は必要ない。
セキュリティグループ設計
イメージ図
方針
アウトバンドルール
一律で「0.0.0.0/0」
インバウンドルール
最小限のルールを適用する(80や3306など)
この記事へのコメントはありません。