タグ別アーカイブ: AWS

WordPress の前段に CloudFront を配置する ( AMIMOTO Advent Calendar 2015 12日目 )

AMIMOTO Advent Calendar の12日目です。
アイキャッチ画像は Cloudcraft で作ってみました。カコイイ!

WordPress の前段に CloudFront を置きたいことってありますよね。
そんな時、以下の様な問題に直面するかと思われます。

  • ログイン時はプレビュー画面とか、即座に変わるようにキャッシュさせたくない
  • Nginx のログファイルに CloudFront の IP アドレスではなく、アクセスしてきた PC の IP アドレスを記録したい
  • モバイル版とPC版でテーマを切り替えたいんだけど
  • publish したときにちゃんと反映されるようにキャッシュ消したい

今日は、これらのお悩みを解決しちゃおうかなって感じです。
続きを読む

lsyncd でファイル変更監視して、S3にアップロードする

WordPress のメディアファイルを自動でバックアップしたり、CloudFront のオリジンにするために wp-content/uploads/ の中身を S3 にアップロードするようにしたいなぁとか言う要望が結構あります。
特に AutoScaling 構成にする場合は、ソースファイルについては git リポジトリなどで管理すればいいですが、ダッシュボードからアップロードされるメディアファイルについては git リポジトリに含めるわけに行かないっすよね。
そんな時、僕の作ったプラグイン絡新婦とか、Amazon S3 for WordPress with CloudFrontとか使うわけですが、なんと 4.3.x 系ではちゃんと動かないような気がするんです

まぁ、僕が絡新婦をメンテナンスすればいいのですが、最近 php プログラム書くの辛いので代替手段として lsyncd でファイル変更を監視して S3 に自動アップロードするようにしてみました。
参考URL: lsyncdをrsync以外の用途で使う – Qiita

続きを読む

AWS WAF で CloudFront 環境にIPアドレス制限を設定する

本番環境で CloudFront を使用しているため、ステージング環境でも CloudFront を適用したいとかって要望は多々あると思います。
ただ、ステージング環境なんで全体に公開はしたくない、IPアドレス制限とかかけたいってなりますよね。
そんな時、今までは署名付きURLとか署名付き Cookie とかで対応せざるを得ませんでした。

参考URL

結構、めんどくさい。

そんな、僕達のために re:Invent 2015 に合わせるように発表された新サービス AWS WAF という救世主が現れましたよ。
この記事では AWS WAF を使用して、IP アドレス制限された CloudFront ネットワークを作成する方法をざっくり解説してみます。

続きを読む

dogmap.jp を t1.micro から t2.micro に変更してみました

AWS から 7/2 に新しいインスタンスタイプ T2 インスタンスがリリースされました。
【AWS発表】バースト可能な性能を持つ新しい低コストEC2インスタンス

dogmap.jp は、網元の実証実験も兼ねて、網元の t1.micro インスタンスで稼働させているのですが、アクセスが集中して負荷が高まってバーストした後、一定時間極端に性能が悪化するという問題がありました。
# これは t1.micro インスタンスの特性です。
これ結構辛くて、表側では Nginx のリバースプロキシキャッシュでなんとか凌いでいても、WordPress のダッシュボードにアクセスできないとかの状況に陥ることがしばしばあったんですよね。

T2インスタンスでも t1.micro 同様に負荷がかかったときに自動的にバーストします。
ただし、バースト可能な時間には制限があって、これを管理するために新たに CPU Credit という仕組みが追加されました。
簡単に言うと

  • 負荷が高くなく CPU がベースライン性能にとどまっている場合、CPUクレジット残高が貯まっていく
  • 負荷が高まった場合、CPUクレジットを消費してバーストする
  • 1CPUクレジットで1分間バースト可能
  • CPUクレジット残高が無くなった場合は CPU 性能はベースライン性能にとどまる
  • 未使用のCPUクレジットは、最大24時間有効

という感じらしいです。

名前 vCPUs ベースライン性能 1時間あたりのCPUクレジット
t2.micro 1 10% 6
t2.small 1 20% 12
t2.medium 2 40% 24

CPUクレジット残高については、Cloud Watch で確認することができます。
「CPU Credit Usage (使用量)」「CPU Credit Balance (残高)」という項目が追加されているので、そちらを参照してください。

2014-7-18 追記
Amazon MarketPlace からも HVM 版の網元AMIが利用できるようになりました。
WordPress powered by AMIMOTO (HVM)
t1.micro などの m1 インスタンスなどの HVM に対応していないインスタンスタイプはご利用になれません。
そちらが必要な場合は、従来の PVM 版をご利用ください。
続きを読む

Amazon Linux でのソースの入手と再ビルド

