時限アフィニティー

シスプレックス・ディストリビューターは、通常、それぞれの接続要求を候補のサーバー・インスタンスの 1 つに到達したときに分散し、これは、接続要求が到達した時点での使用可能な容量と有効なポリシーに基づいて行われます。 特に、それぞれの接続は、着信する接続要求を受信するサーバー・インスタンスに関して、他のすべての既存接続や将来の接続から独立したものと見なされます。

しかし、一部のアプリケーションでは、クライアントと、複数の接続をスパンする必要がある特定のサーバー・インスタンスとの間にアフィニティーが確立されます。 例えば、TN3270E Telnet サーバー・プリンター・セッションは、Telnet クライアントからの接続要求に基づいており、そのプリンター・セッション接続要求は、LU2 セッションにサービスを行っているのと同じ TN3270E Telnet サーバーへ経路指定される必要があります。同様に、ショッピング・カートなどの Web ベースのアプリケーションでは、すべての接続が、特定のクライアントから、ショッピング・カートのコンテンツをセッション状態として格納しているサーバー・インスタンスへ来ていなければならない場合があります。

VIPADISTRIBUTE ステートメント上の TIMEDAFFINITY パラメーターは、シスプレックス・ディストリビューターに対し、特定の分散 DVIPA への接続はクライアントの起点を考慮する必要があることを示します。 IP アドレスによって識別されたのと同じクライアントからの接続は、複数のサーバー・インスタンスが単一のターゲット・スタックによってホストされている場合でも、同じサーバー・インスタンスへ経路指定される必要があります。

VIPADISTRIBUTE ステートメント上で TIMEDAFFINITY パラメーターにゼロ以外の値を指定した場合、特定のクライアントからの最初の接続は、原則としてターゲット・スタックと listen しているアプリケーションへ経路指定されます。 その時点で、シスプレックス・ディストリビューターのルーティング・スタックとターゲット・スタックは、どちらもアフィニティーを確立し、それ以後の同じクライアントからの接続要求を管理します。 このアフィニティーは、接続カウント (初期には 1) を保守します。 同じ分散 DVIPA およびポートについての後続の接続要求は、同じクライアント IP アドレスから着信するので、これらは同じサーバー・インスタンスに経路指定され、 アフィニティー接続カウントは増分されます。 アフィニティー・ベースの接続 (最初の接続も含む) がクローズされると、接続カウントは減分されます。

最後の既存接続がクローズされ、カウントがゼロになった時点で、TIMEDAFFINITY パラメーターによって指定された継続時間 (秒単位) のタイマーが開始されます。 このタイマーは、同じクライアントから同じ分散 DVIPA およびポートへの別の接続要求が受信された時点で停止し、接続要求は指定されたサーバー・インスタンスへ経路指定されます。 タイマーが満了する前に、そのクライアントから、指定された分散 DVIPA およびポートへの接続要求を受信しなかった場合、アフィニティーはシスプレックス・ディストリビューターのルーティング・スタックおよびターゲット・スタックから削除されます。 そのクライアントから次回に出される、その分散 DVIPA およびポートへの接続要求は、通常のシスプレックス・ディストリビューターの相対容量およびポリシーに関する考慮事項に従って経路指定されます。

既存のアフィニティーにマップされる接続要求は、使用される配分方式に関係なく、常にそのターゲットに経路指定されます。これは、加重アクティブ接続配分にも適用されます。確立されたアフィニティーは受け入れられますが、アフィニティーのない接続要求の配分の決定には、アフィニティー関係の結果として確立されたアクティブ接続が含まれます。

