では、今日も授業を始める。今日はロードバランサー(負荷分散装置)のパーシステンスだ。
ロードバランサーの続きね。
ロードバランサーの重要な用語として、パーシステンス(セッション維持)というものがある。
パーシステンスって何?
パーシステンスとは、同じクライアントからの通信(リクエスト)を、
同じサーバに分散するようにするためのセッション情報をロードバランサーが維持する機能のことだ。
パーシステンスのことを略してパーシスといったりする。
例えば、インターネットショッピングサイトでは、クライアントからの通信を、同じサーバで処理する必要があることがある。
この場合にこのパーシステンスの設定が必要になる。
クライアントが、Web画面にログインして、次に商品の購入ボタンを押す場合、
Webサーバ上でログインしていることをセッション情報として保持している必要がある。
同じWebサーバへ商品を購入するための通信(購入ボタンを押したときの通信)が来れば、
ログインしているユーザが購入するためのリクエストを送ってきたと
Webサーバが理解できるが、もし、他のWebサーバにリクエストがいくと、ログインしていないのに、
購入するためのリクエストが来ているため、ログインしてくださいと表示されたりする。
これはWebサーバ側の作り方にもよるが、このような構成になっているところは多々ある。
ログインしたときにWebサーバにセッション情報が作られるので、
そのセッションを保持したサーバへ購入するためのリクエストがこないといけないってことね。
Webサーバ側の作り方にもよるってどういうこと?
セッション情報をWebサーバ単体で保持しないこともあるってこと。
例えば、Webサーバのどれに通信が分散しても、Webサーバ以外の共有ストレージ側でセッションを保持していて、
すべてのWebサーバがその共有ストレージのセッションを参照するような構成の場合、
どのWebサーバに通信がきても、セッション情報を参照できる。この場合はパーシステンスが有効でなくてもセッション情報を参照できる。
でも、必ずしもこのような構成になっているわけではない。
基本的にはパーシステンスを有効にする必要があると思った方が良い。
パーシステンスの方式としては、
送信元IPアドレス(ソースIPアドレス)によるパーシステンスがある。
同じ送信元IPアドレスからきた通信は、最初に通信を振ったWebサーバへ通信するようにする方法だ。
これだと、クライアントのIPアドレスAは、常に同じWebサーバへ通信する。
例えば、ラウンドロビン方式で順番に通信を分散しながら、
かつ、同じIPアドレスからの通信は、ラウンドロビンせずに、同じWebサーバへ通信を振ることができる。
他にもパーシステンス方式ってあるの?
うむ。Cookieパーシステンス(クッキーパーシステンス)というのもある。これは通信のパケットの中のCookie(クッキー)をみて、判断するものだ。
どこでCookie(クッキー)が挿入されるの?
WebサーバがCookieを作成して挿入するパターンと、負荷分散装置がCookieを作成して挿入するパターンがある。
アプリケーションの作りやシステム構成によって、どちらを採用するかを決める。
対象サーバのアプリケーションの作り方を気にしない方法の
負荷分散装置がCookieを挿入する方法の方が多いと思う。
は~い
では、今日はここまで。
1.パーシステンスはロードバランサーがセッションを維持する機能
2.パーシステンスの方式は以下がある
・送信元IPアドレス
・Cookieパーシステンス