概要
@betahikaruがAWSでインフラ構築について試行錯誤している内容のメモです。
将来WebサービスをAWS上で提供したくなった時のために勉強してます。
なお、AWSどころかインフラ全般についてド素人です。
状況
現在、私はAWSの各サービスをこんな風に使ってます。
全体像
システム構成図です。(cacooで作りました)
EC2インスタンスは、普段は1つだけにしていて、必要に応じて独自AMIイメージから生成できるようにしてます。
(Webサービスを提供している訳じゃないので、検証用途のみです。)
利用サービス
以下のサービスを利用します。
- EC2 (とEBS)
- Webサーバ&APサーバ。(とそのストレージ)
- Amazon Linux x64 を利用。
- httpd, php, mysql(クライアント)をインストール。※色々手っ取り早いので。
- 適当なHTMLページとPHPのページ(RDSに接続する)が出来た状態で、AMIイメージを作っておきます。
- RDS
- DBサーバ
- MySQL5.6 を利用。
- 適当なテーブルを作っておきます。
- ELB
- ロードバランサ
- Webサーバ&APサーバへのリクエストを振り分けます。
- 普段はとりあえずEC2インスタンス1個だけ割り当ててる。
- AMIイメージからEC2インスタンスを作る事で、WEBサーバ&APサーバは分散できる状態っぽくなった。
- route53
- DNSのシステム?
- 独自ドメインを取得したので、ロードバランサに独自ドメインでアクセスできるよう設定した。
詳細:route53
設定
- "Hosted Zones"を追加(Domain Nameを独自ドメインに設定してCreate)
- "Go to Record Set"
- Aレコードを追加("Alias"を"Yes"にし、"Alias Target"をロードバランサのAレコードにする)
- 起動しているインスタンスとかの選択肢が出た。便利。
- NSレコードについて、レジストラのサイトでネームサーバの変更設定を行う。
参考URL
あとがき
野望
- RDSとかがSPOF(単一障害点)になるので、冗長化したい!
- 読み取りだけならリードレプリカとか作れるとかなんとか。じゃあ更新は?
- キャッシュして高速化したい!
- memcached とか Redis とかでセッションとかDB参照とかをキャッシュしたい。
- AMIからイメージ作るだけではスケールしきれない?パターンに対応するために、Chefとかもやりたい。
気づいた点
- EIPは、独自ドメインあったら特に使わなくなりそう。
- 本番環境以外で使うかも。開発環境(CI、ビルド、デプロイサーバ)とか。
戯れ言
色々はしょってますが、忘れないよう後で詳しく書こうと思います。
まとめたらこれだけかーって感じの内容ですが、色々苦労しました。
略語集
お節介ですが略語集を載せときます。
- AWS (Amazon Web Services)
- EC2 (Amazon Elastic Compute Cloud)
- EBS (Amazon Elastic Block Store)
- AMI (Amazon Machine Image)
- RDS (Amazon Relational Database Service)
- route53 (Amazon Route 53)