#一般的なWEBサービスのAWSネットワーク構成
AWSでの小規模~中規模のWEBサービスにおいてのネットワーク構成を考えてみた。
下記最終図案
この他にアップロードファイルをスケール対応する為、S3を増やす予定。
上記の図の詳細を説明する
##VPC
10.1.0.0/16
##サブネットでネットワークを区切る
マルチAZ構成にする。
更に下記のように三回層に区切る
###フロントエンド
インバウンド、アウトバウンド共にインターネットとの接続を許可する。
具体的にはルートテーブルにインタネットゲートウェイを追加する。
【具体例】
図上のearth_frontend_left,rightに該当する。
踏み台サーバやNAT、ELBなどをここに設置する。
ELBを使わない場合はEC2のWEBサーバなど。
サブネットのネットワーク10.1.10.0/24,10.1.11.0/24
10.1.0.0/16 local
0.0.0.0/0 igw-**********
igwは事前に作っておくといいと思う。
###アプリケーション
インターネットからのインバウンドは必要ないが
wgetとかyumとかで
外のインターネットにつなげたいようなユースケースに該当するサーバを入れる。
具体的にはルートテーブルにNATへの接続を追加する。
【具体例】
図上のearth_application_left,rightに該当する。
PHP-FPMサーバ、tomcatサーバなどなど。
ELBを使う場合はWEBサーバもなどもここに入れて良いと思う。
サブネットのネットワーク10.1.20.0/24,10.1.21.0/24
10.1.0.0/16 local
0.0.0.0/0 nat-**********
natは事前に作っておくといいと思う。
###プライベート
インターネットと完全に切り離してもいいような領域。
RDSなどのフルマネージドサービスでインも必要ないユースケース。
【具体例】
図上のearth_datastore_left,rightに該当する。
サブネットのネットワーク10.1.30.0/24,10.1.31.0/24
10.1.0.0/16 local
##セキュリティグループの記述が楽
サブネットを役割ごとに小分けにしておけばセキュリティグループの記載が楽。
下記のようにできる。
MySQL/Aurora (3306) 10.1.20.0/23
すべての トラフィック sg-*****
##踏み台サーバ
SSHのみ空けているサーバ、セキュリティグループをおいておきましょう。
普段は停止しておくといいと思います。
何か操作したい場合はコンソールから起動して。という形式で。
更にコンソール操作ユーザをMFA認証対応にしておけば尚グッドかと。
##参考
http://dev.classmethod.jp/server-side/network/vpc-knowhow/