ElastiCache を使ってみよう

August 15, 2017

ElastiCache とは

Amazon ElastiCache
Amazon ElastiCache は、クラウドでのメモリ内データストアまたはキャッシュのデプロイ、運用、および縮小/拡張を容易にするウェブサービスです。このサービスは、低速のディスクベースのデータベースに完全に依存せずに、高速の管理されたメモリ内データストアから情報を取得できるようにすることで、ウェブアプリケーションのパフォーマンスを向上させます。

-> メモリ内のデータストアを用いるキャッシュ運用サービス

- 以下の二つのキャッシュエンジンをサポート -
Redis
Redis は高速なオープンソースのインメモリ型キー値データ構造ストアです。Redis には多目的なインメモリデータ構造が用意されており、さまざまなカスタムアプリケーションを簡単に作成できます。Redis の最先端のユースケースには、キャッシュ、セッション管理、PUB/SUB、リーダーボードなどが含まれています。

memcached
memcachedは高性能な分散メモリキャッシュサーバです。通常,データベースへの問い合わせ結果を一時的にキャッシュすることで,データベースへのアクセス回数を減らし,動的なウェブアプリケーションの高速化やスケーラビリティの向上のために利用されています。

実際に使ってみる

今回は ClassMethod 様のブログに則って、memcached を用いて php のセッション管理を行いたいと思います。
とりあえず、以下の写真のような設定にしてみました。

f:id:shiro_kochi:2018××××××××:plain:w100:left

さて、php のセッション管理を行うにあたって、EC2 やら VPC やらを構築しないといけないと思うんですけど、今回は下の図みたいな感じです。

f:id:shiro_kochi:2018××××××××:plain:w100:left

以下のコマンドにより、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 インスタンスで用意します。

WebServer01
<?php
 
session_start();
echo "This is Web Server 1<br/>";
 
if (isset($_SESSION["username"])) {
  echo $_SESSION["username"];
} else {
  $_SESSION["username"] = "U-PIN-01";
}

?>
WebServer02
<?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 にブラウザから複数回アクセス。

1 回目 f:id:shiro_kochi:2018××××××××:plain:w100:left

2 回目 f:id:shiro_kochi:2018××××××××:plain:w100:left

3 回目 f:id:shiro_kochi:2018××××××××:plain:w100:left

ちゃんと Session ID に対応したデータが表示されていることがわかる。


 © 2023, Dealing with Ambiguity