Amazon ElastiCache

WordPress で Amazon ElastiCache を利用する

手軽に memcached サーバを使うことができる Amazon ElastiCache を WordPress で使用するための方法を解説します。
# なんか、あまり日本語での説明とか見つけられなかったんで

WordPress には Object Cache って機能があって、複雑なデータベースクエリなどの生成に負荷のかかるデータをキャッシュすることができます。
ただ、この Object Cache でキャッシュされるデータは永続的な物ではなく、キャッシュされたデータはすべてのページをまたいで使用される訳ではありません。
このキャッシュされたデータを永続的に使用するための特殊なプラグイン(正確には、ドロップイン)は、いくつか提供されています。
今回は、それらのプラグインの中で memcached にキャッシュデータを貯めておくことができる Memcached Object Cache を使います。

以下 Amazon ElastiCache の設定方法から、Memcached Object Cache の導入方法まで

Amazon ElastiCache の設定

Amazon ElastiCacheAWS のコンパネで「Launch Cache Cluster」をクリックしてウィザードに答えるだけです。簡単ですね。
それだけじゃ、アレなんで簡単に項目の説明を。

  • Name: endpoint の名前に利用されます
  • Node Type: cache.m1.small 〜 cache.c1.xlarge の間で選択可能です。cache.m1.small は、60日間無料トライアル やってるんで、まずこれで試すと良いかも。
  • Number of Nodes: 立ち上げる memcached サーバのノード数を設定できます。とりあえず 1 で。
  • Cache Port: memcached サーバと接続する際のポート番号を設定できます。とりあえず、デフォルトの 11211 で
  • Prefered Zone: Availability Zone を選択できます。東京リージョンでは ap-northeast-1a 〜 ap-northeast-1c までの3つの AZ が選択できますね。
  • Topic for SNS Notifications: Amazon Simple Notification Servic (SNS) で通知する設定を選択できます。とりあえず、「Disable Notifications」で。
  • Auto Minor Version Upgrade: memcached のマイナーバージョンアップを自動で行うかどうかを設定できます。とりあえず Yes で。

次に表示される画面では、Security Group とかを設定します。
で、しばらく待ってると、Cache Clusters が使用できるようになります。
EC2 インスタンスから、新しく設定した Cache Cluster に接続するには Node の Endpoint を参照します。
Cache Cluster を選択して Nodes タブを見れば Endpoint が書いてありますね。

Cache Security Groupsただ、これだけだと EC2 インスタンスから Cache Cluster には接続できないので、Cache Security Group の設定を行う必要があります。
と言っても、そんなメンドくさくないです。
Cache Security Groups から、先ほど Cache Cluster を作成する時に指定した Security Group を選択して、アクセスを許可したい EC2 インスタンスが所属している Security Group を追加してあげましょう。

WordPress に Memcached Object Cache を設定する

次に WordPress で Memcached Object Cache が使用できるようにします。
まずは、Memcached Object Cache をダウンロードしてきて zip ファイルを展開します。
中に object-cache.php というファイルがあるので、これを /wp-content/ フォルダに保存してやってください。
ただ、このままだと localhost (127.0.0.1) の memcached に接続しようとするので、以下のコードを wp-config.php に追加します。

/**
 * Memcached Server
 */
global $memcached_servers;
$memcached_servers = array('endpoint.to.elasticache.amazonaws.com:11211');

endpoint.to.elasticache.amazonaws.com は、先ほど作成した Cache Cluster の endpoint です。
Memcached Object Cache では、接続先の memcached サーバをグローバル変数 $memcached_servers から取得してるので、wp-config.php で先にこのグローバル変数を設定しておけば良いですね。

データがちゃんとキャッシュされてるか確認したい場合は WP Memcached Manager とかを WordPress にインストールすれば確認できます。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください