インフラブログ

とあるWEBサイトのインフラを構築運用するメモ

AWS内の全体構成を図にした

構成図

f:id:ls-la:20140122152855g:plain

今現在ステージング環境をこの構成で動かしています。 最初この構成内のサービスの機能や役割についてだらだらと書いていたら、やたらかったるい長文になってしまったので書き直しました。

思う事がある所だけ書き留めておきます。

VPC環境下に構築する

用意されたAWSのアカウントでログインするとすでにVPCが設定されていたのでそのままVPC内に作ります。 サブネットもアベイラビリティゾーンA(AZ-A),AZ-Bでそれぞれ1つずつ作られてたのでそのまま使用します。 WEB、DBという用途役割でのサブネットは作りません。(細かいネットワークアドレスでの制御等はしないと思うので)

セキュリティーグループ(SG)は用途役割に応じて作成する

WEB,DB,ADMINといった大体の用途役割別にSGをつくりインスタンスを属させます。インスタンスは複数のSGに属することも可能ですが、この案件ではそうしません。 下記のような簡単なパケットフィルタリングでセキュリティーグループ間の通信を管理します。

appsグループはproxyグループからくるtcp80(nginx)のパケットは受け入れる。

dbグループはappsとbackgroundグループからくるtcp3306(mysql),tcp6379(redis)のパケットは受け入れる。

AZ-Aにインスタンスを寄せる

インスタンスをA,B両方に配置して耐障害性を高めるのが推奨かと思いますが、あえてAZ-Aに寄せました。 どうもアプリサーバとDBサーバがA,Bでまたぐ場合、レスポンスが遅くなる問題が頻発するのです。 解決もできないし一旦あきらめました。AZ-Aが崩壊しないことを祈りながら運用することにします。 AZ-Aが全く使えなくなった場合は、その時点からAZ-Bにリストアすることを検討します。

インスタンスのマシンイメージ,DBのバックアップはS3に確保されてるから大丈夫として、mongodb,redisのデータはAZ-Aにしか存在しないので、 これらはAZ-A以外のところにバックアップを退避させておきます。