セッションの持続性(スティッキ性)の設定
セッションの固定(スティッキ性)は、同一のクライアントから同一のサーバへ常時複数の(同時または連続した)接続を送信する機能です。この機能は、特定のロードバランシング環境で、通常、必要です。
アプリケーションのトランザクションを完了する(ブラウザでWebサイトにアクセスし、購入するさまざまな品目を選択してからチェックアウトするなど)には、通常、複数(ときには何百、何千)の同時または連続接続が必要です。こういったトランザクションの多くは、一時的に重要な情報を生成して、それを使用します。この情報はトランザクションを処理する特定のサーバ上で保存したり修正したりします。このトランザクションの完了までに数分から数時間かかる場合があり、クライアントはその間同じサーバに何度も送信する必要があります。
バックエンド共有データベースによる多層設計でも問題の一部は解決できますが、ローカル サーバ キャッシュを利用することで、アプリケーションのパフォーマンスをさらに改善できます。ローカル サーバのキャッシュを使用するとデータベースに接続する必要がなくなり、新しいサーバが選択されるたびにトランザクション固有の情報が得られます。
持続性に関する問題の中でも最も難しいのは、複数の接続にわたって個々のクライアントをどのように特定するかということです。ロードバランシング デバイスはクライアントの識別に使用できるあらゆる情報を保存し、現在トランザクションを処理しているサーバにその情報を関連付ける必要があります。
(注) CSM-Sは、256,000のエントリからなるスティッキ データベースを維持できます。
CSM-Sは個々のクライアントを識別して、次の方法で固定処理を実行します。
• 送信元IPアドレスの固定
CSM-Sに送信元IPアドレス全体(32ビットのネットマスクを含めて)を学習させるか、またはその一部を学習させるかを設定できます。
• SSL識別情報の固定
クライアントおよびサーバがSecure Socket Layer(SSL)を介して通信している場合、複数の接続にわたって一意のSSL識別番号が維持されます。SSLバージョン3.0またはTransport Layer Security(TLS)1.0では、クリア テキストでこの識別番号を伝送する必要があります。CSM-Sは、この値を使用して特定のトランザクションを識別します。ただし、このSSL IDを再度ネゴシエートできるため、常に正しいサーバへの固定(スティッキ性)が維持できるわけではありません。SSL IDベースの固定方式を利用すると、常にSSL IDを再利用させることによって、SSL終端装置のパフォーマンスが向上します。
(注) CSM-SをCatalyst 6500 SSLモジュールと組み合わせて使用した場合、各Catalyst 6500 SSLモジュールのMACアドレスが特定のオフセットでSSL ID内に挿入されるため、SSL IDの再ネゴシエート後もSSL IDを固定できます。この固定方法は、仮想サーバのコンフィギュレーション サブモードでssl-stickyコマンドを使用して設定できます。
スティッキ接続の設定情報については、『Catalyst 6500 Series Switch SSL Services Module Configuration Note』のChapter 5「Configuring Different Modes of Operation」を参照してください。
ssl-stickyコマンドについては、『Catalyst 6500 Series Switch Content Switching Module Command Reference』を参照してください。
• ダイナミックCookieラーニング
特定のCookie名を探して、クライアント要求のHTTPヘッダーまたはサーバの「Set-Cookie」メッセージから自動的にその値を学習するようにCSM-Sを設定できます。
CSM-Sはデフォルトで、Cookie値全体を学習します。この機能はCSM-Sソフトウェア リリース4.1.(1)では、オプションのオフセットおよび長さを取り入れて拡張され、Cookie値の一部分だけを学習するようにCSM-Sに対して指示できるようになりました。「Cookie固定のオフセットおよび長さ」を参照してください。
ダイナミックCookieラーニングは、同一のCookie内にセッションIDまたはユーザIDを複数保存するアプリケーションを扱う場合に役立ちます。スティッキ性に関連があるのは、Cookie値の特定のバイトだけです。
CSM-Sソフトウェア リリース4.1(1)には、ダイナミックCookieスティッキ機能も追加されています。これは、URLの一部としてのCookie情報を検索する(さらに学習して固定する)機能です。(URLラーニングを参照)。URLの学習は、HTTP URLにCookie情報を組み込むアプリケーションで有用です。場合によっては、この機能を使用してCookieを拒否するクライアントに対処できます。
• Cookie挿入
CSM-Sはサーバに代わってCookieを挿入するので、サーバがCookieを設定しない場合でもCookie固定を実行できます。Cookieには、CSM-Sが特定の実サーバ固定を確実に実行するための情報が含まれています。
固定(sticky)グループの設定
固定(sticky)グループを設定するには、固定方法(送信元IP、SSL ID、Cookie)とそのグループのパラメータを設定し、さらにポリシーと関連付ける必要があります。固定(sticky)タイムアウトは、スティッキ情報がスティッキ テーブルで維持される期間を指定します。デフォルトの固定タイムアウト値は1440分(24時間)です。特定のエントリの固定(sticky)タイマーは、そのエントリに一致する新規接続が開かれるたびにリセットされます。
特定のエントリの固定(sticky)タイマーは、最後のセッションが終了した時点からリセットされます。タイムアウト ポリシーは、IP_Stickyのみを使用するセッションに適用されます。他の固定形式(cookieおよびurl-hashなど)を使用するセッションは、この動作の影響を受けません。
固定(sticky)環境変数を設定するには、次のコマンドを使用します。
Router(config-module-csm)# variable NO_TIMEOUT_IP_STICKY_ENTRIES 1
(注) 複数のポリシーまたは仮想サーバは、潜在的に同じ固定グループに設定できます。その場合、それらのポリシーまたは仮想サーバへのすべての接続に、その固定処理が適用されます。ポリシー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-Sはクライアントからサーバへの応答にCookieを挿入します。CSM-Sは次にサーバからクライアントへのトラフィック フローに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-Sはオフセットの後ろの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-SはSet-CookieフィールドまたはURL埋め込みCookieのセッション情報をキャプチャできます。CSM-Sは、サーバ応答のSet-Cookie HTTPヘッダーに埋め込まれた特定のCookie値に基づいて、固定テーブルのエントリを作成します。
URLラーニングを設定すると、CSM-Sは次の3通りの方法でCookie値を学習できます。
• サーバからクライアント方向のCookieメッセージ
• クライアント要求内のCookie
• URLに埋め込まれたCookie値
最初の2つの方法は標準のダイナミックCookieラーニング機能ですでにサポートされています。3つめの方法はURLラーニング機能として追加されました。
多くの場合、そのあとの一連のHTTP要求内において、クライアントは同じCookie値を戻します。CSM-Sは、それに一致する値に基づいて同じサーバにクライアントを固定します。ただし、クライアントによってはブラウザでCookieをディセーブルにしているため、このタイプのCookie固定接続ができない場合もあります。URL Cookieラーニングの新機能で、CSM-SはURLストリングに埋め込まれたCookie名および値を抽出できます。この機能が実行されるのは、サーバがWebページのURLリンクにCookieを埋め込んでいる場合だけです。
クライアント要求にCookieが含まれていない場合、CSM-Sは、CSM-Sに設定されたセッションIDストリング(?session-id=)を探します。このストリングに対応する値が、CSM-Sがキャッシュ内で探しているセッション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の概要
RHIは、CSM-SにVirtual IP(VIP;仮想IP)アドレスの可用性をネットワーク全体にアドバタイズさせます。また、ネットワーク全体にわたって同一のVIPアドレスおよびサービスを持つ複数のCSM-S装置を配置できます。あるCSM-Sは、ほかの装置でサーバ ロードバランス サービスを利用できなくなった場合に、ほかの装置のサービスを変更できます。このCSM-Sは、ほかのサーバ ロードバランシング デバイスよりクライアント システムに論理上近いので、サービスの提供もできます。
(注) CSM-SはVIPアドレスをホスト ルートとしてアドバタイズしますが、ほとんどのルータはホスト ルート情報をインターネットに伝播しないので、RHIの用途はイントラネットに限定されます。
RHIをイネーブルにするには、次のようにCSM-Sを設定します。
• 実サーバをプローブし、使用可能な仮想サーバおよびVIPアドレスを識別します。
• 変更が発生するたびに、VIPアドレスの可用性情報をMultilayer Switch Feature Card(MSFC)に正確にアドバタイズします。
(注) 起動時にRHIがイネーブルの場合、各VIPアドレスが使用可能になるので、CSM-SはMSFCにメッセージを送信します。
MSFCはRHIが提供するVIPアドレスの可用性情報を定期的に伝播します。
(注) セキュリティ上の理由から、ほとんどのルータはホスト ルート情報をインターネットに伝播しないので、通常、RHIの用途はイントラネットに限定されます。
RHIを使用しないVIPアドレスへのルーティング
RHIを使用しない場合、トラフィックはVIPアドレスが属すクライアントVLANへのルートを経由して、VIPアドレスに送信されます。CSM-Sの起動時に、MSFCはルーティング テーブルにクライアントVLANへのルートを作成し、このルート情報をほかのルータと共有します。VIPに到達するために、クライアント システムはルータを使用して、各VIPアドレスが属すネットワーク サブネット アドレスに要求を送信します。
サブネットまたはセグメントに到達可能であっても、その場所にあるCSM-Sの仮想サーバが動作していない場合、要求は失敗します。ほかのCSM-S装置はさまざまな場所に配置することができます。ただし、ルータは単に論理的な距離に基づいてサブネットに要求を送信します。
RHIを使用しないと、VIPアドレスを使用できるかどうかが検証されずに、トラフィックがVIPアドレスに送信されます。この場合は、VIPに接続された実サーバがアクティブではないこともあります。
(注) デフォルトでは、CSM-Sは設定されたVIPアドレスをアドバタイズしません。
RHIを使用するVIPアドレスへのルーティング
RHIを使用すると、VIPアドレスが使用可能になって、使用不可能なVIPアドレスのアドバタイズが取り消された場合に、CSM-SはMSFCにアドバタイズを送信します。ルータはルーティング テーブルを参照して、要求をクライアントからVIPアドレスに送信するために必要なパス情報を検索します。RHI機能が有効な場合、一致した中で最も固有性の高いものがVIPアドレス情報としてアドバタイズされます。クライアントに対する要求は、アクティブなVIPサービスを使用して、CSM-Sに到達するパスを経由して送信されます。
VIPアドレスのインスタンスが複数存在する場合、クライアント ルータはVIPアドレスのインスタンスごとに必要な情報(可用性およびホップ数)を受信して、そのVIPアドレスに対する最適なルートを判別できます。ルータはCSM-Sが論理上、クライアント システムに近くなるようにパスを選択します。
(注) CSM-Sはコンテンツを処理するすべての実サーバをプローブで精査することによって、指定されたVIPアドレスに到達できるかどうかを判別します。したがって、RHIを使用する場合はプローブも設定する必要があります。VIPアドレスに到達できるかどうかを判別したあと、CSM-Sはこの可用性情報をMSFCと共有します。次に、MSFCはこのVIP可用性情報をイントラネットのほかの装置に伝播します。
CSM-SがVIPの可用性を判別する仕組み
VIPが使用可能かどうかをCSM-Sが判断できるようにするには、プローブ(HTTP、ICMP、Telnet、TCP、FTP、SMTP、またはDNS)を設定し、それをサーバ ファームに関連付ける必要があります。プローブが設定されている場合、CSM-Sは次の確認を行います。
• プローブ用に設定されたすべてのサーバ ファーム上のすべての実サーバをプローブで調べます。
• 到達可能な(到達可能な実サーバを1台以上含む)サーバ ファームを識別します。
• 到達可能な(到達可能なサーバ ファームを1つ以上含む)仮想サーバを識別します。
• 到達可能な(到達可能な仮想サーバを1台以上含む)VIPを識別します。
VIPの可用性情報の伝播
RHIを使用する場合、CSM-Sは使用可能なVIPアドレスを含むアドバタイズ メッセージをMSFCに送信します。MSFCは、CSM-Sから受信するVIPアドレスごとに、ルーティング テーブルにエントリを追加します。MSFCで動作中のルーティング プロトコルは、ほかのルータにルーティング テーブル アップデートを送信します。VIPアドレスが使用不可能になると、そのルートはアドバタイズされなくなり、エントリはタイムアウトし、ルーティング プロトコルは変更を伝播します。
(注) RHIをCSM-Sで動作させるには、CSM-Sが搭載されているシャーシ内のMSFCでCisco IOS Release 12.1.7(E)以降を稼働させ、そのMSFCをクライアント側ルータとして設定する必要があります。
仮想サーバ用RHIの設定
仮想サーバ用のRHIを設定する手順は、次のとおりです。
ステップ 1 VLANが設定されていることを確認します。 第4章「VLANの設定」 を参照してください。
ステップ 2 プローブをサーバ ファームに関連付けます。「ヘルス モニタリング用プローブの設定」を参照してください。
ステップ 3 実サーバをプローブで調べるようにCSM-Sを設定します。「ヘルス モニタリング用プローブの設定」を参照してください。
ステップ 4 advertise active Server Load Balancing(SLB;サーバ ロード バランシング)仮想サーバ コマンドを入力して、仮想サーバごとに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 コマンドを使用して、コンフィギュレーションの環境変数をイネーブルにできます。 表10-1 でCSM-S環境変数の値について説明します。
表10-1 CSM-S環境変数
|
|
|
|
ARP_INTERVAL |
300 |
整数(15~31536000) |
設定したホストのAddress Resolution Protocol(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-Sが応答のみ(0)のMACアドレスを学習するか、すべてのトラフィック(1)のMACアドレスを学習するかを指定します。 |
ARP_REPLY_FOR_NO_INSERVICE_VIP |
D |
0 |
整数(0~1) |
ADVERTISE_RHI_FREQ |
10 |
整数(1~65535) |
CSM-Sが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-Sによって挿入されるHTTP Cookieの期限切れの時刻および日付を設定します。 |
DEST_UNREACHABLE_MASK |
65535 |
整数(0~65535) |
Internet Control Message Protocol (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) |
送信元ポートを使用してクライアントのNetwork Address Translation (NAT;ネットワーク アドレス変換)IPアドレスを取得するかどうかを指定します。 |
ROUTE_UNKNOWN_FLOW_PKTS |
0 |
整数(0~1) |
既存のフローと一致しないnon-SYNパケットをルーティングするかどうかを指定します。 |
NO_RESET_UNIDIRECTIONAL_FLOWS |
0 |
整数(0~1) |
設定されている場合、タイムアウト時に単一方向フローをリセットしないように指定します。 |
SWITCHOVER_RP_ACTION |
0 |
整数(0~1) |
スーパバイザ エンジンRoute Processor(RP)のスイッチオーバーが発生したあとで、復旧(0)または停止/再起動(1)するかどうかを指定します。 |
SWITCHOVER_SP_ACTION |
0 |
整数(0~1) |
スーパバイザ エンジン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-Sが送信できる最大セグメント サイズ (MSS)値を指定します。 |
TCP_WND_SIZE_OPTION |
8192 |
整数(1~65535) |
レイヤ7の処理に対してCSM-Sが送信できるウィンドウ サイズ値を指定します。 |
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-S 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-S 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-S 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-S for L7 processing
Name:TCP_WND_SIZE_OPTION Rights:RW
Valid values:Integer (1 to 65535)
Window Size value sent by CSM-S 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
連続(persistent)接続の設定
CSM-Sでは、HTTPヘッダー内のURL、Cookie、またはその他のフィールドに基づいてHTTP接続をスイッチングできます。CSM-Sの連続(persistent)接続サポートにより、連続接続での後続HTTP要求はそれぞれ別々にスイッチング可能です。新しいHTTP要求が届いた場合、その要求は、前の要求と同じサーバにスイッチングしたり、別のサーバにスイッチングしたり、またはクライアントにリセットしてその要求が完了しないように設定することができます。
ソフトウェアRelease 2.1(1)の時点で、CSM-SはHTTP 1.1の連続機能(persistence)をサポートしています。この機能によって、ブラウザは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-SにクライアントIPアドレスのHTTPヘッダーへの挿入のような情報を挿入させる機能です。この機能は、CSM-Sが送信元NATを実行していて、さらにサーバ側のアプリケーションがまだ最初の送信元IPを要求している場合に特に有効です。
CSM-Sは、クライアントからサーバ方向のヘッダーに、クライアントからの送信元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-S(たとえば、ここで使用されているモジュール5など)のCSM-Sコンフィギュレーション モードを開始します。 |
Router(config-module-csm)#
variable
name
value
|
次のように名前と値を指定して、GSLBをイネーブルにします。 Name = Value = |
Router(config-module-csm)#
exit
Router (config)#
write mem
|
CSM-Sモジュール コンフィギュレーション モードを終了して、設定の変更を保存します。 |
Router#:
hw-module
slot number
reset
|
CSM-Sを再起動して、変更をアクティブにします。 |
表10-2 に、CSM-Sで使用するGSLBの環境変数の値を示します。
表10-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は、利用可能な負荷に基づき、Domain Name Server(DNS;ドメイン ネーム サーバ)を通してさまざまなサーバ ファームおよび実サーバにクライアント接続を振り分けることによって、散在している複数のホスト サイト間で負荷を分散させます。GSLBは、アクセス リスト、マップ、サーバ ファーム、およびロードバランス アルゴリズムを使用して実行されます。表10-3に、CSM-S上でGSLBを設定するための要件をまとめます。
表10-3 GSLBの動作
|
|
|
|
着信DNS要求のフィルタリングには、アクセス リストを使用できます。着信DNS要求に設定されているマップ、クライアント グループ、およびサーバ ファームを関連付けるには、ポリシーを使用します。 |
マップを設定して、クライアント要求と一致しなければならないドメイン名を指定します。正規表現の構文を使用できます。 たとえば、ドメイン名はcnn.comまたはyahoo.comであり、これにクライアント要求を突き合せます。ドメイン名が指定されたポリシー マップと一致した場合、プライマリ サーバ ファームに対して、要求に応じる実サーバがあるかどうかを問い合わせます。 |
サーバ ファームでは、クライアント要求を満たす情報の検索先として、実サーバ グループを指定します。 |
ターゲット実サーバのアベイラビリティを判別するために、GSLBプローブを使用できます。実サーバに設定されているプローブ タイプを使用します。 GSLBサーバ ファーム プレディクタは、ラウンドロビン式の最小負荷、順序付きリスト、ハッシュ アドレス ソース、ハッシュ ドメイン、およびハッシュ ドメイン アドレス ソースです。 |
図10-1に、GSLBの基本的な設定を示します。
図10-1 GSLBの設定
図10-1の場合、設定作業と例に関する注意事項は次のとおりです。
• CSM-S 1はGSLBおよびSLBの両方を実行しますが、CSM-S 2およびCSM-S 3が実行するのはSLBだけです。
• CSM-S 1には、SLB用の仮想サーバとGSLB用の仮想サーバがあります。SLB用の仮想サーバでは、サーバ ファームの実サーバはローカル サーバのIPアドレスです。
• DNSポリシーではプライマリ サーバ ファームを使用します。実サーバの1つがローカルで、ほかの2つの実サーバは、それぞれCSM-S 2およびCSM-S 3上で設定された仮想サーバです。
• 両方のリモート ロケーション、ローカル実サーバ、および仮想サーバにプローブを追加する必要があります。
• CSM-S 1の管理用IPアドレス(CSM-S 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-S 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-S 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-S 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-S 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-S 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-Sの管理方法について説明します。
• 「実サーバの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-Sを設定する唯一の手段でした。XMLにより、Document Type Definition(DTD)を使用してCSM-Sを設定できます(XML DTDの例については、 付録D「CSM XMLのDTD」 を参照してください)。
CSM-SでXMLを使用する場合、注意事項は次のとおりです。
• 同時に使用できるクライアント接続は最大で5つです。
• XMLの設定はIP SLBモードとは無関係ですが、 csm_module slot='x' sense='no' コマンドの場合は例外的に所定の結果をもたらし、XMLエラーを生成します。
• パイプラインのHTTP POSTはサポートされません。
• すべてのクライアント通信が30秒でタイムアウトします。
• クライアント証明書が不良だった場合、Cisco IOSのシステム ログにメッセージが送信されます。
• 異なるスロット属性を指定することによって、1つのCSM-SをほかのCSM-Sコンフィギュレーションのプロキシにすることができます。
この機能をイネーブルにすると、ネットワーク管理装置がCSM-Sに接続し、新しい設定を装置に送信する場合があります。ネットワーク管理装置は、標準のHTTPプロトコルを使用して、コンフィギュレーション コマンドをCSM-Sに送信します。HTTP POSTのデータ部分で、XML文書をCSM-Sに送信することによって、新しい設定が適用されます。
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
表10-4 に、サポート対象のHTTP戻りコードを示します。
表10-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-SのIPアドレスに接続する必要があります。
コマンドライン インターフェイスの場合と同様、コンフィギュレーションのマスター コピーをCisco IOSソフトウェアに保存しなければならないので、XMLコンフィギュレーション要求を受信したCSM-Sは、これらの要求をスーパーバイザ エンジンに送らなければなりません。
(注) XMLコンフィギュレーションによって、1つのCSMを同一スイッチ シャーシに搭載されたすべてのCSM-Sのプロキシとして動作させることができます。たとえば、あるCSM-S用のコンフィギュレーションが含まれるXMLページを、同じスイッチ シャーシに搭載された別のCSM-Sから正しく提供できます。
現在、一般公開されているDTDは、作成するXMLコンフィギュレーション文書の基盤です( 付録D「CSM XMLのDTD」 を参照)。XML文書はHTTP POST要求によって、CSM-Sに直接送られます。XMLを使用するには、Cisco IOSのCLIを使用して、前もってCSM-S上で最小限のコンフィギュレーションを作成しておく必要があります。 xml-config コマンドについては、『 Catalyst 6500 Series Content Switching Module Command Reference 』を参照してください。
応答は要求をミラー化したXML文書です。問題のある要素にはチャイルド エラー要素でフラグが設定され、エラー コードおよびエラー文字列が示されます。XML文書でルート要素の属性を使用することによって、無視すべきエラーのタイプを指定できます。
イネーブル/ディセーブル機能とともに、TCPポート、クライアント アクセス リストのセキュリティ オプション、およびHTTP認証がサポートされます。
CSM-S上でXMLを設定する手順は、次のとおりです。
|
|
|
ステップ 1 |
Router(config-module-csm)#
module csm
slot
|
モジュールおよびスロット番号を指定します。 |
ステップ 2 |
Router(config-module-csm)#
xml-config
|
CSM-S上でXMLをイネーブルにして、XMLコンフィギュレーション モードを開始します。 |
ステップ 3 |
Router(config-slb-xml)#
port
port-number
|
CSM-S HTTPサーバが待ち受けるTCPポートを指定します。 |
ステップ 4 |
Router(config-slb-xml)#
vlan
id
|
CSM-S HTTPサーバが指定されたVLANからの接続だけを受け付けるように制限します。 |
ステップ 5 |
Router(config-slb-xml)#
client-group [
1-99 |
name ]
|
CSM-S XMLコンフィギュレーション インターフェイスが受け付けるのは、クライアント グループと一致するIPアドレスからの接続だけであることを指定します。 |
ステップ 6 |
Router(config-slb-xml)#
credentials
user-name password
|
ユーザ名とパスワードのコンビネーションを1つまたは複数設定します。 credentials コマンドを1つまたは複数設定した場合、CSM-S HTTPサーバはRFC 2617で規定された基本認証方式を使用して、ユーザ アクセスを認証します。 |
ステップ 7 |
Router#
show module csm 4
xml stats
|
XML統計情報のリストを表示します。
(注) 統計情報のカウンタは32ビットです。
|
CSM-S上でXMLを設定する例を示します。
Router(config-module-csm)# configure terminal
Router(config-module-csm)# module 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です。これは、認識されない属性および要素の無視と対応しています。
SASPの設定
Server Application State Protocol(SASP)によって、CSM-SはWorkload Manager(WM)のレジスタからトラフィック ウェイトに関する推奨を受けることができます。さらに、WMからCSM-Sに新しいロードバランシング グループ メンバーを推奨できます。
SASPは、Cisco IOS Release 12.1(13)E3以降のリリースでサポートされます。また、4.1.2以降のリリースをサポートするCisco IOSリリースが必要です。
SASPを設定するには、サーバ ファーム(SASPグループなど)およびDFPエージェント(SASP Global Workload Manager [GWM]など)に特殊なbind_idを関連付ける必要があります。
SASPグループの設定
SASPグループは、CSM-S上のサーバ グループに相当します。グループを設定するには、 serverfarm コンフィギュレーション コマンドを使用します。グループ メンバーはすべて、サーバ ファームに所属するものとして設定された実サーバです。このグループをGWMに関連付けるには、GWMと一致するSASP bind_idを割り当てます。SASPグループを設定するには、次のように、サーバ ファーム コンフィギュレーション サブメニューから bindid コマンドを使用します。
Router(config-slb-sfarm)# bindid 7
GWMの設定
GWMはDFPエージェントとして設定します。GWMを設定するには、CSM-Sコンフィギュレーション コマンドからdfpサブメニューを開始する必要があります。次に、DFPエージェントとしてGWMを設定する例を示します。
Router(config-slb-dfp)# agent ip.address port bind id
(注) CLIからbind_idを入力することはできません。ただし、このエージェントをGWMとして設定するには、bind_idが必須です。CLIでは、bind_idキーワードを「アクティビティ タイムアウト」または「キープアライブ」として記述します。さらに2つの値を追加できます。ただし、SASP環境のトラブルシューティング時を除き、追加の値は入力しないでください。
代わりに、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
キープアライブ インターバルは秒数です。デフォルトは180です。フラグはCSM-SがGWMにどのように登録するかを制御します。デフォルト値はゼロです。フラグの意味については、 表10-5 を参照してください。
.
表10-5 SASPフラグ
|
|
0 |
CSM-Sのデフォルトの登録フラグ(37)を使用 |
32 |
GWMのデフォルト ロードバランシング登録を指定。ロードバランサは「Get Weights」メッセージを送信して新しいウェイトを取得し、GWMからそのウェイトを引き出します(pull)。 GWMには、このロードバランサにウェイトを送信するときに、(ウェイトが変わらないメンバーを含めて)すべてのグループ メンバーのウェイトを組み込む必要があります。 |
33 |
ロードバランサが「Send Weights」メッセージを介してウェイトを受信することを指定(GWMはロードバランサにウェイトを格納[push]) |
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は1~65525の任意の値にできます。次に、CSM-Sのコンフィギュレーション コマンドを使用してbind_idを設定する例を示します。
Router(config-module-csm)# variable SASP_FIRST_BIND_ID value
SASPで使用できるbind_idの最大数は8です。これは、サポートされるGWMの最大数でもあります。bind_idの最大数は0~8の任意の値に設定できます。次に、使用するSASP bind_idの最大数を設定する例を示します。
Router(config-module-csm)# variable SASP_GWM_BIND_ID_MAX value
(注) これらの環境変数を1つでも変更した場合は、CSM-Sを再起動してください。
CSM-S固有のID設定
CSM-Sにはデフォルトで、「Cisco-CSM」という固有の識別ストリングが与えられます。次に、CSM-Sのコンフィギュレーション コマンドを使用して、このストリングを設定する例を示します。
Router(config-module-csm)# variable SASP_CSM_UNIQUE_ID text
(注) これらの環境変数を1つでも変更した場合は、CSM-Sを再起動してください。
ウェイト スケーリングの設定
CSM-S上の実サーバのウェイトは0~100です。メンバーのSASPウェイトは0~65536です。GWMがCSM-Sの範囲内でウェイトを作成するかぎり、スケーリングは不要です。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-Sの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
バックエンドの暗号化
バックエンドの暗号化によって、安全なエンドツーエンド環境が実現します。図10-2では、クライアント(7.100.100.1)はスイッチ ポート6/47に接続してVLAN 7にアクセスします。サーバ(191.162.2.8)は、スイッチ ポート10/2に接続してVLAN 190にアクセスします。
SSLプロキシであるVLAN 7の設定は、次のとおりです。
• IPアドレス ― 7.100.100.150
• スタティック ルートおよびゲートウェイ:
–ルート191.0.0.0
–ゲートウェイ7.100.100.100
ゲートウェイのIPアドレス(MSFC上のVLAN 7のIPアドレス)は、未知のネットワークを宛先とするクライアント側のトラフィックがこのアドレスに転送され、そこからクライアントにルーティングされるように設定されています。
• クライアント側ゲートウェイ ― 7.100.100.100(MSFC上で設定されたVLAN 7のIPアドレス)
• クライアント プロキシ サービスのVIP ― 7.100.100.150:81
• サーバIPアドレス ― 191.162.2.8
図10-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-S仮想サーバの設定例を示します。
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
SSLロードバランシングは、混在モードのCSM-SおよびSSL Services Module(SSLSM)上で実行できます。
CSM-SはSSL-ID固定(sticky)機能を使用して、同じSSLサービス モジュールにSSL接続を固定します。CSM-Sは、SSL-IDを調べるためにクライアント側のTCP接続を終端させなければなりません。CSM-Sはさらに、ロードバランシングが決定された時点で、SSLSMへのTCP接続を開始しなければなりません。
トラフィック フローには、仮想サーバで受信したあらゆるトラフィックをSSLSM上で終端するTCPでSSLSMに渡すCSM-Sが含まれます。SSL固定(sticky)機能をイネーブルにすると、CSM-SとSSLSM間の接続が完全な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-Sがクライアント側のTCP接続を終端させなければならないときに、SSLSMでトラフィックを転送するコンフィギュレーションを内部生成の形で作成する必要があります。サーバ ファーム SSLfarm のローカルな各実サーバの同じIPアドレスまたはポートを指定して、仮想サーバを作成する必要があります。この仮想サーバは内部で、その仮想サーバ宛てのあらゆるトラフィックをSSLSMに転送するように設定されます。
内部生成の形でコンフィギュレーションを作成しなければならないのは、ローカル実サーバのIPアドレスとCSM-S仮想サーバのアドレスを一致させなければならないからです。CSMがこのローカル実サーバへの接続を開始すると、CSM-SがSYN(同期)フレームを送受信します。CSM-SがSYNを受信し、宛先IPアドレスまたはポートが仮想サーバのVS1と同じだった場合、CSM-Sはさらに具体的な仮想サーバが追加されないかぎり、VS1と一致したとみなします。
サーバ側の設定
SSLSMがバックエンド サーバとしてCSM-Sを使用する場合、レイヤ4およびレイヤ7のロードバランシングには、仮想サーバの標準設定を使用します。
次に、SSLSMからのトラフィックだけを受信するように、この仮想サーバに制限を加える例を示します。
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-Sの設定
仮想サーバおよびサーバ ファームの設定により、実サーバをバックエンド サーバとして使用できます。CSM-Sをバックエンド サーバとして使用するには、「クライアント側の設定」で説明した設定を使用し、さらにSSLドータカードを設定します。
次に、レイヤ7のロードバランシングに対応するCSM-S仮想サーバの設定を示します。
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-S仮想サーバの設定を示します。
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
バックエンド サーバとしての実サーバの設定
実サーバをバックエンド サーバとした、サーバ側コンフィギュレーションのトラフィック フローは、クライアント側のコンフィギュレーションと同様です。実サーバをバックエンド サーバとして使用するには、「クライアント側の設定」で説明した設定を使用し、さらにSSLSMを設定します。
SSLSMプロキシ サービスに関して、新しい設定は不要です。次に、設定を内部で開始し、ユーザにわからないようにする例を示します。
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-S仮想サーバの設定例を示します。
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