ElastiCache とは
Amazon ElastiCache
Amazon ElastiCache は、クラウドでのメモリ内データストアまたはキャッシュのデプロイ、運用、および縮小/拡張を容易にするウェブサービスです。このサービスは、低速のディスクベースのデータベースに完全に依存せずに、高速の管理されたメモリ内データストアから情報を取得できるようにすることで、ウェブアプリケーションのパフォーマンスを向上させます。
-> メモリ内のデータストアを用いるキャッシュ運用サービス
- 以下の二つのキャッシュエンジンをサポート -
Redis
Redis は高速なオープンソースのインメモリ型キー値データ構造ストアです。Redis には多目的なインメモリデータ構造が用意されており、さまざまなカスタムアプリケーションを簡単に作成できます。Redis の最先端のユースケースには、キャッシュ、セッション管理、PUB/SUB、リーダーボードなどが含まれています。
memcached
memcachedは高性能な分散メモリキャッシュサーバです。通常,データベースへの問い合わせ結果を一時的にキャッシュすることで,データベースへのアクセス回数を減らし,動的なウェブアプリケーションの高速化やスケーラビリティの向上のために利用されています。
実際に使ってみる
今回は ClassMethod 様のブログに則って、memcached を用いて php のセッション管理を行いたいと思います。
とりあえず、以下の写真のような設定にしてみました。
さて、php のセッション管理を行うにあたって、EC2 やら VPC やらを構築しないといけないと思うんですけど、今回は下の図みたいな感じです。
以下のコマンドにより、httpd 及び php5.6 のインストール、また pecl モジュールもインストールする。
$ sudo yum install httpd24 php56
$ sudo yum install php56-pecl-memcached
また、php.conf を書き換える。
$ sudo cp /etc/httpd/conf.d/php.conf /etc/httpd/conf.d/php.conf.org
$ sudo diff /etc/httpd/conf.d/php.conf /etc/httpd/conf.d/php.conf.org
40,41c40,41
< php_value session.save_handler "memcached"
< php_value session.save_path "php-session.yh28qm.cfg.apne1.cache.amazonaws.com:11211"
---
> php_value session.save_handler "files"
> php_value session.save_path "/var/lib/php/5.6/session"
クラメソさんのブログに従い、以下の php コードをそれぞれの EC2 インスタンスで用意します。
<?php
session_start();
echo "This is Web Server 1<br/>";
if (isset($_SESSION["username"])) {
echo $_SESSION["username"];
} else {
$_SESSION["username"] = "U-PIN-01";
}
?>
<?php
session_start();
echo "This is Web Server 2<br/>";
if (isset($_SESSION["username"])) {
echo $_SESSION["username"];
} else {
$_SESSION["username"] = "U-PIN-02";
}
?>
ELB の FQDN にブラウザから複数回アクセス。
ちゃんと Session ID に対応したデータが表示されていることがわかる。