2016年12月03日
Tweet
ロードバランサーを利用しているときに、ありがちなトラブルとして、セッションの管理があります。
LB配下の SV01 で処理をしており、次に SV02 にアクセスが振り分けられた場合、セッションはSV01で管理されているので、引き継がれないのです。特にログインしているようなアプリは、画面遷移とともに突然ログアウトしてしまうので、すぐに気づけますし、よく出現するパターンです。
で、NFSで管理しようと最初は思っていました。
しかし数台のサーバーでNFSにアクセスした場合、セッションフォルダ内には、たくさんのセッションファイルができてしまいます。
そしてそれを回避するためには、ディレクトリ階層の指定もできるのでその設定を行います。
# vi /etc/php.ini
;session.save_path = "N;MODE;/path"
session.save_path = "2;/path"
しかしながら、これではNFSでの安定性になんだか不安がありました。速度面も気になります。
ということから、 memcached を利用することにしました。
# vi /etc/php.ini
session.save_handler = memcached
session.save_path = "<サーバーIP>:11211"
これで service httpd reload を行い反映させます。
なおサーバー側で以下のコマンドで動作状況を確認することができます。
emcached-tool localhost:11211 dump
PHPセッションをmemcachedで管理する件

LB配下の SV01 で処理をしており、次に SV02 にアクセスが振り分けられた場合、セッションはSV01で管理されているので、引き継がれないのです。特にログインしているようなアプリは、画面遷移とともに突然ログアウトしてしまうので、すぐに気づけますし、よく出現するパターンです。
で、NFSで管理しようと最初は思っていました。
しかし数台のサーバーでNFSにアクセスした場合、セッションフォルダ内には、たくさんのセッションファイルができてしまいます。
そしてそれを回避するためには、ディレクトリ階層の指定もできるのでその設定を行います。
# vi /etc/php.ini
;session.save_path = "N;MODE;/path"
session.save_path = "2;/path"
しかしながら、これではNFSでの安定性になんだか不安がありました。速度面も気になります。
ということから、 memcached を利用することにしました。
# vi /etc/php.ini
session.save_handler = memcached
session.save_path = "<サーバーIP>:11211"
これで service httpd reload を行い反映させます。
なおサーバー側で以下のコマンドで動作状況を確認することができます。
emcached-tool localhost:11211 dump
PHPセッションをmemcachedで管理する件