EC2でセッションを共有するセッションサーバをAWS ElastiCacheのRedisで作る過程を記事としてご紹介。コーヒー1杯を飲んでいる間にクラスタ構成のセッションサーバが作れてしまいます。
【サービス】>> 【ElastiCache】を選択します。
【Get Started Now】をクリックします。
Multi-AZ with Auto-Failoverに対応して冗長化したいので、今回はmediumのインスタンスを選択しています。このクラス以上のインスタンスではないとMulti-AZ with Auto-Failoverの機能サポートが受けれません。
※セキュリティグループ等は各環境に合わせてお好みで設定して下さいね。
セッションサーバが作られました。
Multi-AZ構成でノードが作られています。
PHPとredisを連携するモジュールのインストール
1 |
# yum install --disablerepo=amzn-main --enablerepo=remi-php70 php-pecl-redis |
redis-cliコマンドをインストールする為にredisをインストール
1 |
# yum install --disablerepo=amzn-main --enablerepo=epel redis |
PHP-FPMとredisの接続を行います。
1 2 3 4 |
# vi /etc/php-fpm.d/www.conf php_value[session.save_handler] = redis php_value[session.save_path] = "tcp://ElastiCacheエンドポイント" |
再起動して反映させます。
1 |
# /etc/init.d/php-fpm restart |
redisモジュール確認します。
1 2 |
# php -m | grep redis redis |
後はクライアントからRedisサーバに接続が出来たら、Redisサーバのキーにセッションが入っている事を確認し、RedisのセッションキーとブラウザのCookieを削除して接続が切れるかなど動作を検証しましょう。また、Redisセッションサーバに特定のEC2以外接続出来ないようにしたりなど各設定を行って下さいね。
※追記する予定。