- PR -

複数サーバのセッション情報

1
投稿者投稿内容
たー坊
会議室デビュー日: 2006/01/20
投稿数: 16
投稿日時: 2006-02-20 09:39
おはようございます。たー坊です。
複数サーバのセッション管理について質問させていただきます。

現在のシステムは、APサーバを2台使用(将来的にはさらに増設)
しています。リクエストの切り分けは、ロードバランサで行っており
不可分散をしています。しかしセッション情報をログイン時に作成
する為、セッション情報がないサーバにアクセスされてしまうと
エラーになってしまいます。

1.山田さんがログイン。Aサーバにセッション情報格納
2.Aサーバが込み合ってきた
3.山田さんが業務開始。負荷分散によりBサーバリクエスト。
4.Bサーバは山田さんのセッション情報が存在しない為に例外発生。

このようになっています。ロードバランサを使用するシステムで
セッション管理を行うときに何か良い方法があるのでしょうか?




山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-02-20 10:17
通常同じセッションをもつユーザからのアクセスは同じサーバに振り分けるように設定します。
フェールオーバさせるにはセッション情報をレプリケートさせる設定が必要です。
http://www.atmarkit.co.jp/fjava/rensai2/webopt01/webopt01.html
たー坊
会議室デビュー日: 2006/01/20
投稿数: 16
投稿日時: 2006-02-20 10:41
インギ様、ありがとうございます。

ちなみに
>通常同じセッションをもつユーザからのアクセスは同じサーバに
>振り分けるように設定します。

というのは、ロードバランサの設定ですよね。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-02-20 12:00
はい。その通りです。
ロードバランサを使っている場合はロードバランサに設定します。
Apache の mod_**** とかで振り分けている場合はそちらの設定になります。
たー坊
会議室デビュー日: 2006/01/20
投稿数: 16
投稿日時: 2006-02-20 14:00
解答ありがとうございます。

ロードバランサを使用している場合は、ロードバランサで
設定とありますが、ユーザ単位で使用するサーバが決定されて
しまいますか?

Aサーバにログイン、ログアウト
次にBサーバにログイン

このようなことは可能ですか?

少しJavaと話題が離れてきたかもしれませんが、
宜しくお願いします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-02-20 14:14
ロードバランサの設定にもよりますね。

多くの場合はクッキーやURLに織り込んであるセッションIDを元に、前回と同じサーバに振り分けて、セッションIDがなければラウンドロビンで振り分ける、といった設定にするかと思います。
なのでセッションIDがなくなれば前回と違うサーバに振り分けることもあるかと。

ただ、後方に設置してあるサーバは IP アドレス以外全く同一の構成をしているはずですのでサーバAにログイン、サーバBにログイン、といったことを意識する必要はないはずです。
意識する必要があるのであればそもそもロードバランサを設置せず、ホスト名を使ってユーザが積極的に選択すれば良いかと思います。
たー坊
会議室デビュー日: 2006/01/20
投稿数: 16
投稿日時: 2006-02-20 20:47
インギさん、本当にありがとうございました。

大変勉強になりました。
1

スキルアップ/キャリアアップ(JOB@IT)