[PHP-users 14269] Re: Fwd: phpでクラスタリング??
Y.Watanabe
php-users@php.gr.jp
2003年 3月 25日 (火) 05:53:44 JST
わたなべです。
"Kumakura Yodai" wrote on 2003/03/25 14:10
with Subject: [PHP-users 14260] Fwd: phpでクラスタリング??
>2台のサーバーは同時に両方稼動していて
>インターネットからやってくる人はまずロードバランサーでこの2台の
>どちらかのサーバーに接続します。
>そこで2台のサーバー間できちんと同期が取れて、
>どちらか一つのサーバーがダウンしても、
>sessionIdなどを引き継いで欲しいということです。
セッション情報を保存しているファイルを保存するディレクトリ
(php.iniで言うと sessin.save_path の値)
を、NFS等で共有できるディレクトリにしてしまえばよい
ということになります。
デフォルトではセッション情報は Webサーバの /tmp 配下に
1セッション=1ファイルの形で蓄積されます。
つまり
┌───────┐ ┌───────┐
│ Web Server01 │ │ Web Server 02│
│ /tmp │ │ /tmp │
└───────┘ └───────┘
上記だと当然二つのサーバ間でセッションを共有することはできません。
┌───────┐ ┌───────┐
│ Web Server01 │ │ Web Server 02│
│ /sess │ │ /sess │
└─────┬─┘ └─┬─────┘
│ │
┌─┴─ ───┴┐
│ NFS Server │
│/sessionfiles │
└────── ─┘
上記のようにNFSサーバーを新たに仕立て、その中に
セッションファイル保存用のディレクトリを一つ掘ります。
あとは server01,02において特定のディレクトリ(ここでは/sess)
がNFSサーバの/sessionfilesディレクトリにアクセスされるように
NFSのマウント設定するだけです。
当然server01,02のphp.iniのsession_save_pathも/sessにセットします。
こうしておけば、server01がダウンしたとしても、
セッション情報の取り扱いに影響を出すことなく
server02でサービスを継続させることができるでしょう。
「データベースを利用する方法もあると聞いたが・・・」という話は、
上の図でいうところのNFSサーバをDBサーバに置き換えたケースと
考えればいいでしょう。
もちろんNFSサーバがダウンしたら全てがダウンすることに
なりますが、それはデータベースでセッションを管理する場合でも
同じことです。
##### 蛇足 #####
メーリングリストにおいて自分が幸せになれそうな情報を
集めることができず悩んでいる場合には、
えてして下記を読むことが有効である場合があります ↓
真・技術系メーリングリスト FAQ
http://www.geocities.co.jp/SiliconValley/5656/
Q:メーリングリストで発言をしていたら「スレッドが切れる」とお叱りの
メールを多数頂きました。私にはスレッドが切れただけで、そんなに迷惑
だとは思えないのですが。 (New! 2002.12.01)
http://www.geocities.co.jp/SiliconValley/5656/#20021201-01
PHP-users メーリングリストの案内