TIMEDAFFINITY 値を 0 として指定する VIPADISTRIBUTE ステートメントを含むプロファイルで VARY TCPIP,,OBEYFILE コマンドを使用すると、新しいアフィニティーの確立が妨げられます。 しかし、既存のアフィニティーは、このアフィニティーを使用するすべての接続が終了し、このアフィニティーのタイマーが切れるまで残ります。 新しいステートメントによって既存のアフィニティーのタイマー値が変更されることはありません。その代わりに、アフィニティーが確立されたときにアクティブであった構成済みの TIMEDAFFINITY 値を引き続き使用します。 既存のアフィニティーを削除するには、VIPADISTRIBUTE DELETE ステートメントの後に続けて、TIMEDAFFINITY 値 0 の VIPADISTRIBUTE DEFINE ステートメントを含むプロファイルを指定して、VARY TCPIP,,OBEYFILE コマンドを発行してください。

置かれた環境によっては、 新しいクライアントの TCP 接続要求を満たすのに必要なキー・リソースが使用できない場合は、 特定のターゲット・アプリケーション・サーバー・インスタンスとのクライアントのアフィニティーが、 指定された時間間隔の前に終了する場合があることに注意してください。これには、次のシナリオがあります。

シスプレックス・ディストリビューターのクライアントの概念は、 接続要求上のソース IP アドレスにのみ結びつけられています。この概念は新しいことではなく、ポリシー・エージェントや IPSec など、他の機能にも当てはまります。 しかし、そのために、本当に異なるクライアント・インスタンスからの多数の異なる接続が、すべて同じソース IP アドレスで現れる状況では、問題が起きる場合があります。 例としては、以下の状況があります。

これに似た事例では、シスプレックス・ディストリビューターが、同じソース IP アドレスを使用するさまざまな実クライアントからの接続要求を区別する手段を持たないために、分散が最適状態より大幅に少なくなる場合があります。 すべてのソース IP アドレスが同じである (例えば、ファイアウォール内にプロキシー・インスタンスが 1 つだけ存在する) という最悪の場合、ロード・バランシングは、アフィニティーが存在する限り、まったく存在しなくなります。

基本的に、時限アフィニティーが作成されたのは、以前は不可能であった状況下で接続ワークロードの分散を許容するためです。不可能であった理由は、クライアント/サーバー・アプリケーション・モデルでは、一定の期間、特定のクライアントが特定のサーバー・インスタンスへ進む必要があるからです。 そのようなアプリケーションの場合、現時点ではワークロード・バランシングが行われません。 合理的な数のソース IP アドレスがワークロード・バランシングを許容しないようなネットワーク構成の場合、作業をソース側で分割する技法を実装する (各クライアントを固有のサーバー・アドレスへ進むように構成するか、WebSphere® HTTP サーバー・プラグインのように、プロキシーを複数のサーバー間にワークロードを分散するように構成する) 必要があります。予想されるさまざまなソース IP アドレスの数と接続要求の到着率が、合理的なバランシングを提供してシスプレックス・ワークロードの変更に対する反応を提供するのに十分なほど大きい場合、これは合理的なソリューションを提供する一方、クライアントとサーバーの間のアフィニティーをアプリケーションの必要に応じて尊重します。 それぞれの分散 DVIPA とポートのペアに基づいてアフィニティーを構成する主な理由は、アフィニティー要件がアプリケーション (ポート番号) ごとに異なり、一部のアプリケーションではアフィニティーをまったく必要としないことにあります。 使用しているネットワーク内の特定のアプリケーションにシスプレックス・ディストリビューターでの時限アフィニティーが適切であるかどうかを判別する際には、特定のネットワーク構成、特にさまざまな IP アドレスからの接続の到着率を考慮に入れる必要があります。

アフィニティー情報は、シスプレックス・ディストリビューターのルーティング・スタック、バックアップ・スタック、およびターゲット・スタック上で処理する必要があります。 ターゲット・スタックが z/OS V1R5 よりも前のバージョンの場合は、そのスタックの shareport グループの一部であるサーバー・アプリケーション・インスタンスは正しく機能せず、そのターゲット・スタックに対するアフィニティーは、1 次ルーティング・スタックの障害時にも、バックアップ・ルーティング・スタックに通知されません。バックアップ・ルーティング・スタックが z/OS V1R5 以降でないと、そのスタックが障害を起こしたルーティング・スタックを引き継ぐ場合でも、アフィニティー情報が残存するターゲット・スタックから送られてきません。 したがって、アフィニティーを備えた分散 DVIPA の分散に参加するすべての TCP/IP スタックを、少なくとも z/OS V1R5 にすることを強くお勧めします。

