セッションの永続性(スティッキ性)の設定
セッションの永続性(スティッキ性)とは、同一クライアントから同一サーバへ常時複数の(同時または永続的な)接続を送信する機能です。この機能は、特定のロード バランス環境で一般的に必要です。
通常、アプリケーションのトランザクションを完全に処理するには(Web サイトをブラウズしながら、各種の購入アイテムを選択して、チェックアウトする場合など)、複数の接続、場合によっては何百、何千の同時接続または連続した接続が必要になります。こういった処理の多くは、一時的に重要な情報を生成して、それを使用します。情報は処理を実行する特定のサーバに保存され、修正されます。このトランザクションをすべて処理するには数分から数時間かかることがあり、クライアントはその間同一サーバにデータを送信する必要があります。
バックエンド共有データベースによる多層設計でも部分的にこの問題を解決できますが、ローカル サーバ キャッシュを利用することで、アプリケーションの処理性能をさらに改善できます。ローカル サーバのキャッシュを使用すると、新しいサーバが選択されるたびにデータベースに接続して、トランザクションに固有の情報を取得する必要がなくなります。
複数のサーバに接続するクライアントを一意に特定する方法もサーバ固定(stickness)に関する大きな問題です。クライアントを識別するために使用できる情報であれば、ロード バランス装置はその情報を保存し、現在処理を実行しているサーバにそれを関連付ける必要があります。
(注) CSMは256.000の固定データベースのエントリを保持できます。
CSM は個々のクライアントを識別して、次の方法で固定処理を実行します。
• 送信元IPアドレスの固定
CSM に送信元 IP アドレス全体(32 ビットのネットマスクを含めて)を学習させるか、またはその一部を学習させるかを設定できます。
• SSL識別情報の固定
クライアントおよびサーバが SSL を介して情報のやり取りをしている場合、複数のサーバ接続に対応した一意の SSL ID 番号が保持されます。SSL バージョン 3.0 または TLS 1.0 では、この ID 番号を暗号化しない(クリア テキスト)で伝送される必要があります。CSMはこの値を使用して、特定の処理を識別できます。ただし、このSSL IDは再度ネゴシエートできるため、SSL IDを常に正しいサーバに固定できるわけではありません。SSL ID ベースで固定する方法は、常に SSL ID を再利用できるので、SSL 終端装置のパフォーマンスを向上できます。
(注) CSM を Catalyst 6500 SSL モジュールと一緒に使用する場合、各 Catalyst 6500 SSL モジュールの MAC アドレスが SSL ID 内の特定のオフセットに挿入されるため、SSL ID の再ネゴシエートを介して SSL ID を固定することができます。この方法を設定するには、仮想サーバのコンフィギュレーション サブモードでssl-stickyコマンドを使用します。
スティッキ接続の設定情報については、『Catalyst 6500 Series Switch SSL Services Module Configuration Note』の第 5 章「Configuring Different Modes of Operation」を参照してください。
ssl-stickyコマンドについては、『Catalyst 6500 シリーズ スイッチ コンテント スイッチング モジュール コマンド リファレンス』を参照してください。
• ダイナミックCookieラーニング
特定の Cookie 名を検索して、クライアント要求 HTTP ヘッダーまたはサーバの「Set-Cookie」メッセージから自動的にその値を学習するように CSM を設定できます。
デフォルトでは Cookie 値全体を学習するように CSM は設定されています。CSM ソフトウェア リリース 4.1(1) でオプションのオフセットと長さが導入されたことで機能が拡張され、CSM に Cookie 値の一部分のみを学習するように指定できるようになりました。「Cookie 固定のオフセットおよび長さ」を参照してください。
ダイナミック Cookie ラーニング機能は、同一の Cookie 内にセッション ID またはユーザ ID を複数保存する J2EE のようなアプリケーションを使用する場合に役立ちます。Cookie値の特定のバイトのみスティッキ性と関連付けられるためです。
CSM ソフトウェア リリース 4.1(1) では、URL の一部として Cookie 情報を検索(およびその結果を学習、または固定)する機能が追加されたため、ダイナミック Cookie の固定機能も改善されています。「URLラーニング」 を参照してください。URL ラーニング機能は、Cookie 情報を HTTP URL の一部として挿入するアプリケーションに役立ちます。場合によっては、この機能を使用して Cookie を受け付けないクライアントにも対応できます。
• Cookie挿入
CSM はサーバの代わりに Cookie を挿入して、サーバが Cookie を設定しない場合でもクライアントが Cookie によるサーバ接続を固定できるようにします。Cookieには、CSMが特定の実サーバへの永続接続を確実に実行するための情報が含まれています。
固定(sticky)グループの設定
固定(sticky)グループの設定には、固定方法(送信元IP、SSL ID、Cookie)とグループのパラメータの設定、およびポリシーへの関連付けが含まれます。固定(sticky)タイムアウトは、スティッキ情報がスティッキ テーブルに確保される期間を指定します。デフォルトの固定タイムアウト値は1440分(24時間)です。特定のエントリの固定(sticky)タイマーは、そのエントリに一致する新規接続が開かれるたびにリセットされます。
(注) 複数のポリシーまたは仮想サーバは、潜在的に同一固定グループに設定できます。その場合、それらのポリシーまたは仮想サーバへのすべての接続に、その固定処理が適用されます。ポリシー 1 および 2、または仮想サーバ 1 および 2 が同一固定グループに設定されている場合、ポリシー 1 または仮想サーバ 1 を介してサーバ A に固定されるクライアントが、ポリシー 2 または仮想サーバ 2 を介して同一のサーバAに固定されるため、これらの接続は「buddy 接続」とも呼ばれます。
注意 複数のポリシーまたは仮想サーバで同一固定グループを使用している場合、すべてが同一サーバ ファームか、またはグループ内で同一サーバを指定している異なるサーバ ファームを間違いなく使用することが重要です。
固定グループを設定する手順は、次のとおりです。
|
|
Router(config-module-csm)# sticky
sticky-group-id {netmask
netmask | cookie
name | ssl} [address [source | destination | both]][timeout
sticky-time ]
|
同じポリシーと一致する同一クライアントからの接続には、同一実サーバが使用されるようにします。 |
次に、固定グループを設定して、ポリシーに関連付ける例を示します。
Router(config-module-csm)# sticky 1 cookie foo timeout 100
Router(config-module-csm)# serverfarm pl_stick
Router(config-slb-sfarm)# real 10.8.0.18
Router (config-slb-real)# inservice
Router(config-slb-sfarm)# real 10.8.0.19
Router (config-slb-real)# inservice
Router(config-slb-real)# exit
Router(config-slb-sfarm)# exit
Router(config-module-csm)# policy policy_sticky_ck
Router(config-slb-policy)# serverfarm pl_stick
Router(config-slb-policy)# sticky-group 1
Router(config-slb-policy)# exit
Router(config-module-csm)# vserver vs_sticky_ck
Router(config-slb-vserver)# virtual 10.8.0.125 tcp 90
Router(config-slb-vserver)# slb-policy policy_sticky_ck
Router(config-slb-vserver)# inservice
Router(config-slb-vserver)# exit
Cookie 挿入
サーバが現在適切な Cookie を設定していない場合にセッション Cookie を固定するには、Cookie挿入機能を使用します。この機能をイネーブルにすると、CSMはクライアントからサーバへの応答に Cookie を挿入します。CSM は次にサーバからクライアントへのトラフィック フローに Cookie を挿入します。
次に、永続性を確保するために Cookie を指定する例を示します。
Cat6k-2(config-module-csm)# sticky 5 cookie mycookie insert
Cookie 固定のオフセットおよび長さ
Cookie 値は、クライアント/サーバ間の処理で、一部を残して変更される場合があります。その場合、特定サーバへの永続接続を確保するために、変更されない部分を使用できます。接続を固定または確保するために、Cookie の変更されない部分は cookie offset num [ length num ]コマンドを使用して、オフセットおよび長さの値で指定できます。
オフセット(Cookie 値を先頭のバイトから数える)および長さ(Cookie の一部を指定する)はいずれもバイト単位で指定します。このオフセットと長さは、固定接続を確保するために使用します。これらの値はスティッキ テーブルに保存されます。
オフセットおよび長さは0~4000バイトの範囲で指定できます。Cookie 値がオフセットより長く、オフセットと Cookie の長さを加えたものより短い場合、CSM はオフセットの後ろの Cookie 部分に応じて接続を固定します。
次に、Cookieのオフセットおよび長さを指定する例を示します。
Cat6k-1# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Cat6k-1(config)# module csm 4
Cat6k-1(config-module-csm)# sticky 20 cookie SESSION_ID
Cat(config-slb-sticky-cookie)# cookie offset 10 length 6
URLラーニング
URLラーニングによるCookie固定機能により、CSMはSet-CookieフィールドまたはURL埋め込みCookieのセッション情報をキャプチャできます。CSMは、サーバ応答の Set-Cookie HTTP ヘッダーに埋め込まれた特定の Cookie 値に基づいて、固定テーブルのエントリを作成します。
URL ラーニングを設定すると、CSM は次の 3 通りの方法で Cookie 値を学習できます。
• Cookie メッセージがサーバからクライアント方向に設定される
• クライアント要求内の Cookie
• URLに埋め込まれたCookie値
最初の 2 つの方法は標準のダイナミック Cookie ラーニング機能ですでにサポートされています。3 番目の方法は URL ラーニング機能として追加されました。
ほとんどの場合、そのあとの一連のHTTP要求内において、クライアントは同じCookie値を戻します。CSM は、それに一致する値に基づいて同じサーバにクライアントを固定します。ただし、クライアントによってはブラウザで Cookie をディセーブルにしているため、このタイプの Cookie 固定接続ができない場合もあります。URL Cookie ラーニングの新機能で、CSM は URL 文字列に埋め込まれた Cookie 名および値を抽出できます。この機能が実行されるのは、サーバが Web ページのURLリンクに Cookie を埋め込んでいる場合だけです。
クライアント要求に Cookie が含まれていない場合、CSM は、CSM で設定したセッション ID 文字列(?session-id=)を探します。この文字列に関連した値が、CSMがキャッシュ内で探しているセッションID番号です。セッション ID は、要求情報が指定されるサーバと照合されて、クライアント要求は送信されます。
セッションCookieおよびURLセッションIDは異なる可能性があるため、Cisco IOSの sticky id cookie name コマンドがアップデートされました。次の例で、正しい構文を示します。
(注) 今回のリリースのCookie固定オフセット機能をサポートするために、アップデートされたコマンドにはオフセットおよび長さを指定する構文が含まれています。「Cookie 固定のオフセットおよび長さ」を参照してください。
クライアント / サーバの動作およびそのフレーム シーケンスに応じて、HTTP Cookie、Set-Cookie ヘッダー、または URL 埋め込み Cookie で表示されている同一の Cookie 値が、標準の HTTP Cookie に表示されることがあります。また、CookieがURLに埋め込まれているか、HTTP Cookieヘッダーに表示されているかによって、Cookie名はURLによって異なる場合があります。異なる名前のCookieおよびURLは、これらの2つのパラメータの多くがサーバ上で別々に設定されるために生じます。たとえば、Set-Cookie 名は次のようになることがあります。
Set-Cookie: session_cookie = 123
また、URL は次のようになることがあります。
http://www.example.com/?session-id=123
sticky コマンドの name フィールドには、Cookieヘッダーに表示されるCookie名を指定します。このコマンドに追加された secondary session_id には、URLに表示される対応するCookie名を指定します。
次に、URLラーニング機能の設定例を示します。
Cat6k-1# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Cat6k-1(config)# module csm 4
Cat6k-1(config-module-csm)# sticky 30 cookie session_cookie
Cat(config-slb-sticky-cookie)# cookie secondary session-id
Cat(config-slb-sticky-cookie)#
RHIの設定
ここでは、Route Health Injection(RHI)の設定方法について説明します。
• 「RHIについて」
• 「仮想サーバ用RHIの設定」
RHIの概要
CSM に RHI を使用すると、VIP アドレスの可用性をネットワーク全体にアドバタイズできます。また、ネットワーク全体に、同一 VIP アドレスおよびサービスをもつ複数のCSM装置を配置できます。あるCSMは、他の装置でサーバ ロードバランシング サービスを利用できなくなった場合に、他の装置のサービスを変更できます。この CSM は、他のサーバ ロードバランス装置よりクライアントシステムに論理上近いので、サービスの提供もできます。
(注) CSM は VIP アドレスをホスト ルートとしてアドバタイズしますが、ほとんどのルータはホスト ルート情報をインターネットに伝播しないので、RHI の用途はイントラネットに限定されます。
RHIをイネーブルにするには、次のようにCSMを設定します。
• 実サーバをプローブし、使用可能な仮想サーバおよびVIPアドレスを識別します。
• 変更が発生するたびに、VIPアドレスの可用性情報を MSFC に正確にアドバタイズします。
(注) 電源投入時にRHIがイネーブルの場合、各VIPアドレスが使用可能になるので、CSMはMSFCにメッセージを送信します。
MSFC は RHI が提供する VIP アドレスの可用性情報を定期的に伝播します。
(注) セキュリティ上の理由から、ほとんどのルータはホスト ルート情報をインターネットに伝播しないので、通常、RHIの用途はイントラネットに限定されます。
RHIを使用しないVIPアドレスへのルーティング
RHI を使用しない場合、トラフィックは VIP アドレスが属すクライアント VLAN へのルートを経由して、VIP アドレスに到達します。CSMの電源を投入すると、MSFCはルーティング テーブルにクライアントVLANへのルートを作成し、このルート情報を他のルータと共有します。VIPに到達するために、クライアント システムはルータを使用して、各VIPアドレスが属すネットワーク サブネット アドレスに要求を送信します。
サブネットまたはセグメントに到達可能であっても、その場所にあるCSMの仮想サーバが動作していない場合、要求は失敗します。他のCSM装置はさまざまな場所に配置することができます。ただし、ルータは単に論理的な距離に基づいてサブネットに要求を送信します。
RHIを使用しないと、VIPアドレスを使用できるかどうかが検証されずに、トラフィックがVIPアドレスに送信されます。この場合は、VIPに接続された実サーバがアクティブではないこともあります。
(注) デフォルトでは、CSMは設定されたVIPアドレスをアドバタイズしません。
RHIを使用するVIPアドレスへのルーティング
RHIを使用すると、VIPアドレスが使用可能になったときに、CSM は MSFC にアドバタイズを送信し、使用不可能な VIP アドレスに対してアドバタイズを取り消します。ルータはルーティング テーブルを参照して、要求をクライアントからVIPアドレスに送信するために必要なパス情報を検索します。RHI機能が有効な場合、一致した中で最も固有性の高いものがVIPアドレス情報としてアドバタイズされます。クライアントに対する要求は、アクティブなVIPサービスを使用して、CSMへの到達パスを経由して送信されます。
VIPアドレスのインスタンスが複数存在する場合、クライアント ルータはVIPアドレスのインスタンスごとに必要な情報(可用性およびホップ数)を受信して、そのVIPアドレスに対する最適なルートを判別できます。ルータはCSMが論理上、クライアント システムに近くなるようにパスを選択します。
(注) CSMはコンテンツを処理する実サーバをすべてプローブすることによって、指定されたVIPアドレスに到達できるかどうかを判別します。したがって、RHIを使用する場合はプローブも設定する必要があります。VIPアドレスに到達できるかどうかを判別したあと、CSMはこの可用性情報をMSFCと共有します。次に、MSFCはこのVIP可用性情報をイントラネットの他の装置に伝播します。
CSMがVIPの可用性を判別する仕組み
VIPが使用可能かどうかをCSMが判断できるようにするには、プローブ(HTTP、ICMP、Telnet、TCP、FTP、SMTP、DNS のいずれか)を設定し、それをサーバ ファームに関連付ける必要があります。プローブが設定されている場合、CSMは次の確認を行います。
• プローブ用に設定されたすべてのサーバ ファーム上のすべての実サーバをプローブします。
• 到達可能な(到達可能な実サーバを1台以上含む)サーバ ファームを識別します。
• 到達可能な(到達可能なサーバ ファームを1つ以上含む)仮想サーバを識別します。
• 到達可能な(到達可能な仮想サーバを1台以上含む)VIPを識別します。
VIPの可用性情報の伝播
RHI を使用すると、CSM は使用可能な VIP アドレスを含むアドバタイズ メッセージを MSFC に送信します。MSFCは、CSMから受信するVIPアドレスごとに、ルーティング テーブルにエントリを追加します。MSFCで動作中のルーティング プロトコルは、他のルータにルーティング テーブル アップデートを送信します。VIPアドレスが使用不可能になると、そのルートはアドバタイズされなくなり、エントリはタイムアウトし、ルーティング プロトコルは変更を伝播します。
(注) RHI を CSM で動作させるには、CSM が取り付けられているシャーシ内の MSFC で Cisco IOS Release 12.1.7(E) 以降を稼働し、その MSFC をクライアント側ルータとして設定する必要があります。
仮想サーバ用RHIの設定
仮想サーバ用のRHIを設定する手順は、次のとおりです。
ステップ 1 VLAN が設定されていることを確認します( 第 4 章「VLANの設定」 を参照)。
ステップ 2 プローブをサーバ ファームに関連付けます(「ヘルス モニタリング用プローブの設定」を参照)。
ステップ 3 実サーバをプローブするように CSM を設定します(「ヘルス モニタリング用プローブの設定」を参照)。
ステップ 4 advertise active SLB virtual server コマンドを入力して、仮想サーバごとに RHI をイネーブルにします。
Router(config-module-csm)# vserver virtual_server_name
Router(config-slb-vserver)# advertise active
次に、vserver1という名前の仮想サーバに対してRHIをイネーブルにする例を示します。
Router(config-module-csm)# vserver vserver1
Router(config-slb-vserver)# advertise active
環境変数
variable name string コマンドを使用して、コンフィギュレーションの環境変数をイネーブルにできます。 表 8-1 では、CSM 環境変数の値を示しています。
表 8-1 CSM 環境変数の値
|
|
|
|
ARP_INTERVAL |
300 |
整数 (15~31536000) |
設定したホストのARP要求の間隔(秒) |
ARP_LEARNED_INTERVAL |
14400 |
整数 (60~31536000) |
学習したホストのARP要求の間隔(秒) |
ARP_GRATUITOUS_INTERVAL |
15 |
整数 (10~31536000) |
意味のない(gratuitous)ARP 要求の間隔(秒) |
ARP_RATE |
10 |
整数(1~60) |
ARP 再試行の間隔(秒) |
ARP_RETRIES |
3 |
整数(2~15) |
ホスト ダウン フラグを立てる前に ARP を再試行する回数 |
ARP_LEARN_MODE |
1 |
整数(0~1) |
CSMが応答のみ(0)のMACアドレスを学習するか、すべてのトラフィック(1)のMACアドレスを学習するか指定します。 |
ARP_REPLY_FOR_NO_INSERVICE_VIP |
D |
0 |
整数(0~1) |
ADVERTISE_RHI_FREQ |
10 |
整数(1~65535) |
CSM が RHI アップデートをチェックする頻度(秒) |
AGGREGATE_BACKUP_SF_STATE_TO_VS |
0 |
整数(0~1) |
仮想サーバの状態に、バックアップ サーバ ファームの動作可能状態を含めるかどうかを指定します。 |
COOKIE_INSERT_EXPIRATION_DATE |
Fri, 1 Jan 2010 01:01:50 GMT |
文字列 (2~63文字) |
CSMによって挿入されるHTTP Cookieの期限切れの時間および日付を設定します。 |
DEST_UNREACHABLE_MASK |
65535 |
整数(0~65535) |
ICMP宛先到達不能コードの転送をビットマスクで指定します。 |
FT_FLOW_REFRESH_INT |
60 |
整数(1~65535) |
フォールト トレラントのスロー パス フローのリフレッシュ間隔(秒) |
HTTP_CASE_SENSITIVE_MATCHING |
1 |
整数(0~1) |
URL(Cookie、ヘッダー)の照合および固定で、大文字と小文字を区別するかどうかを指定します。 |
HTTP_URL_COOKIE_DELIMITERS |
/?&#+ |
文字列 (1~64文字) |
URL文字列のCookieの区切り文字のリストを設定します。 |
MAX_PARSE_LEN_MULTIPLIER |
1 |
整数(1~16) |
設定したmax-parse-lenをこの総数で乗算します。 |
NAT_CLIENT_HASH_SOURCE_PORT |
0 |
整数(0~1) |
送信元ポートを使用してクライアントのNAT IPアドレスを取得するかどうかを指定します。 |
ROUTE_UNKNOWN_FLOW_PKTS |
0 |
整数(0~1) |
既存のフローと一致しない non-SYN パケットをルーティングするかどうかを指定します。 |
NO_RESET_UNIDIRECTIONAL_FLOWS |
0 |
整数(0~1) |
設定されている場合、タイムアウト時に単一方向フローをリセットしないように指定します。 |
SWITCHOVER_RP_ACTION |
0 |
整数(0~1) |
Supervisor Engine Route Processor(RP)のスイッチオーバーが発生してから、復旧(0)または停止/再起動(1)するかどうかを指定します。 |
SWITCHOVER_SP_ACTION |
0 |
整数(0~1) |
Supervisor Engine Switch Processor(SP)のスイッチオーバーが発生してから、復旧(0)または停止/再起動(1)するかどうかを指定します。 |
SYN_COOKIE_INTERVAL |
3 |
整数(1~60) |
新しいSyn-Cookieキーが生成される間隔を指定します(秒)。 |
SYN_COOKIE_THRESHOLD |
5000 |
整数 (0~1048576) |
Syn-Cookieの動作のスレッシュホールドを指定します(中断されているセッション数)。 |
TCP_MSS_OPTION |
1460 |
整数(1~65535) |
レイヤ7の処理に対してCSMが送信できる最大セグメント サイズ(MSS)値を指定します。 |
TCP_WND_SIZE_OPTION |
8192 |
整数(1~65535) |
レイヤ7の処理に対してCSMが送信できるウィンドウ サイズ値を指定します。 |
VSERVER_ICMP_ALWAYS_RESPOND |
false |
文字列 (1~5文字) |
「true」の場合、仮想サーバの状態に関わらず ICMP プローブに応答します。 |
XML_CONFIG_AUTH_TYPE |
Basic |
文字列 (5~6文字) |
Xml-Config に対して HTTP 認証タイプ(Basic または Digest)を指定します。 |
コンフィギュレーションの環境変数を表示する例を示します。
Router# show mod csm 5 variable
----------------------------------------------------------------
ARP_LEARNED_INTERVAL 14400
ARP_GRATUITOUS_INTERVAL 15
ARP_REPLY_FOR_NO_INSERVICE_VIP 0
AGGREGATE_BACKUP_SF_STATE_TO_VS 0
DEST_UNREACHABLE_MASK 0xffff
GSLB_LICENSE_KEY (no valid license)
HTTP_CASE_SENSITIVE_MATCHING 1
MAX_PARSE_LEN_MULTIPLIER 1
NAT_CLIENT_HASH_SOURCE_PORT 0
ROUTE_UNKNOWN_FLOW_PKTS 0
NO_RESET_UNIDIRECTIONAL_FLOWS 0
SYN_COOKIE_THRESHOLD 5000
VSERVER_ICMP_ALWAYS_RESPOND false
XML_CONFIG_AUTH_TYPE Basic
コンフィギュレーションの現在の環境変数セットのすべての情報を表示するには、次のように show module csm slot variable [ detail ]コマンドを使用します。
Cat6k-2# show mod csm 5 variable detail
Name:ARP_INTERVAL Rights:RW
Valid values:Integer (15 to 31536000)
Time (in seconds) between ARPs for configured hosts
Name:ARP_LEARNED_INTERVAL Rights:RW
Valid values:Integer (60 to 31536000)
Time (in seconds) between ARPs for learned hosts
Name:ARP_GRATUITOUS_INTERVAL Rights:RW
Valid values:Integer (10 to 31536000)
Time (in seconds) between gratuitous ARPs
Valid values:Integer (1 to 60)
Seconds between ARP retries
Name:ARP_RETRIES Rights:RW
Valid values:Integer (2 to 15)
Count of ARP attempts before flagging a host as down
Name:ARP_LEARN_MODE Rights:RW
Valid values:Integer (0 to 1)
Indicates whether CSM learns MAC address on responses only (0) or all traffic (1)
Name:ARP_REPLY_FOR_NO_INSERVICE_VIP Rights:RW
Valid values:Integer (0 to 1)
Whether the CSM would reply to ARP for out-of-service vserver
Name:ADVERTISE_RHI_FREQ Rights:RW
Valid values:Integer (1 to 65535)
The frequency in second(s) the CSM will check for RHI updates
Name:AGGREGATE_BACKUP_SF_STATE_TO_VS Rights:RW
Valid values:Integer (0 to 1)
Whether to include the operational state of a backup serverfarm into the state of a virtual server
Name:DEST_UNREACHABLE_MASK Rights:RW
Valid values:Integer (0 to 65535)
Bitmask defining which ICMP destination unreachable codes are to be forwarded
Name:FT_FLOW_REFRESH_INT Rights:RW
Valid values:Integer (1 to 65535)
FT slowpath flow refresh interval in seconds
Name:GSLB_LICENSE_KEY Rights:RW
Default:(no valid license)
Valid values:String (1 to 63 chars)
License key string to enable GSLB feature
Name:HTTP_CASE_SENSITIVE_MATCHING Rights:RW
Valid values:Integer (0 to 1)
Whether the URL (Cookie, Header) matching and sticky to be case sensitive
Name:MAX_PARSE_LEN_MULTIPLIER Rights:RW
Valid values:Integer (1 to 16)
Multiply the configured max-parse-len by this amount
Name:NAT_CLIENT_HASH_SOURCE_PORT Rights:RW
Valid values:Integer (0 to 1)
Whether to use the source port to pick client NAT IP address
Name:ROUTE_UNKNOWN_FLOW_PKTS Rights:RW
Valid values:Integer (0 to 1)
Whether to route non-SYN packets that do not matched any existing flows
Name:NO_RESET_UNIDIRECTIONAL_FLOWS Rights:RW
Valid values:Integer (0 to 1)
If set, unidirectional flows will not be reset when timed out
Name:SYN_COOKIE_INTERVAL Rights:RW
Valid values:Integer (1 to 60)
The interval, in seconds, at which a new syn-cookie key is generated
Name:SYN_COOKIE_THRESHOLD Rights:RW
Valid values:Integer (0 to 1048576)
The threshold (in number of pending sessions) at which syn-cookie is engaged
Name:TCP_MSS_OPTION Rights:RW
Valid values:Integer (1 to 65535)
Maximum Segment Size (MSS) value sent by CSM for L7 processing
Name:TCP_WND_SIZE_OPTION Rights:RW
Valid values:Integer (1 to 65535)
Window Size value sent by CSM for L7 processing
Name:VSERVER_ICMP_ALWAYS_RESPOND Rights:RW
Valid values:String (1 to 5 chars)
If "true" respond to ICMP probes regardless of vserver state
Name:XML_CONFIG_AUTH_TYPE Rights:RW
Valid values:String (5 to 6 chars)
HTTP authentication type for xml-config:Basic or Digest
永続接続の設定
CSM では、HTTP ヘッダー内の URL、Cookie、またはその他のフィールドに基づいて HTTP 接続をスイッチングできます。CSM の永続接続サポートにより、永続接続での後続HTTP要求はそれぞれ別々にスイッチング可能です。新規に HTTP 要求が届いた場合、その要求は前回要求したときと同じサーバにスイッチングしたり、別のサーバにスイッチングしたり、またはクライアントにリセットしてその要求が完了しないように設定することができます。
ソフトウェア リリース 2.1(1) では、CSM は HTTP 1.1 の永続接続をサポートしています。この機能によって、ブラウザは 1 回の永続接続で複数のHTTP要求を送信できます。永続接続が確立してから、サーバは同一クライアントからさらに要求が届く可能性を想定して、設定可能なインターバルの間、接続をオープンな状態にしておきます。永続接続によって、要求するたびに新規に TCP 接続が確立されることに伴うオーバーヘッドが排除されます。
HTTP 1.1 の永続機能はデフォルトでは、レイヤ7ポリシーで設定されたすべての仮想サーバでイネーブルです。永続接続をディセーブルにする場合は、 no persistent rebalance コマンドを入力します。永続接続をイネーブルにするには、 persistent rebalance コマンドを入力します。
次に、永続接続を設定する例を示します。
Router# configure terminal
Enter configuration commands, one per line. End with
Router(config)# mod csm 2
!!! configuring serverfarm
Router(config-module-csm)# serverfarm sf3
Router(config-slb-sfarm)# real 10.1.0.105
Router(config-slb-real)# inservice
Router(config-slb-real)# vserver vs3
Router(config-slb-vserver)# virtual 10.1.0.83 tcp 80
Router(config-slb-vserver)# persistent rebalance
Router(config-slb-vserver)# serverfarm sf3
Router(config-slb-vserver)# inservice
Router(config-slb-vserver)# end
HTTP のヘッダー挿入
HTTP のヘッダー挿入とは、CSM がクライアント IP アドレスなどの情報を HTTP ヘッダーに挿入する機能です。この機能は、CSMが送信元 NAT を実行していて、さらにサーバ側のアプリケーションがまだ最初の送信元 IP を要求している場合に特に役立ちます。
CSM は、クライアントからサーバ方向のヘッダーに、クライアントからの送信元IPアドレスを挿入できます。
HTTP ヘッダーに情報を挿入するには、 insert protocol http header name header-value value コマンドを使用します。
• name:HTTPヘッダー内の一般フィールドの文字どおりの名前。名前は 1~63 文字の文字列です。
• value:要求内に挿入するヘッダー値の文字列を文字どおり指定します。
また、ヘッダー値の特殊パラメータ %is および %id を使用できます。%is値はHTTPヘッダーに送信元IPアドレスを挿入し、%id値はHTTPヘッダーに宛先IPアドレスを挿入します。特殊パラメータはそれぞれヘッダー マップごとに 1 回だけ指定できます。
(注) ヘッダー マップには、複数の挿入ヘッダーが含まれることがあります。スペースを含む複数のキーワードからなるヘッダー値を挿入する場合、全体を二重引用符で囲む必要があります。
HTTP のヘッダー挿入を設定する場合、ヘッダー マップおよびポリシーを使用する必要があります。HTTP のヘッダー挿入を機能させるには、デフォルトのポリシーは適用できません。
次に、ヘッダー フィールドと値を指定して、要求を検索する例を示します。
Cat6k-2(config-module-csm)# natpool TESTPOOL 10.10.110.200 10.10.110.210 netmask 255.255.255.0
Cat6k-2(config-module-csm)# map HEADER-INSERT header
Cat6k-2(config-slb-map-header)# insert protocol http header Source-IP header-value %is
Cat6k-2(config-slb-map-header)# insert protocol http header User-Agent header-value "MyBrowser 1.0"
Cat6k-2(config-module-csm)# real SERVER1
Cat6k-2(config-slb-real)# address 10.10.110.10
Cat6k-2(config-slb-real)# inservice
Cat6k-2(config-module-csm)# real SERVER2
Cat6k-2(config-slb-real)# address 10.10.110.20
Cat6k-2(config-slb-real)# inservice
Cat6k-2(config-module-csm)# serverfarm FARM-B
Cat6k-2(config-slb-sfarm)# nat server
Cat6k-2(config-slb-sfarm)# nat client TESTPOOL
Cat6k-2(config-slb-real)# real name SERVER1
Cat6k-2(config-slb-real)# inservice
Cat6k-2(config-slb-real)# real name SERVER2
Cat6k-2(config-slb-real)# inservice
Cat6k-2(config-module-csm)# policy INSERT
Cat6k-2(config-slb-policy)# header-map HEADER-INSERT
Cat6k-2(config-slb-policy)# serverfarm FARM-B
Cat6k-2(config-module-csm)# vserver WEB
Cat6k-2(config-slb-vserver)# virtual 10.10.111.100 tcp www
Cat6k-2(config-slb-vserver)# persistent rebalance
Cat6k-2(config-slb-vserver)# slb-policy INSERT
Cat6k-2(config-slb-vserver)# inservice
GSLB の設定
ここでは、CSM Global Server Load Balancing(GSLB;グローバル サーバ ロードバランシング)の拡張機能セット オプション、およびその使用方法について説明します。拡張機能セット オプションを使用する前に「はじめに」の 「ライセンス」 と表紙の裏に記述されているソフトウェア仕様許諾書の各条項を入念に確認ください。
(注) ソフトウェアをダウンロードまたはインストールすることにより、使用許諾書に同意することになります。この許諾書のすべての条項に同意できない場合は、ソフトウェアをダウンロード、インストール、または使用しないでください。
GSLB拡張機能セット オプションの使用
GSLBをイネーブルにするには、イネーブル モードで次の手順を実行します。
|
|
Router(config)#
mod csm 5
|
コンフィギュレーション モードを開始して、特定のCSM(たとえば、ここで使用されているモジュール5など)のCSMコンフィギュレーション モードを開始します。 |
Router(config-module-csm)#
variable
name
value
|
次のような名前と値を使用して、GSLBをイネーブルにします。 名前= 値= |
Router(config-module-csm)#
exit
Router (config)#
write mem
|
CSMモジュール コンフィギュレーション モードを終了して、設定の変更を保存します。 |
Router#:
hw-module
slot number
reset
|
CSMを再起動して、変更をアクティブにします。 |
表 8-2 では、CSM で使用する GSLB の環境変数の値を示しています。
表 8-2 GSLB環境変数の値
|
|
|
|
GSLB_LICENSE_KEY |
(有効なライセンスはありません) |
文字列(1~63文字) |
GSLB機能をイネーブルにするライセンス キーの文字列 |
GSLB_KALAP_UDP_PORT |
5002 |
整数(1~65535) |
GSLB KAL-AP UDPのポート番号を指定します。 |
GSLB_KALAP_PROBE_FREQ |
45 |
整数(45~65535) |
GSLB KAL-APプローブの頻度を指定します。 |
GSLB_KALAP_PROBE_RETRIES |
3 |
整数(1~65535) |
GSLB KAL-APプローブの最大再試行回数を指定します。 |
GSLB_ICMP_PROBE_FREQ |
45 |
整数(45~65535) |
GSLB ICMPプローブの頻度を指定します。 |
GSLB_ICMP_PROBE_RETRIES |
3 |
整数(1~65535) |
GSLB ICMPプローブの最大再試行回数を指定します。 |
GSLB_HTTP_PROBE_FREQ |
45 |
整数(45~65535) |
GSLB HTTPプローブの頻度を指定します。 |
GSLB_HTTP_PROBE_RETRIES |
3 |
整数(1~65535) |
GSLB HTTPプローブの最大再試行回数を指定します。 |
GSLB_DNS_PROBE_FREQ |
45 |
整数(45~65535) |
GSLB DNSプローブの頻度を指定します。 |
GSLB_DNS_PROBE_RETRIES |
3 |
整数(1~65535) |
GSLB DNSプローブの最大再試行回数を指定します。 |
GSLBの設定
GSLB は、利用可能な負荷に基づき、DNS を通してさまざまなサーバ ファームおよび実サーバにクライアント接続を割り振ることによって、散在している複数のホスト サイト間でロード バランスを実行します。GSLBは、アクセス リスト、マップ、サーバ ファーム、およびロードバランス アルゴリズムを使用して実行されます。表 8-3 では、CSM 上で GSLB を設定するための要件を示しています。
表 8-3 GSLBの動作
|
|
|
|
アクセス リストを使用して、着信 DNS 要求をフィルタリングできます。着信 DNS 要求に設定されているマップ、クライアント グループ、およびサーバ ファームを関連付けるには、ポリシーを使用します。 |
マップを設定して、クライアント要求と照合する必要のあるドメイン名を指定します。正規表現の構文を使用できます。 たとえば、ドメイン名は cnn.com または yahoo.com であり、これにクライアント要求を照合します。ドメイン名が指定されたポリシー マップと一致した場合、プライマリ サーバ ファームに対して、要求に応答できる実サーバがあるかどうかを問い合わせます。 |
サーバ ファームでは、クライアント要求を満たす情報の検索先として、実サーバ グループを指定します。 |
ターゲット実サーバの可用性を判別するために、GSLBプローブを使用できます。実サーバに設定されているプローブ タイプを使用します。 GSLB サーバ ファーム プレディクタは、ラウンドロビン式の最小負荷、順序付きリスト、ハッシュ アドレス ソース、ハッシュ ドメイン、ハッシュ ドメイン アドレス ソースです。 |
図 8-1では、GSLBの基本的な設定を示しています。
図 8-1 GSLB の設定
図 8-1 の設定例にあわせて、この設定作業に関する注意事項を次に示します。
• CSM 1は GSLB および SLB の両方を実行しますが、CSM 2 および CSM 3 が実行するのは SLB だけです。
• CSM 1 には、SLB 用の仮想サーバと GSLB 用の仮想サーバがあります。SLB 用の仮想サーバでは、サーバ ファームの実サーバはローカル サーバの IP アドレスです。
• DNS ポリシーではプライマリ サーバ ファームを使用します。実サーバの 1 つがローカルで、他の 2 つの実サーバは、それぞれ CSM 2 および CSM 3 上で設定された仮想サーバです。
• 両方のリモート ロケーション、ローカル実サーバ、および仮想サーバにプローブを追加する必要があります。
• CSM 1の管理用IPアドレス(CSM 1のVLANアドレスまたはエイリアス IP)に送信された DNS 要求は、サーバ ファーム GSLBFARM で設定された3つの実サーバ IP アドレスのうちの 1 つを応答として受け取ります。
GSLB を設定する手順は、次のとおりです。
|
|
|
ステップ 1 |
Router(config-slb-vserver)#
serverfarm
serverfarm-name
|
仮想サーバに関連付けるサーバ ファームを作成します。 |
ステップ 2 |
Router(config-module-csm)#
vserver
virtserver-name
|
CSM 1上でSLB用の仮想サーバを指定し、仮想サーバ サブモードを開始します。 |
ステップ 3 |
Router(config-slb-vserver)#
virtual
ip-address [ip-mask]
protocol
port-number [service
ftp ]
|
仮想サーバの属性を設定します。 |
ステップ 4 |
Router(config-slb-vserver)#
inservice
|
仮想サーバのロードバランシングをイネーブルにします。 |
ステップ 5 |
Router(config-module-csm)#
vserver
virtserver-name
dns
|
GSLB用の仮想サーバを指定し、仮想サーバ サブモードを開始します。 |
ステップ 6 |
Router(config-slb-vserver)#
dns-policy [
group
group-id ] [
netmask
ip-netmask ]
|
同一クライアントからの接続には同一サーバ ファームが使用されるようにします。 |
ステップ 7 |
Router(config-slb-vserver)#
inservice
|
仮想サーバのGSLBをイネーブルにします。 |
ステップ 8 |
Router(config-module-csm)# serverfarm GSLBFARM dns-vip
|
GSLBFARM サーバ ファーム(実際にはフォワーディング ポリシー)を作成して名前を指定し、サーバ ファーム コンフィギュレーション モードを開始します。 |
ステップ 9 |
Router(config-slb-sfarm)#
predictor hash address source
|
サーバ ファームにロードバランス プレディクタのハッシュ アドレス ソースを設定します。 |
ステップ 10 |
Router(config-module-csm)# real
ip-addres
|
実サーバのエイリアスIPアドレスを指定し、実サーバ コンフィギュレーション サブモードを開始します。 |
ステップ 11 |
Router (config-slb-real)#
inservice
|
仮想サーバのロードバランシングをイネーブルにします。 |
ステップ 12 |
Router(config-module-csm)#
map
dns-map-name
dns
|
DNSマップを設定します。 |
ステップ 13 |
Router(config-dns-map)#
match
protocol
dns
domain name
|
DNSマップにDNS名を追加します。 |
ステップ 14 |
Router(config-module-csm)#
policy
policy name
|
ポリシーを設定します。 |
ステップ 15 |
Router(config-slb-policy)#
dns map
map_name
|
ポリシーにDNSマップ属性を追加します。 |
ステップ 16 |
Router(config-slb-policy)#
serverfarm
primary-serverfarm [
backup
sorry-serverfarm [
sticky ]]
|
サーバ ファームとポリシーを関連付けます。 |
ステップ 17 |
Router(config-module-csm)#
vserver
virtserver-name
|
CSM 2上で仮想サーバを設定し、仮想サーバ サブモードを開始します。 |
ステップ 18 |
Router(config-slb-vserver)#
virtual
ip-address [ip-mask]
protocol
port-number [service
ftp ]
|
仮想サーバの属性を設定します。 |
ステップ 19 |
Router(config-slb-vserver)#
serverfarm
serverfarm-name
|
サーバ ファームと仮想サーバを関連付けます。 |
ステップ 20 |
Router(config-slb-vserver)#
inservice
|
仮想サーバのロードバランシングをイネーブルにします。 |
ステップ 21 |
Router(config-module-csm)#
vserver
virtserver-name
|
CSM 3上で仮想サーバを設定し、仮想サーバ サブモードを開始します。 |
ステップ 22 |
Router(config-slb-vserver)#
virtual
ip-address [ip-mask]
protocol
port-number [service
ftp ]
|
仮想サーバの属性を設定します。 |
ステップ 23 |
Router(config-slb-vserver)#
serverfarm
serverfarm-name
|
サーバ ファームと仮想サーバを関連付けます。 |
ステップ 24 |
Router(config-slb-vserver)#
inservice
|
仮想サーバのロードバランシングをイネーブルにします。 |
次に、GSLBを設定する例を示します。
CSM 1上で:
Router(config-module-csm)# serverfarm WEBFARM
Router(config-slb-sfarm)# predictor round-robin
Router(config-slb-sfarm)# real 3.5.5.5
Router(config-slb-real)# inservice
Router(config-slb-sfarm)# real 3.5.5.6
Router(config-slb-real)# inservice
Router(config-slb-real)# exit
Router(config-slb-sfarm)# exit
Router(config-module-csm)# vserver WEB
Router(config-slb-vserver)# virtual 10.10.10.10 tcp www
Router(config-slb-vserver)# serverfarm WEBFARM
Router(config-slb-vserver)# inservice
Router(config-module-csm)# serverfarm GSLBSERVERFARM dns-vip
Router(config-slb-sfarm)# predictor round-robine
Router(config-slb-sfarm)# real 10.10.10.10
Router(config-slb-real)# inservice
Router(config-slb-real)# exit
Router(config-slb-sfarm)# real 20.20.20.20
Router(config-slb-real)# inservice
Router(config-slb-real)# exit
Router(config-slb-sfarm)# real 30.30.30.30
Router(config-slb-real)# inservice
Router(config-slb-real)# exit
Router(config-module-csm)# map MAP1 dns
Router(config-dns-map)# match protocol dns domain foobar.com
Router(config-dns-map)# exit
Router(config-module-csm)# policy DNSPOLICY dns
Router(config-slb-policy)# dns map MAP1
Router(config-slb-policy)# serverfarm primary GSLBSERVERFARM ttl 20 responses 1
Router(config-slb-policy)# exit
Router(config-module-csm)# vserver DNSVSERVER dns
Router(config-slb-vserver)# dns-policy DNSPOLICY
Router(config-slb-vserver)# inservice
CSM 2上で:
Router(config-module-csm)# serverfarm WEBFARM
Router(config-slb-sfarm)# predictor round-robin
Router(config-slb-sfarm)# real 4.5.5.5
Router(config-slb-real)# inservice
Router(config-slb-sfarm)# real 4.5.5.6
Router(config-slb-real)# inservice
Router(config-slb-real)# exit
Router(config-slb-sfarm)# exit
Router(config-module-csm)# vserver WEB
Router(config-slb-vserver)# virtual 20.20.20.20 tcp www
Router(config-slb-vserver)#s erverfarm WEBFARM
Router(config-slb-vserver)# inservice
CSM 3上で:
Router(config-module-csm)# serverfarm WEBFARM
Router(config-slb-sfarm)# predictor round-robin
Router(config-slb-sfarm)# real 5.5.5.5
Router(config-slb-real)# inservice
Router(config-slb-sfarm)# real 5.5.5.6
Router(config-slb-real)# inservice
Router(config-slb-real)# exit
Router(config-slb-sfarm)# exit
Router(config-module-csm)# vserver WEB
Router(config-slb-vserver)# virtual 30.30.30.30 tcp www
Router(config-slb-vserver)# serverfarm WEBFARM
Router(config-slb-vserver)# inservice
ネットワーク管理の設定
ここでは、ネットワーク上での CSM の管理方法について説明します。
• 「実サーバの SNMP トラップの設定」
• 「XMLインターフェイスの設定」
実サーバの SNMP トラップの設定
SNMP トラップがイネーブルになっていると、実サーバのステートが変わるたびに(たとえば、サーバがサービスを開始または停止するたびに)外部の管理装置に送信されます。トラップには、実サーバ トラップであることを示す Object Identifier(OID; オブジェクト識別子)が含まれます。
(注) 実サーバ トラップのOIDは1.3.6.1.4.1.9.9.161.2です。
トラップには、サーバ ステートが変わった理由を示すメッセージも含まれます。
Catalyst 6500 シリーズ スイッチの SLB 機能に関連付けられたフォールトトレラント トラップをイネーブルまたはディセーブルにするには、 snmp-server enable traps slb ft コマンドを使用します。フォールトトレラント トラップは、SLB のフォールトトレラントの要素を扱います。たとえば、フォールトトレラント トラップがイネーブルで、SLB装置がフォールトトレラント ピアの障害を検出した場合、そのSLB装置はスタンバイからアクティブに変わるときに、SNMPトラップを送信します。
実サーバ用のSNMPトラップを設定する手順は、次のとおりです。
|
|
|
ステップ 1 |
Router (config)#
snmp-server community public
|
通知動作で送信される、パスワードと同様のコミュニティ ストリングを定義します。 public はその一例です。 |
ステップ 2 |
Router (config)#
snmp-server host host-addr
|
トラップの送信先となる、外部ネットワーク管理装置のIPアドレスを定義します。 |
ステップ 3 |
Router (config)#
snmp-server enable traps slb csrp
|
実サーバ用のSNMPトラップをイネーブルにします。 |
XMLインターフェイスの設定
従来のリリースでは、Cisco IOS CLI が CSM を設定する唯一の手段でした。XML により、Document Type Definition(DTD)を使用する CSM を設定できます。XML DTDの例については、 付録 C「CSM XMLのDTD」 を参照してください。
CSMでXMLを使用する場合、注意事項は次のとおりです。
• 同時に使用できるクライアント接続は最大で5つです。
• XMLの設定はIP SLBモードとは無関係ですが、 csm_module slot='x' sense='no' コマンドの場合は例外的に所定の結果をもたらし、XML エラーを生成します。
• パイプラインのHTTP POSTはサポートされません。
• すべてのクライアント通信が30秒でタイムアウトします。
• クライアント証明書が不良だった場合、Cisco IOSのシステム ログにメッセージが送信されます。
• 異なるスロット属性を指定することによって、1 つの CSM を他の CSM コンフィギュレーションのプロキシにすることができます。
この機能をイネーブルにすると、ネットワーク管理装置がCSMに接続し、新しい設定を装置に送信することがあります。ネットワーク管理装置は、標準のHTTPプロトコルを使用して、コンフィギュレーション コマンドをCSMに送信します。HTTP POSTのデータ部分で、XML文書をCSMに送信することによって、新しい設定が適用されます。
HTTP とのやり取りの例を示します。
******** Client **************
POST /xml-config HTTP/1.1
Authorization: Basic VTpQ
<config><csm_module slot="4"><vserver name="FOO"/></csm_module></config>
******** Server **************
******** Client **************
POST /xml-config HTTP/1.1
<config><csm_module slot="4"><vserver name="FOO"/></csm_module></config>
******** Server **************
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm=/xml-config
表 8-4 では、サポート対象の HTTP リターン コードを示しています。
表 8-4 XMLに関するHTTPの戻りコード
|
|
200 |
OK |
400 |
不良要求 |
401 |
未承認(要求した証明書が提出されなかった) |
403 |
禁止(無効な証明書が提出され、syslog も生成された) |
404 |
見つからない (「/xml-config」が指定されていない) |
408 |
要求のタイムアウト(受信待ちで 30 秒以上経過) |
411 |
コンテンツ長の脱落(Content-Length フィールドが脱落またはゼロ) |
500 |
内部サーバ エラー |
501 |
実装されていない(「POST」が指定されていない) |
505 |
サポートされない HTTP バージョン(「1.0」または「1.1」が指定されていない) |
サポートされている HTTP ヘッダーは次のとおりです。
• Content-Length(すべての POST にゼロ以外の値が必要)
• Connection(close 値は要求を永続 [persistent] させないことを指定)
• WWW-Authenticate(要求した証明書がない場合にクライアントに送信)
• Authorization(base64符号化方式による基本証明書を指定するためにクライアントから送信)
XML機能を動作させるには、ネットワーク管理システムがスイッチ インターフェイスのIPアドレスではなく、CSMのIPアドレスに接続する必要があります。
コマンドライン インターフェイスの場合と同様、コンフィギュレーションのマスター コピーを Cisco IOS に保管しなければならないので、XML コンフィギュレーション要求を受信した CSM は、これらの要求をスーパーバイザ エンジンに送信する必要があります。
(注) XMLコンフィギュレーションによって、1つのCSMを同一スイッチ シャーシに取り付けられたすべてのCSMのプロキシとして動作させることができます。たとえば、あるCSM用のコンフィギュレーションが含まれるXMLページを、同じスイッチ シャーシに取り付けられた別のCSMから正しく提供できます。
現在、一般公開されている Document Type Description (DTD) は、作成する XML コンフィギュレーション文書の基盤となっています( 付録 C「CSM XMLのDTD」 を参照)。XML 文書は HTTP POST 要求によって、CSM に直接送信されます。XML を使用するには、Cisco IOS CLI を使用して、事前に CSM 上で最小限のコンフィギュレーションを作成しておく必要があります。 xml-config コマンドについては、『Catalyst 6500 シリーズ コンテント スイッチング モジュール コマンド リファレンス』を参照してください。
応答は要求をミラー化した XML 文書です。問題のある要素にはチャイルド エラー要素でフラグが設定され、エラー コードおよびエラー文字列が示されます。XML文書でルート要素の属性を使用することによって、無視すべきエラーのタイプを指定できます。
特定の CSM インターフェイスが XML コンフィギュレーションに対応できるように、Cisco IOS CLI に追加される予定です。TCP ポートのイネーブル/ディセーブル機能に加え、クライアント アクセス リストのセキュリティ オプションおよび HTTP 認証がサポートされます。
CSM上でXMLを設定する手順は、次のとおりです。
|
|
|
ステップ 1 |
Router(config-module-csm)#
module csm
slot
|
モジュールおよびスロット番号を指定します。 |
ステップ 2 |
Router(config-module-csm)#
xml-config
|
CSM上でXMLをイネーブルにして、XMLコンフィギュレーション モードを開始します。 |
ステップ 3 |
Router(config-slb-xml)#
port
port-number
|
CSM HTTPサーバが待ち受けるTCPポートを指定します。 |
ステップ 4 |
Router(config-slb-xml)#
vlan
id
|
CSM HTTPサーバが指定されたVLANからの接続だけを受け付けるように制限します。 |
ステップ 5 |
Router(config-slb-xml)#
client-group [
1-99 |
name ]
|
CSM XML コンフィギュレーション インターフェイスが受け付けるのは、クライアント グループと一致する IP アドレスからの接続だけであることを指定します。 |
ステップ 6 |
Router(config-slb-xml)#
credentials
user-name password
|
ユーザ名とパスワードの組み合わせを 1 つまたは複数設定します。 credentials コマンドを1つまたは複数設定した場合、CSM HTTPサーバはRFC 2617で規定された基本認証方式を使用して、ユーザ アクセスを認証します。 |
ステップ 7 |
Router#
show module csm 4
xml stats
|
XML統計情報のリストを表示します。
(注) 統計情報のカウンタは32ビットです。
|
CSM上でXMLを設定する例を示します。
Router(config-module-csm)# configure terminal
Router(config-module-csm)# m odule csm 4
Router(config-module-csm)# xml-config
Router(config-slb-xml)# port 23
Router(config-slb-xml)# vlan 200
Router(config-slb-xml)# client-group 60
Router(config-slb-xml)# credentials eric @#$#%%@
Router# show module csm 4 xml stats
許容できないXMLエラーが発生した場合は、HTTP応答に200というコードが含まれます。エラーが発生した元のXML文書の一部が、エラー タイプと説明を示したエラー要素とともに戻されます。
仮想サーバ名が抜け落ちている場合のエラー応答の例を示します。
<error code="0x20">Missing attribute name in element
リターン エラー コードは、コンフィギュレーション要素のエラー許容属性のビットと対応しています。リターン XMLエラー コードは、次のとおりです。
XML_ERR_INTERNAL = 0x0001,
XML_ERR_COMM_FAILURE = 0x0002,
XML_ERR_WELLFORMEDNESS = 0x0004,
XML_ERR_ATTR_UNRECOGNIZED = 0x0008,
XML_ERR_ATTR_INVALID = 0x0010,
XML_ERR_ATTR_MISSING = 0x0020,
XML_ERR_ELEM_UNRECOGNIZED = 0x0040,
XML_ERR_ELEM_INVALID = 0x0080,
XML_ERR_ELEM_MISSING = 0x0100,
XML_ERR_ELEM_CONTEXT = 0x0200,
XML_ERR_IOS_PARSER = 0x0400,
XML_ERR_IOS_MODULE_IN_USE = 0x0800,
XML_ERR_IOS_WRONG_MODULE = 0x1000,
XML_ERR_IOS_CONFIG = 0x2000
デフォルトのerror_tolerance値は0x48です。これは、認識されない属性および要素のビットをそれぞれ加えた値と対応しています。
Server Application State Protocol の設定
Server Application State Protocol(SASP)を使用すると、CSM はトラフィックの重み付けに関する推奨事項を Workload Manager(WM)から受け取ることができます。これをWM に登録すると、WM は新しいロード バランシング グループのメンバーを CSM に通知します。
SASP は Cisco IOS 12.1(13)E3 以降のリリースでサポートされます。Cisco IOS ソフトウェア リリース 4.1.2 以降が必要です。
SASP を設定するには、特別な bind_id をサーバ ファーム(SASP グループ)および 使用する WM(SASP Global Workload Manager など)を表す DFP エージェントに関連付ける必要があります。
SASP グループの設定
SASP グループは、CSM 上のサーバ ファームと同等です。グループを設定するには、 serverfarm コンフィギュレーション コマンドを使用します。グループのメンバーはすべてサーバ ファーム下で設定される実サーバになります。このグループを GWM に関連付けるには、GWM と一致する SASP bind_id を割り当てます。SASP グループを設定するには、サーバファーム コンフィギュレーション サブメニューから bindid コマンドを使用します。
Router(config-slb-sfarm)# bindid 7
GWM の設定
GWM は DFP エージェントとして設定されます。GWM を設定するには、CSM コンフィギュレーション コマンドの dfp サブメニューを開始する必要があります。DFP エージェントとして GWM を設定する例を示します。
Router(config-slb-dfp)# agent ip.address port bind_id
(注) CLI を使用すると、bind_id は入力できません。ただし、bind_id は DFP を GWM エージェントとして、設定するときに必要です。CLI は「動作のタイムアウト」または「keepalive」として、bind_id キーワードを記述します。また、CLI を使用すると、2 つの値を追加して入力できます。SASP 環境では問題がない限り、この 2 つの値を入力しないでください。
他にも、GWM は次のように設定できます。
Router(config-slb-dfp)# agent ip.address port bind_id flags
または
Router(config-slb-dfp)# agent ip.address port bind_id flags keep-alive-interval
keepalive 間隔は、秒数で表します。デフォルトは 180 です。複数のフラグで CSM が GWM に登録する方法を制御します。フラグのデフォルト値はゼロです。
(注) フラグを設定するのは主にデバッグを目的としているので、フラグの値は、ゼロにしておくことをお勧めします。また、CSM はメンバーが開始している動作(trust)をサポートしていないので、34、35、38 および 39 の値は、サポートされません。
フラグの意味については、 表 8-5 を参照してください。
.
表 8-5 SASP のフラグ
|
|
0 |
CSM のデフォルト登録フラグ(37)を使用します。 |
32 |
GWM のデフォルトのロード バランシング登録を指定します。ロード バランサは重み付けを新規に取得するために「Get Weights」メッセージを送信して、GWM から重み付けを引き出します。 GWM は重み付けをこのロード バランサに送信する場合、グループのメンバー全員の重み付けを含める必要があります(重み付けが変更されないメンバーも含みます)。 |
33 |
ロード バランサが「Send Weights」メッセージを使用して、重み付けを受信することを指定します(GWM は重み付けをロード バランサに入れます)。 |
34 |
GWM がメンバーが開始した登録、登録解除を信頼し、送信する重み付けの登録または登録解除をすぐに更新することを許可します。 |
35 |
33 および 34 と同じ。 |
36 |
GWM には前回以降、重み付けが変更されていないメンバーは含んではいけないことを指定します。 |
37 |
33 および 36 と同じ。 |
38 |
34 および 36 と同じ。 |
39 |
33、34 および 36 と同じ。 |
代替 bind_id の設定
デフォルトでは、1 つの bind_id が SASP bind_id、すなわち 65520 になるように設定されています。ただし、連続的な範囲 bind_id は使用できます。この範囲の先頭の bind_id は、1 ~ 65525 の任意の値です。その範囲の先頭の bind_id を設定する例を示します。
Router(config-module-csm)# variable SASP_FIRST_BIND_ID value
SASP で使用される bind_id の最大数は 8 です。また、この数字は、GWM がサポートの最大数です。bind_id の最大数は、0 ~ 8 の任意の値に設定できます。bind_id の値を設定する例を示します。
Router(config-module-csm)# variable SASP_GWM_BIND_ID_MAX value
2 つの変数を使用して、その変数に設定する内容を次に示します。
variable SASP_FIRST_BIND_ID 12
variable SASP_GWM_BIND_ID_MAX 3
これは bind_id 12、13、および 14 を使用して、3 つの異なる GWM が設定できることを表しています。
(注) これらの環境変数のいずれかを変更したら、CSM を再起動してください。
CSM の固有 の ID の設定
デフォルトでは、CSM には固有の識別文字列「Cisco-CSM」があります。CSM コンフィギュレーション コマンドを使用して、その文字列を設定する例を示します。
Router(config-module-csm)# variable SASP_CSM_UNIQUE_ID text
(注) これらの環境変数のいずれかを変更したら、CSM を再起動してください。
重み付けのスケーリングの設定
CSM 上の実サーバの重み付けは、0 ~ 100 の数です。メンバーの SASP 重み付けは、0 ~ 65536 です。GWM が CSM 範囲内での重み付けを生成しているだけの場合、スケーリングは不要です。GWM が SASP 範囲を完全に使用している場合、この範囲がマップされます。次に、SASP の重み付けをスケールする例を示します。
Router(config-module-csm)# variable SASP_SCALE_WEIGHTS value
SASP_SCALE_WEIGHTS の範囲は、0 ~ 12 です。0 ~ 11 の値は SASP の重み付けを 2 の n 乗値で分割することになります。12 という値は、65536 個の値全体を CSM 0-100 の重み付け範囲にマップします。
次に、SASP GWM の詳細を表示する例を示します。
Router# show module csm 3 dfp detail
DFP Agent 64.100.235.159:3860 Connection state: Connected
Keepalive = 65521 Retry Count = 33 Interval = 180 (Default)
Last message received: 03:33:46 UTC 01/01/70
Last reported Real weights for Protocol any, Port 0
Host 10.9.10.22 Bind ID 65521 Weight 71
Host 10.10.12.10 Bind ID 65521 Weight 70
Host 10.10.12.12 Bind ID 65521 Weight 68
Last reported Real weights for Protocol any, Port 44
Host 10.9.10.9 Bind ID 65521 Weight 69
DFP manager listen port not configured
No weights to report to managers
次に、SASP グループを表示する例を示します。
Router# show module csm 3 serverfarms detail
SVRFARM2, type = SLB, predictor = RoundRobin, nat = SERVER
virtuals inservice: 0, reals = 4, bind_id = 65521, fail action = none
inband health config: <none>
10.10.12.10, weight = 78, OUTOFSERVICE, conns = 0
10.10.12.12, weight = 76, OPERATIONAL, conns = 0
10.9.10.9:44, weight = 77, OPERATIONAL, conns = 0
10.9.10.22, weight = 79, OUTOFSERVICE, conns = 0
次に、SASP 環境変数を表示する例を示します。
Router# show module csm 3 variable
----------------------------------------------------------------
ROUTE_UNKNOWN_FLOW_PKTS 0
SASP_CSM_UNIQUE_ID paula jones
XML_CONFIG_AUTH_TYPE Basic
バックエンドでの暗号化
バックエンドで暗号化すると、セキュアなエンドツーエンド環境を構築することができます。クライアント(7.100.100.1)は VLAN 7 にアクセスするときにポート 6/47 に切り替えるために接続されます(図 8-2)。サーバ(191.162.2.8)は VLAN 190 にアクセスするときにポート 10/2 に切り替えるために接続されます。
SSL プロキシ VLAN 7 の設定は次のとおりです。
• IP address:7.100.100.150
• スタティック ルートおよびゲートウェイ:
–ルート 191.0.0.0
–ゲートウェイ 7.100.100.100
ゲートウェイ IP アドレス(MSFC 上のインターフェイス VLAN 7 の IP アドレス)が設定されているので、未知のネットワークを宛先とするクライアント側のトラフィックは、クライアントに続けてルーティングを行うゲートウェイ IP アドレスに転送されます。
• クライアント側のゲートウェイ:7.100.100.100(MSFC 上で設定された VLAN の IP アドレス)
• クライアントのプロキシ サービスの仮想 IP アドレス:7.100.100.150:81
• サーバの IP アドレス:191.162.2.8
図 8-2 バックエンドでの暗号化
クライアント側の設定
次に、SSL プロキシ サービスを設定する例を示します。
ssl-proxy(config)# ssl-proxy service S1
ssl-proxy(config-ssl-proxy)# virtual ipaddr 10.1.0.21 protocol tcp port 443 secondary
ssl-proxy(config-ssl-proxy)# server ipaddr 10.2.0.100 protocol TCP port 80
ssl-proxy(config-ssl-proxy)# inservice
次に、CSM 仮想サーバを設定する例を示します。
Cat6k-2(config-module-csm)# serverfarm SSLfarm
Cat6k-2(config-slb-sfarm)# real 10.1.0.21 local
Cat6k-2(config-slb-real)# inservice
Cat6k-2(config-module-csm)# vserver VS1
Cat6k-2(config-slb-vserver)# virtual 10.1.0.21 tcp https
Cat6k-2(config-slb-vserver)# serverfarm SSLfarm
Cat6k-2(config-slb-vserver)# inservice
CSM 上では SSL ロード バランシング、また混合モードでは SSL Services Module をそれぞれ実行できます。
CSM は SSL-ID 固定機能を使用して、SSL 接続を同一 SSL Services Module に固定します。CSM は、SSL-ID を調べるためにクライアント側の TCP 接続を終端する必要があります。その後、ロード バランシングの決定が行われると、CSM は SSL Services Module への TCP 接続を開始する必要があります。
トラフィックでは、CSM は仮想サーバが受信したトラフィックを SSL Services Module にすべて渡します。このとき TCP の終端処理は SSL Services Module 上で行われます。SSL 固定機能をイネーブルにすると、CSM と SSL Services Module の接続は、完全に TCP 接続になります。
次に、混合モードで SSL ロード バランシングを設定する例を示します。
Cat6k-2(config-module-csm)# sticky 10 ssl timeout 60
Cat6k-2(config-module-csm)# serverfarm SSLfarm
Cat6k-2(config-slb-sfarm)# real 10.1.0.21 local
Cat6k-2(config-slb-sfarm)# inservice
Cat6k-2(config-slb-sfarm)# real 10.2.0.21
Cat6k-2(config-slb-sfarm)# inservice
Cat6k-2(config-module-csm)# vserver VS1
Cat6k-2(config-slb-vserver)# virtual 10.1.0.21 tcp https
Cat6k-2(config-slb-vserver)# sticky 60 group 10
Cat6k-2(config-slb-vserver)# serverfarm SSLfarm
Cat6k-2(config-slb-vserver)# persistent rebalance
Cat6k-2(config-slb-vserver)# inservice
CSM がクライアント側の TCP 接続の終端処理を必要とするときには、トラフィックが SSL Services Module に流れるように内部で生成された設定を調整する必要があります。サーバ ファーム SSLfarm 内で、同一 IP アドレスまたは各ローカル実サーバのポートを使用して仮想サーバを作成する必要があります。内部では、この仮想サーバは自分自身に流れるように設計されているトラフィックをすべて SSL Services Module に流すように設定できます。
内部で生成される設定を調整しなければならないのは、ローカル実サーバの IP アドレスと CSM 仮想サーバのアドレスが同一にする必要があるからです。CSM がこのローカル実サーバに接続を開始すると、SYN フレームと CSM との間で送信と受信が行われます。CSM が SYN を受信して、宛先 IP アドレスまたはポートが仮想サーバ VS1 と同一になると、より特化した仮想サーバが追加されない限り、CSM は VS1 を照合します。
サーバ側の設定
SSL Services Module が CSM をバックエンド サーバとして使用する場合、標準的な仮想サーバ設定はレイヤ 4 およびレイヤ 7 でのロード バランシング用になっています。
この仮想サーバがSSL Services Module からのトラフィックだけを受信するように制限を加えるには、VLAN ローカル仮想サーバのサブモード コマンドを次のように使用します。
Cat6k-2(config-module-csm)# serverfarm SLBdefaultfarm
Cat6k-2(config-slb-sfarm)# real 10.2.0.20
Cat6k-2(config-slb-sfarm)# inservice
Cat6k-2(config-module-csm)# vserver VS2
Cat6k-2(config-slb-vserver)# virtual 10.2.0.100 tcp www
Cat6k-2(config-slb-vserver)# serverfarm SLBdefaultfarm
Cat6k-2(config-slb-vserver)# vlan local
Cat6k-2(config-slb-vserver)# inservice
次に、実サーバをバックエンド サーバとして設定する例を示します。
Cat6k-2(config-module-csm)# serverfarm SSLpredictorforward
Cat6k-2(config-slb-sfarm)# predictor forward
Cat6k-2(config-module-csm)# vserver VS3
Cat6k-2(config-slb-vserver)# virtual 0.0.0.0 0.0.0.0 tcp www
Cat6k-2(config-slb-vserver)# serverfarm SSLpredictorforward
Cat6k-2(config-slb-vserver)# inservice
バックエンド サーバとしての CSM の設定
仮想サーバおよびサーバ ファームを設定すると、実サーバをバックエンド サーバとして使用できます。「クライアント側の設定」 で説明されている設定を使用して、CSM をバックエンド サーバとして使用できるように SSL ドーター カードを設定します。
次に、レイヤ 7 のロード バランシング用に CSM 仮想サーバを設定する例を示します。
Cat6k-2(config-module-csm)# serverfarm SLBdefaultfarm
Cat6k-2(config-slb-sfarm)# real 10.2.0.20
Cat6k-2(config-slb-real)# inservice
Cat6k-2(config-module-csm)# serverfarm SLBjpgfarm
Cat6k-2(config-slb-sfarm)# real 10.2.0.21
Cat6k-2(config-module-csm)# map JPG url
Cat6k-2(config-slb-map-cookie)# match protocol http url *jpg*
Cat6k-2(config-module-csm)# policy SLBjpg
Cat6k-2(config-slb-policy)# url-map JPG
Cat6k-2(config-slb-policy)#serverfarm SLBjpgfarm
Cat6k-2(config-module-csm)# vserver VS2
Cat6k-2(config-slb-vserver)# virtual 10.2.0.100 tcp www
Cat6k-2(config-slb-vserver)# serverfarm SLBdefaultfarm
Cat6k-2(config-slb-vserver)# slb-policy SLBjpg
Cat6k-2(config-slb-vserver)# inservice
次に、レイヤ 4 のロード バランシング用に CSM 仮想サーバを設定する例を示します。
Cat6k-2(config-module-csm)# serverfarm SLBdefaultfarm
Cat6k-2(config-slb-sfarm)# real 10.2.0.20
Cat6k-2(config-slb-real)# inservice
Cat6k-2(config-module-csm)# vserver VS2
Cat6k-2(config-slb-vserver)# virtual 10.2.0.100 tcp www
Cat6k-2(config-slb-vserver)# serverfarm SLBdefaultfarm
Cat6k-2(config-slb-vserver)# vlan local
Cat6k-2(config-slb-vserver)# inservice
バックエンド サーバとしての実サーバの設定
実サーバをバックエンド サーバとして使用するサーバ側のトラフィック フロー設定は、クライアント側の設定とよく似ています。「クライアント側の設定」で説明されている設定を使用して、実サーバをバックエンド サーバとして使用できるように SSL Services Module を設定します。
SSL Services Module のプロキシ サービス設定の場合は、新規に設定する必要はありません。次に、ユーザには意識させずに、内部的に設定を行う例を示します。
ssl-proxy(config)# ssl-proxy service S1
ssl-proxy(config-ssl-proxy)# virtual ipaddr 10.1.0.21 protocol tcp port 443 secondary
ssl-proxy(config-ssl-proxy)# server ipaddr 10.2.0.20 protocol TCP port 80
ssl-proxy(config-ssl-proxy)# inservice
次に、CSM 仮想サーバを設定する例を示します。
Cat6k-2(config-module-csm)# serverfarm SSLreals
Cat6k-2(config-slb-sfarm)# real 10.2.0.20
Cat6k-2(config-slb-sfarm)# inservice
Cat6k-2(config-module-csm)# serverfarm SSLpredictorforward
Cat6k-2(config-slb-sfarm)# predictor forward
Cat6k-2(config-module-csm)# vserver VS3
Cat6k-2(config-slb-vserver)# virtual 0.0.0.0 0.0.0.0 tcp www
Cat6k-2(config-slb-vserver)# serverfarm SSLpredictorforward
Cat6k-2(config-slb-vserver)# inservice