気がついたら 1, 2 月はブログ書いてませんでした。
Amazon Linux 上の suexec のホームディレクトリを変更したくて rpm のソース取ってこようとしたんだけど yumdownloader でソースを取って来ることができなかったんで、自分用のメモ。
Amazon Linux で rpm のソースを取ってくるには yumdownloader ではなくて get_reference_source コマンドを使うんですってよ奥さん。
参考: SIOS "OSSよろず" ブログ出張所: ソースの入手と再ビルド ~ Amazon Linux AMI (EC2) 編
注意: 上記 URL だと --aws-account-id=XXXX-XXXX-XXXX っていうパラメータが必要って書いてあるけど、いまは要らないようです。

以下、手順
続きを読む

S3 にメディアを自動アップロードするプラグイン「絡新婦」

517Y4NYKFPL._SL150_.jpgWordPress のメディアライブラリにアップロードされたファイルを自動的に Amazon S3 にアップロードして、post_content 内のリンクを S3 の URL に変更するプラグイン Nephila clavata (絡新婦) を作成しています。
プラグイン名称の元になったのは、有名な妖怪ですね。

公式プラグインディレクトリには、全く同じ機能を持った「Amazon S3 for WordPress」ってプラグインが登録されているんですが、2009年の1月以降アップデートされていないため、新規に作っちゃいました。
AWS SDK for PHP 2 を使っているので、PHP 5.3 以降のバージョンが必要になります。

そんなわけで S3 バケットの使用方法と、このプラグインの設定方法を解説しますね。
続きを読む

GlusterFS で分散ストレージ環境を手に入れる

さて MariaDB Galera Cluster で DB を冗長化したら、次はファイルも冗長化したくなりますよね?
そこで、使えるのが分散ファイルシステム GlusterFS です。
GlusterFS は UserLand で動作する FS ベースのファイルシステムで、自動復帰・ミラーリング/ストライピングを行うことができます。
サーバからは Glustefs Native Client や NFS でマウントして使用することができます。
GlusterFS でボリューム作っておいて、それを Web サーバでマウントして使えば、簡単に Web サーバをスケールアウトできて、嬉しいことこの上ないですね!

そんなわけで AWS で GlusterFS を試してみたので、やりかたを書いておきます。
続きを読む

MariaDB Galera Cluster による DB サーバの冗長化

さくらインターネット研究所さんの「MariaDB Galera Clusterを試す」という記事を読んで居ても立ってもいられなくなり、さっそく AWS で構築してみました。
上記の記事によれば

簡単にまとめると次のようになります。

  • Galera Replicationが複数のRDBMをレプリケーションするwsrep APIを提供し、同期をとります
  • 完全同期型であるため、すべてのノードがアクティブかつマスターとなります
  • クラスターノードのどれに対してもリード/ライトが可能です
  • ノードの追加/削除は自動で行えます
  • クライアント接続は通常のMySQLとなんら変わりなく使えます

via. MariaDB Galera Clusterを試す (1) « さくらインターネット研究所

おー!スレーブ/マスター形式のレプリケーションよりも、断然使いやすそうやんか!
ってわけで AWS の ELB 配下に複数台 MariaDB Galera Cluster を配置する方法を解説します。
続きを読む

WordPress サイトの永代供養

イベント用に立ち上げた WordPress サイトとか、もう将来にわたって更新する可能性の無いサイトって一つや二つありますよね。
もう要らないからと言ってドメインを手放したりすると、中古ドメイン屋に買われ風俗サイトにリニューアルされたりするので、できればそのままにしておきたいです。
しかし WordPress のバージョンアップをせずに放置していると、これまた最悪の場合脆弱性をつかれて乗っ取られたとかってことにもなりかねません。
また、月々のサーバ代もバカにならないですよね

そんなときは、AWS の S3 でホスティングしてあげましょう。これを「サイトの永代供養」と呼ぶらしいです。
恐ろしいほどコストダウンできますよ。
月額10円~でレンタルサーバーをはじめる方法 | アマゾン ウェブ サービス(AWS)
月額10円〜 – Amazon S3でウェブサイトをホスティングする方法 – Amazon Web Services ブログ

では、WordPress サイトを S3 でホスティングさせる方法について説明します。
続きを読む

EC2 インスタンス起動時に自動で EIP をセットする (AWS Advent Calendar 2012 20日目)

12/1からクリスマスまで、1人ずつリレー形式でブログ記事を書く AWS Advent Calendar 2012 の20日目です。
去年・一昨年は、WordPres Advent Calendar 2011PHP Advent Calendar 2010 に参加しましたが、今年は AWS Advent Calendar に参加します。

さて EC2 インスタンスに EIP (固定IP)を設定して運用するケースって多いと思うんですよ。
しかし EC2 のインスタンスでは、一度停止した後再起動すると EIP が外れてしまいます。
一時的にスケールアップしたくて、インスタンス停止して再起動とかいうオペレーションは、まま有ると思います。
その時に EIP を associate し忘れて「あら、サイトに繋がらないわ」なんてうっかりミスをすることも多いと思います。
そんな、うっかりさんのために EC2 インスタンス起動時に自動で EIP を設定するための方法を解説したいと思います。
続きを読む