ブログのAWSの構成
このブログが動作している環境の構成を紹介してみたいと思います。
これまで、このブログがAWS (Amazon Web Service)上で動作していることを述べてきたことがありましたが、ちゃんと構成を紹介していませんでした。
AWSでパワーポイント用のアイコン集を見つけましたので、思い立って構成図を描きつつ、内容を紹介していきたいと思います。
まずは簡単に構成図を描いてみました。
まず、Route 53をDNSとして利用しています。そこからApplication Load Balancerを間にかましてEC2に接続しています。EC2にはnginxが起動しており、その上でWordPressを動作させています。リバースプロキシは使わず、FastCGIでのキャッシュを行なっています。VPCはEC2インスタンスを立てるときに必須だったので利用しました。
WordPressをCentOS上にnginx + PHP 7 + fastcgi_cacheで構築
インターネットからのトラフィックを直接EC2に送る構成にはしていません。
Application Load Balancerを入れることで、アクセス数が急激に増えたときに、EC2のインスタンスをコピーして増やすだけで冗長化できる状態にしています。また、SSL化で必要な証明書がロードバランサー向けに無料で提供されていますので、それを利用できます。
Classic Load Balancerでもいいのですが、Application Load Balancerのほうが簡単にHTTP/2化できたので利用しました。
データベースは別のインスタンスに移して管理しています。理由は3つあります。
- 同じサーバーにあると負荷が高くなる。
- サーバーが潰れたときのリスクヘッジとして。
- EC2を冗長化したときにデータベースを一本化にするため。
以上の理由からRDSのインスタンスを立てています。MySQLのインスタンスを作り、EC2からアクセスできるようにしています。
インスタンスタイプはt2を利用しています。
サービス | インスタンスタイプ |
---|---|
EC2 | t2.small |
RDS | t2.micro |
nginxがキャッシュを生成してくれるので、RDSは一番下のインスタンス、EC2はちょっとだけいいインスタンスです。
画像などのメディアファイルはWordPressのプラグインを使ってS3に保存するようにしています。さらにS3にドメインを割り当てて、メディアファイルはS3から直接インターネットに出るように設定しています。
S3はバケットポリシーを設定して、同じドメイン以外からのアクセスを防ぐようにして、直リンク対策(ホットリンク対策)を施しています。
簡単な構成の説明ですが、こんな感じでこのブログは動作しています。