AWSでPHP7+ElastiCache(Redis)を利用したセッション保持

この記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。

目的

AWS環境でPHPアプリケーション用のsessionを ElastiCacheを利用する

目次

手順の概要

  1. PhpRedisのインストール
  2. php.iniの編集
  3. 保持されたsessionの確認

実行環境

  • ElastiCache (Redis)
  • AmazonLinux (2016.09を利用)
  • PHP7 (7.0.16を利用)
  • PHP-FPM (7.0.16を利用)
  • PhpRedis (3.1.1.RC1を利用)
    3.1.1無印を利用した事でセッション復元に問題が起きておりましたが、2017/05/29 現在 3.1.2 が出ているようです。

概要図

手順

PhpRedisのインストール

下記に記載に従って、gitにて取得後のディレクトリでコマンドを実行
https://github.com/phpredis/phpredis#installation

php.iniの編集

下記に記載に従って、PHP Session handler設定を追記・変更
https://github.com/phpredis/phpredis#php-session-handler

作成された ElastiCacheのエンドポイントを記載します、SecurityGroupを空けておく事を忘れずに。
(Multi-AZ with Auto-Failoverにて冗長化したいので、cache.m3.medium 以上のサイズを選択する必要があります)

保持されたsessionの確認

sessionを利用しているアプリケーションを動作させ、正常に動作していれば、下記のように redis-cli から sessionが生成されている事を確認できます。

redis-cli を起動

リアルタイムにsession状態の確認

セッション保持数の確認

セッション内容の確認

セッション有効期限の確認

コマンドを打つ度、TTL値がどんどん減っていく事を確認できます。

当初こちらの構成を組んだ際にSessionの自動削除がされるか不安でしたが、file / DBに持たせた時と同様
下記設定により自動的に削除されていく事を確認できました。

php.ini

まとめ

Amazon ElastiCacheを利用する事で、高負荷時のファイルI/OやDB負荷を少しでも減らす対策を簡単に行う事が出来ました。

投稿者プロフィール

takashi
Japan AWS Ambassadors 2023-
開発会社での ASP型WEBサービス企画 / 開発 / サーバ運用 を経て
2010年よりスカイアーチネットワークスに在籍しております

機械化/効率化/システム構築を軸に人に喜んで頂ける物作りが大好きです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.

ABOUTこの記事をかいた人

Japan AWS Ambassadors 2023- 開発会社での ASP型WEBサービス企画 / 開発 / サーバ運用 を経て 2010年よりスカイアーチネットワークスに在籍しております 機械化/効率化/システム構築を軸に人に喜んで頂ける物作りが大好きです。