現在仕事で運営しているサイトはPHPで、複数のWEBサーバで稼働しているが、セッション情報を各WEBサーバのローカルファイルに保存している(PHPのデフォルト)ため、ユーザがサーバ間で移動するとセッション維持できない。
なので同じ接続元からは暫く同じWEBサーバに振り続けるような設定をロードバランサにしている。
ただ、これでは本当に負荷分散出来ていないわけだし、SSL用のサーバがより限定された台数しかないため、何も手を打たないとSSLアクセスした結果サーバが切り替わってセッション切れと、かっこ悪い事態になってしまうわけなのだ。
常々どうしようかと頭を悩ませていたわけなのだが一般的には次のどちらかで実現しているのだと思う。
・DBに覚える
・memcachedに覚える
DBに覚える方法は、ただでさえ負荷が高くなりがちなDBサーバに毎回、参照・更新する事になりちょっと怖いなと。
memcachedに覚える方法は、非常に魅力的なのであるが、daemonを終了すると全て忘れてしまうという、重大な不都合がある。
他にもRuby on RailsであればDRbを使う方法などあるんだが、残念PHP!
などとりとめもなく考えながらRSSを消化していると、こんな物を発見。
恐らくmemcachedのBerkeley DB版といった感じだ。おれの心眼が使えると言っている。
ただPHPのバージョンが古いので、まずはそこからというオチなのだが。
コメントする