複数のwebサーバでセッションを使用

過去の失敗

過去にセッションについてはよく調べずに使用したことがあって、以下のような環境でミスしたことがあります
・webサーバ2台
・セッションの保存先はファイル

開発環境ではwebサーバは1台だったので気づかなかったのですがこれだと
当然webサーバ1で保存したセッションがwebサーバ2では読み込めないという失態がありました、、、

考えた対処方法

保存先をmemcachedmysqlにすることを検討

その後、それなりの規模のサービスではmemcachedを使うのが常套手段になりました。
mysqlを使うっていう案もあったのですが負荷面を考えて却下としました

保存先にcookieを使用する

最近知ったのですが保存先にブラウザのcookieを使用する方法がありました。
ココにも書いたのですが、設計の段階でセッションに入れるデータを検討してこの形にするのはありなのかなと思いました

ロードバランサーで、セッションidによって振り分けるサーバを判断させる

実はそのときはこの方法で対応しました。当時はフューチャーフォンということもあってセッションidをurlに付与して維持していました。
その際にロードバランサー側でセッションidにより振り分けるサーバを判断する形でした。サーバ台数も2台どころではなかったのですが、、、

強引な対処法

ここからは解決になっていない解決方法なのですが、2台あるから仕方なしにした対応です。というかやるしかない状況でした、、、
1つ目はセッションに書き込む際に1ピクセルの画像を埋め込んでもう1台のサーバにセッション情報を送るというもの、、、。2台だったからなんとなく動いてるようにみえましたが、3台、4台となったときを考えると現実的ではありませんでした
2つ目はファイルの監視同期ツールの配下にセッションファイルを置いて、セッションに書き込まれたら自動的にもう一方のサーバに同期されるというもの、、、
負荷のかかるサイトなどでは難しいです

以上、思い出とともに書いてみました