DETAIL 修飾子を指定して Netstat VCRT/-V レポート・オプションを使用すると、次のように、接続ごとのアフィニティー関連情報を表示することができます。

MVS TCP/IP NETSTAT CS V1R8       TCPIP Name: TCPCS           15:10:28  
Dynamic VIPA Connection Routing Table:                                 
Dest:      203.1.10.18..21                 (1)            
  Source:  193.10.1.118..0                                             
  DestXCF: 193.1.1.108                                                 
    CfgTimAff: 0200  TimAffCnt: 0000000003  TimAffLft: 0000            
Dest:      203.1.10.18..21                 (2)           
  Source:  193.10.1.118..1026                                          
  DestXCF: 193.1.1.108                                                 
    PolicyRule:    FTPD1                                               
    PolicyAction:  paPRD-SD-7-INTR-SPECIAL                             
Dest:      203.1.10.18..21                 (2)         
  Source:  193.10.1.118..1027                                          
  DestXCF: 193.1.1.108                                                 
    PolicyRule:    FTPD1                                               
    PolicyAction:  paPRD-SD-7-INTR-SPECIAL                             
Dest:      203.1.10.18..21                 (2)           
  Source:  193.10.1.118..1028                                          
  DestXCF: 193.1.1.108                                                 
    PolicyRule:    FTPD1                                               
    PolicyAction:  paPRD-SD-7-INTR-SPECIAL                             
Dest:      203.1.10.18..21                 (3)           
  Source:  193.10.1.119..0                                             
  DestXCF: 193.1.2.108                                                 
    CfgTimAff: 0200  TimAffCnt: 0000000001  TimAffLft: 0000            
Dest:      203.1.10.18..21                 (4)             
  Source:  193.10.1.119..1030                                          
  DestXCF: 193.1.2.108                                                 
    PolicyRule:    FTPD1                                               
    PolicyAction:  paPRD-SD-7-INTR-SPECIAL                             
Dest:      203.1.10.18..21                 (5)         
  Source:  193.10.1.120..0                                             
  DestXCF: 193.1.1.108                                                 
    CfgTimAff: 0200  TimAffCnt: 0000000000  TimAffLft: 0099            
Dest:      204.2.10.11..21                 (6)      
  Source:  193.10.1.199..1031                                          
  DestXCF: 193.1.6.108                                                 
    PolicyRule:    FTPD1                                               
    PolicyAction:  paPRD-SD-7-INTR-SPECIAL                             
Dest:      205.2.10.11..21                 (6)         
  Source:  193.10.1.199..1032                                          
  DestXCF: 193.1.6.108                                                 
    PolicyRule:    *NONE*                                              
    PolicyAction:  *NONE*

上記の例には、以下の注が適用されます。

注:
  1. 後続の 3 つの通常 CRT エントリーについてのアフィニティー CRT エントリー。 アフィニティー・エントリーが存在する場合、それは通常 CRT エントリーの前に表示されます。
  2. 先行する単一のアフィニティー・エントリーへ関連付けられた 3 つの通常 CRT エントリー。
  3. 後続の通常 CRT エントリーについてのアフィニティー CRT エントリー。
  4. 前のアフィニティー・エントリーへ関連付けられた通常 CRT エントリー。
  5. どの接続にも関連しないアフィニティー CRT エントリー。 使用回数はゼロです。 このアフィニティー・エントリーが削除されるまでに 99 秒のアフィニティー時間が残っています。
  6. 通常 CRT エントリー。 これに関連付けられたアフィニティーはありません。