セッション永続性
セッション永続性はCompute Cloud@Customerでサポートされています。
セッション永続性は、単一の論理クライアントで発生したすべてのリクエストを単一のバックエンドWebサーバーに転送する方法です。キャッシュを使用してパフォーマンスを向上したり、ログイン・セッションやショッピング・カートを有効にするバックエンド・サーバーは、セッション永続性からメリットを得ることができます。
セッション永続性は、ロード・バランサの作成時またはバックエンド・セットの作成時に有効化します。既存のバックエンド・セットを編集して、セッション永続性の構成を有効化、無効化または変更することもできます。
ロード・バランシング・サービスには、セッション永続性を有効にするために、2つの相互に排他的なCookieベースの構成(アプリケーションCookieのスティッキネスとロード・バランサのCookieのスティッキネス)が用意されています。
IPアドレス駆動型のセッション永続性
一部の製品では、Cookieなしのセッション永続性がサポートされています。これらの製品は、受信リクエストのIPアドレスに依存します。ISPプロキシおよび企業出口ゲートウェイは、単一のIPアドレスからの多数のリクエストを発行できます。この場合、1つのバックエンド・サーバーが大量のトラフィックを引き受ける可能性があります。バックエンド・ロード・バランシングが可能な場合でも、バックエンド・フリートが一度に1つのサーバーに負荷がかかることがあります。
IPアドレス駆動型セッション永続性の別の弱点は、開始元のIPアドレスが変更される可能性があることです。この場合、セッション永続性が失われるか、リクエストが間違ったバックエンド・サーバーにリダイレクトされる可能性があります。
アプリケーションCookieスティッキネス
アプリケーションCookieセッション永続性を構成するには、Cookie名のみを指定する必要があります。デフォルトで、永続セッション・クライアントからのトラフィックは、元のサーバーが使用できないときに別のバックエンド・サーバーにリダイレクトされます。このフォールバック動作は無効にできません。
ロード・バランシング・サービスは、バックエンド・サーバーが認識済のCookie名を含むSet-Cookieレスポンス・ヘッダーを送信すると、アプリケーションCookieセッション永続性(スティッキネス)をアクティブにします。Cookie名は、バックエンド・セットの構成で指定されている名前と一致する必要があります。すべての一致パターン("*")が構成で指定されている場合、サーバーによって設定された任意のCookieでセッション永続性がアクティブになります。バックエンド・サーバーがセッション永続性をアクティブ化しないかぎり、サービスは、ロード・バランサの作成時に指定されたロード・バランシング・ポリシーに従います。
要件:
-
ロード・バランサは、サーバー側のCookie駆動型セッション永続性をサポートするには、HTTPモードで動作している必要があります。
-
クライアント・コンピュータは、ロード・バランシング・セッション永続性を動作させるには、Cookieを受け入れる必要があります。
機能:
ロード・バランシング・サービスは、構成済のCookieやその他のリクエスト・パラメータのハッシュを計算して、その値をCookieでクライアントに送信します。Cookieに格納された値により、サービスは、後続のクライアント・リクエストを正しいバックエンド・サーバーにルーティングできるようになります。バックエンド・サーバーが定義済のCookieを変更した場合、サービスはCookieの値を再計算してクライアントに再送信します。
Cookieデータは、不透明なエンティティとして扱うことをお薦めします。アプリケーションでは使用しないでください。
バックエンド・サーバーは、セッション永続性Cookieを削除することで、アプリケーションCookie永続性を停止できます。すべて一致パターンを使用した場合は、すべてのCookieを削除する必要があります。過去の有効期限を持つSet-Cookieレスポンス・ヘッダーを送信して、Cookieを削除できます。ロード・バランシング・サービスは、構成済のロード・バランシング・ポリシーを使用して、後続のリクエストをルーティングします。
Load BalancerのCookieスティッキネス
ロード・バランサCookieスティッキネスを構成すると、ロード・バランサによってCookieがレスポンスに挿入されます。Cookie内で構成されたパラメータにより、セッション・スティッキネスが有効になります。この方法は、独自のCookieを生成できないアプリケーションやWebバックエンド・サービスがある場合に役立ちます。
ロード・バランサのCookieセッション永続性を構成するには、次のパラメータおよび設定を指定します:
- Cookie名です
-
Cookie名を指定しない場合、デフォルト名は
X-Oracle-BMC-LBS-Route
です。ノート
バックエンド・アプリケーション・サーバーで使用されるCookie名が、ロード・バランサで使用されるCookie名と異なっていることを確認してください。名前の衝突の可能性を最小限に抑えるために、
X-Oracle-OCI-
などの接頭辞を使用することをお薦めします。バックエンド・サーバーとロード・バランサがどちらも同じ名前のCookieを挿入した場合、クライアントまたはブラウザの動作は、Cookieに関連付けられているドメイン値に応じて異なる可能性があります。Set-cookieヘッダー(バックエンド・サーバーによって生成)およびSet-cookieヘッダー(ロード・バランサによって生成)の名前とドメインの値が同じ場合、クライアントまたはブラウザではそれらを1つのCookieとして処理します。クライアントは、後続のリクエストでいずれかのCookie値のみを戻します。両方のSet-cookie名が同じで、ドメイン名が異なる場合、クライアントまたはブラウザではそれらを2つの異なるCookieとして処理します。
- Cookieが有効なドメイン。
-
ロード・バランサによって挿入されたSet-cookieヘッダーには、指定された値を持つドメイン属性が含まれます。この属性にデフォルト値はありません。値を指定しない場合、ロード・バランサはドメイン属性をSet-cookieヘッダーに挿入しません。
ノート
-
RFC 6265 - HTTP状態管理メカニズムは、ドメイン属性が
Set-cookie
ヘッダー内に存在する場合または存在しない場合のクライアントおよびブラウザの動作を説明しています。Set-cookie
ヘッダー内のDomain
属性の値がexample.com
である場合、example.com
、www.example.com
およびwww.abc.example.com
に対してHTTPリクエストを送信する際、クライアントのCookie
ヘッダーには同じCookieが含まれます。Domain
属性が存在しない場合、クライアントは、元のリクエストが送信されたドメインに対してのみCookieを返します。 -
この属性が正しいドメイン値を指定していることを確認してください。
Set-cookie
ヘッダーのDomain
属性に元のリクエストが送信されたドメインが含まれていない場合、クライアントまたはブラウザではCookieが拒否されることがあります。RFC 6265で指定されているように、クライアントは、www.example.com
から送信されたDomain
属性値がexample.com
またはwww.example.com
のCookieを受け入れます。www.example.com
から送信されたDomain
属性がabc.example.com
またはwww.abc.example.com
のCookieは受け入れません。
-
- Cookieが有効なURIパス
-
ロード・バランサによって挿入されたSet-cookieヘッダーには、指定された値を持つPath属性が含まれます。クライアントでは、
request-uri
のパス部分がCookieのPath属性と一致する(またはそのサブディレクトリである)場合にのみ、HTTPリクエストにCookieが含まれます。デフォルト値は/
です。 - Cookieが有効な期間
-
ロード・バランサによって挿入されたSet-cookieヘッダーには、指定された値を持つMax-Age属性が含まれます。指定された値は、少なくとも1秒である必要があります。この属性のデフォルト値は存在しません。値を指定しない場合、ロード・バランサはSet-cookieヘッダーにMax-Age属性を含めません。通常、クライアントまたはブラウザは、クライアントによる定義どおり、現在のセッションが終了するまでCookieを保持します。
Set-cookie
ヘッダーにSecure
属性を含めるかどうか-
Secure
属性は、セキュア・プロトコルを使用している場合にのみ、Cookieを送信するようクライアントまたはブラウザに通知します。ノート
このフィールドをtrueに設定した場合、対応するバックエンド・セットとHTTPリスナーを関連付けることはできません。
Set-cookie
ヘッダーにHttpOnly
属性を含めるかどうか-
HttpOnly
属性は、CookieのスコープをHTTPリクエストに制限します。この属性は、HTTP以外のAPIを介してCookieにアクセスする場合に、Cookieを省略するようクライアントまたはブラウザに指示します。たとえば、JavaScriptチャネルからCookieを制限します。 - 使用できないサーバーのフォールバックを無効にするかどうか
-
後述のフォールバックセクションを参照してください。
ノート
パス・ルート・ルールが優先され、ターゲット・バックエンド・サーバーが決定されます。ロード・バランサは、セッション・スティッキネスがバックエンド・サーバーに対して有効になっていること、およびCookie構成がターゲットに対して有効であることを確認する。無効なCookieは無視されます。
Fallback
デフォルトで、ロード・バランシング・サービスは、元のサーバーが使用できないときに、永続セッション・クライアントから別のバックエンド・サーバーにトラフィックを転送します。このフォールバック動作を無効にするようにバックエンド・セットを構成できます。フォールバックを無効にすると、ロード・バランサでリクエストが失敗し、HTTP 502コードが返されます。サービスは、クライアントが永続セッションCookieを提示しなくなるまで、HTTP 502を返し続けます。
フォールバックが無効の場合、将来の失効日が遠いCookieによってクライアントが停止する可能性があります。
ロード・バランシング・サービスは、ドレインとマークされているサーバーを、既存の永続化セッションで使用可能なものとみなします。既存の永続化セッションに含まれない新規リクエストは、そのサーバーに送信されません。