Sun Java System Directory Server Enterprise Edition 6.1 管理ガイド

第 21 章 Directory Proxy Server による負荷分散とクライアントアフィニティー

負荷分散とクライアントアフィニティーについては、『Sun Java System Directory Server Enterprise Edition 6.1 Reference』の第 16 章「Directory Proxy Server Load Balancing and Client Affinity」を参照してください。この章の内容は次のとおりです。

負荷分散の設定

負荷分散の詳細は、『Sun Java System Directory Server Enterprise Edition 6.1 Reference』「Load Balancing」を参照してください。この節では、負荷分散を設定する方法について説明し、設定例を示します。

Procedure負荷分散アルゴリズムを選択する

DSCC を使用してこの作業を実行できます。詳細は、「Directory Service Control Center のインタフェース」と DSCC のオンラインヘルプを参照してください。

  1. LDAP データソースプールのプロパティーを表示することで、現在の負荷分散アルゴリズムを取得します。


    $ dpconf get-ldap-data-source-pool-prop -h host -p port pool-name
    

    LDAP データソースプールのデフォルトプロパティーは次のとおりです。


    client-affinity-policy    :  write-affinity-after-write
    client-affinity-timeout   :  20s
    description               :  -
    enable-client-affinity    :  false
    load-balancing-algorithm  :  proportional

    デフォルトでは、負荷分散アルゴリズムは proportional です。

  2. アルゴリズムを使用するように LDAP データソースプールを設定します。


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
      load-balancing-algorithm:selected-algorithm
    

    ここで、selected-algorithm は次のいずれかです。

    • failover

    • operational-affinity

    • proportional

    • saturation

    アルゴリズムの詳細は、『Sun Java System Directory Server Enterprise Edition 6.1 Reference』「Introduction to Load Balancing」を参照してください。

  3. Directory Proxy Server のインスタンスを再起動します。


    $ dpadm restart instance-path
    

Procedure負荷分散のウェイトを設定する

データソースのウェイトは、データソースプールに接続されているほかのすべてのデータソースのウェイトを考慮して設定する必要があります。データソースに操作のタイプに対して disabled のウェイトがある場合、そのタイプの要求がそのデータソースに送信されることはありません。データソースに ウェイト 0 (zero) がある場合、他のすべてのデータソースが使用不可でないかぎり、そのデータソースには要求は配信されません。このため、ウェイトが 0 に設定されたデータソースは、他のすべてのデータソースが停止している場合だけ使用されます。

DSCC を使用してこの作業を実行できます。詳細は、「Directory Service Control Center のインタフェース」と DSCC のオンラインヘルプを参照してください。

  1. データソースプールに接続されているデータソースのリストを表示します。


    $ dpconf list-attached-ldap-data-sources -h host -p port pool-name
    
  2. 接続済みデータソースのいずれかのプロパティーを表示します。


    $ dpconf get-attached-ldap-data-source-prop pool-name \
     attached-data-source-name
    

    接続済みデータソースのプロパティーは、各タイプの操作に対するウェイトを定義します。接続済みデータソースのデフォルトウェイトは次のとおりです。


    add-weight        :  disabled  
    bind-weight       :  disabled  
    compare-weight    :  disabled  
    delete-weight     :  disabled  
    modify-dn-weight  :  disabled  
    modify-weight     :  disabled  
    search-weight     :  disabled 
  3. 接続済みデータソースのいずれかのウェイトを設定します。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name \
     attached-data-source-name add-weight:value \
     bind-weight:value compare-weight:value delete-weight:value \
     modify-dn-weight:value modify-weight:value search-weight:value
    
  4. 接続されているほかのデータソースに対して、手順 2手順 3 を繰り返します。

  5. 接続済みデータソースのキーパラメータを比較します。


    $ dpconf list-attached-ldap-data-sources -h host -p port -v pool-name
    

    たとえば、データソースプールには、次のようなウェイトを持つデータソースを含めることができます。


    $ dpconf list-attached-ldap-data-sources -h host1 -p 1389 -v myPool
    Name add-weight bind-weight compare-weight delete-weight modify-dn-weight modify-weight search-weight
    ---- ---------- ----------- -------------- ------------- ---------------- ------------- -------------
    DS-1 disabled   3		       disabled       disabled      disabled         disabled      disabled
    DS-2 2          2           2              2             2                2             2
    DS-3 1          1           1              1             1                1             1

負荷分散の設定例

この節では、各負荷分散アルゴリズムの設定手順の例を示します。

Procedure比例アルゴリズムを用いて負荷分散を設定する

比例アルゴリズムについては、『Sun Java System Directory Server Enterprise Edition 6.1 Reference』「Proportional Algorithm for Load Balancing」を参照してください。

この例では、データソース ds–1 が、他の 2 つのデータソースのウェイトの 2 倍に設定されます。

DSCC を使用してこの作業を実行できます。詳細は、「Directory Service Control Center のインタフェース」と DSCC のオンラインヘルプを参照してください。

始める前に

データソースプールに少なくとも 3 つの接続済みデータソースが含まれていることを確認します。データソースとデータソースプールを作成する方法については、第 20 章「LDAP データソースとデータソースプール」を参照してください。

  1. 負荷分散に対して比例アルゴリズムを使用するようにデータソースプールを設定します。


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
      load-balancing-algorithm:proportional
  2. 最初のデータソースのプロパティーを設定します。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-1 \
     add-weight:2 bind-weight:2 compare-weight:2 delete-weight:2 modify-dn-weight:2 \
     modify-weight:2 search-weight:2
  3. 2 番目のデータソースのプロパティーを設定します。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-2 \
     add-weight:1 bind-weight:1 compare-weight:1 delete-weight:1 modify-dn-weight:1 \
     modify-weight:1 search-weight:1
  4. 3 番目のデータソースのプロパティーを設定します。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-3 \
     add-weight:1 bind-weight:1 compare-weight:1 delete-weight:1 modify-dn-weight:1 \
     modify-weight:1 search-weight:1
  5. 接続済みデータソースのキーパラメータを比較します。


    $ dpconf list-attached-ldap-data-sources -h host -p port -v pool-name
    Name add-weight bind-weight compare-weight delete-weight modify-dn-weight modify-weight search-weight
    ---  ---------- ----------- -------------- ------------- ---------------- ------------- -------------
    ds-1 2          2           2              2             2                2             2
    ds-2 1          1           1              1             1                1             1
    ds-3 1          1           1              1             1                1             1
  6. Directory Proxy Server のインスタンスを再起動します。


    $ dpadm restart instance-path
    

Procedure飽和アルゴリズムを用いて負荷分散を設定する

飽和アルゴリズムについては、『Sun Java System Directory Server Enterprise Edition 6.1 Reference』「Saturation Algorithm for Load Balancing」を参照してください。

この例では、データソース ds-1 で大半のバインド操作が実行されますが、ほかのタイプの操作は実行されません。3 つのデータソースが次のウェイトによって設定されます。

DSCC を使用してこの作業を実行できます。詳細は、「Directory Service Control Center のインタフェース」と DSCC のオンラインヘルプを参照してください。

始める前に

データソースプールに少なくとも 3 つの接続済みデータソースが含まれていることを確認します。データソースとデータソースプールを作成する方法については、第 20 章「LDAP データソースとデータソースプール」を参照してください。

  1. 負荷分散に対して飽和アルゴリズムを使用するようにデータソースプールを設定します。


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
     load-balancing-algorithm:saturation
  2. 最初のデータソースのプロパティーを設定します。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-1 \
     add-weight:disabled bind-weight:3 compare-weight:disabled delete-weight:disabled \
     modify-dn-weight:disabled modify-weight:disabled search-weight:disabled
  3. 2 番目のデータソースのプロパティーを設定します。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-2 \
     add-weight:2 bind-weight:2 compare-weight:2 delete-weight:2 modify-dn-weight:2 \
     modify-weight:2 search-weight:2
  4. 3 番目のデータソースのプロパティーを設定します。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-3 \
     add-weight:1 bind-weight:1 compare-weight:1 delete-weight:1 modify-dn-weight:1 \
     modify-weight:1 search-weight:1
  5. 接続済みデータソースのキーパラメータを比較します。


    $ dpconf list-attached-ldap-data-sources -h host -p port -v pool-name
    Name add-weight bind-weight compare-weight delete-weight modify-dn-weight modify-weight search-weight
    ---  ---------- ----------- -------------- ------------- ---------------- ------------- -------------
    ds-1 disabled   3		       disabled       disabled      disabled         disabled      disabled
    ds-2 2          2           2              2             2                2             2
    ds-3 1          1           1              1             1                1             1
  6. Directory Proxy Server のインスタンスを再起動します。


    $ dpadm restart instance-path
    

Procedureグローバルアカウントロックアウトに対してアフィニティーアルゴリズムを設定する

このアルゴリズムについては、『Sun Java System Directory Server Enterprise Edition 6.1 Reference』「Operational Affinity Algorithm for Global Account Lockout」を参照してください。

この例には、3 つのデータソースがあります。データソース ds-1 は、すべてのバインド要求を受信するように設定されます。

DSCC を使用してこの作業を実行できます。詳細は、「Directory Service Control Center のインタフェース」と DSCC のオンラインヘルプを参照してください。

始める前に

データソースプールに少なくとも 3 つの接続済みデータソースが含まれていることを確認します。データソースとデータソースプールを作成する方法については、第 20 章「LDAP データソースとデータソースプール」を参照してください。

  1. アフィニティーアルゴリズムを使用するようにデータソースプールを設定します。


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
     load-balancing-algorithm:operational-affinity
  2. 最初のデータソースのプロパティーを設定します。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-1 \
     add-weight:1 bind-weight:100 compare-weight:1 delete-weight:1 modify-dn-weight:1 \
     modify-weight:1 search-weight:1
  3. 2 番目のデータソースのプロパティーを設定します。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-2 \
     add-weight:1 bind-weight:1 compare-weight:1 delete-weight:1 modify-dn-weight:1 \
     modify-weight:1 search-weight:1
  4. 3 番目のデータソースのプロパティーを設定します。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-3 \
     add-weight:1 bind-weight:1 compare-weight:1 delete-weight:1 modify-dn-weight:1 \
     modify-weight:1 search-weight:1
  5. 接続済みデータソースのキーパラメータを比較します。


    $ dpconf list-attached-ldap-data-sources -h host -p port -v pool-name
    Name add-weight bind-weight compare-weight delete-weight modify-dn-weight modify-weight search-weight
    --   ---------- ----------- -------------- ------------- ---------------- ------------- -------------
    ds-1 1          1           1              1             1                1             1
    ds-2 1          100         1              1             1                1             1
    ds-3 1          1           1              1             1                1             1
  6. Directory Proxy Server のインスタンスを再起動します。


    $ dpadm restart instance-path
    

Procedureキャッシュの最適化のためにアフィニティーアルゴリズムを設定する

このアルゴリズムについては、『Sun Java System Directory Server Enterprise Edition 6.1 Reference』「Operational Affinity Algorithm for Cache Optimization」を参照してください。

この例には、3 つのデータソースがあります。すべての検索操作と比較操作は、データソース ds-1 で処理されます。ds-1 が要求に応答すると、ターゲットエントリがキャッシュ内に格納されます。ds-1 が同じ要求に繰り返し応答する場合、データソースはキャッシュに入れられたデータを使用できます。

DSCC を使用してこの作業を実行できます。詳細は、「Directory Service Control Center のインタフェース」と DSCC のオンラインヘルプを参照してください。

始める前に

データソースプールに少なくとも 3 つの接続済みデータソースが含まれていることを確認します。データソースとデータソースプールを作成する方法については、第 20 章「LDAP データソースとデータソースプール」を参照してください。

  1. アフィニティーアルゴリズムを使用するようにデータソースプールを設定します。


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
     load-balancing-algorithm:operational-affinity
  2. 最初のデータソースのプロパティーを設定します。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-1 \
     add-weight:1 bind-weight:1 compare-weight:100 delete-weight:1 modify-dn-weight:1 \
     modify-weight:1 search-weight:100
  3. 2 番目のデータソースのプロパティーを設定します。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-2 \
     add-weight:1 bind-weight:1 compare-weight:1 delete-weight:1 modify-dn-weight:1 \
     modify-weight:1 search-weight:1
  4. 3 番目のデータソースのプロパティーを設定します。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-3 \
     add-weight:1 bind-weight:1 compare-weight:1 delete-weight:1 modify-dn-weight:1 \
     modify-weight:1 search-weight:1
  5. 接続済みデータソースのキーパラメータを比較します。


    $ dpconf list-attached-ldap-data-sources -h host -p port -v pool-name
    Name add-weight bind-weight compare-weight delete-weight modify-dn-weight modify-weight search-weight
    ---  ---------- ----------- -------------- ------------- ---------------- ------------- -------------
    ds-1 1          1           100            1             1                1             100
    ds-2 1          1           1              1             1                1             1
    ds-3 1          1           1              1             1                1             1
  6. Directory Proxy Server のインスタンスを再起動します。


    $ dpadm restart instance-path
    

Procedureフェイルオーバーアルゴリズムを用いて負荷分散を設定する

フェイルオーバーアルゴリズムについては、『Sun Java System Directory Server Enterprise Edition 6.1 Reference』「Failover Algorithm for Load Balancing」を参照してください。

この例には、3 つのデータソースがあります。データソース ds-1 はすべての要求を受信します。ds-1 が失敗した場合は、ds-1 が回復するまで ds-2 がすべての要求を受信します。ds-1 が回復する前に ds-2 が失敗した場合は、ds-3 がすべての要求を受信します。

DSCC を使用してこの作業を実行できます。詳細は、「Directory Service Control Center のインタフェース」と DSCC のオンラインヘルプを参照してください。

始める前に

データソースプールに少なくとも 3 つの接続済みデータソースが含まれていることを確認します。データソースとデータソースプールを作成する方法については、第 20 章「LDAP データソースとデータソースプール」を参照してください。

  1. 負荷分散に対してフェイルオーバーアルゴリズムを使用するように、データソースプールを設定します。


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
     load-balancing-algorithm:failover
  2. 最初のデータソースのプロパティーを設定します。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-1 \
     add-weight:3 bind-weight:3 compare-weight:3 delete-weight:3 modify-dn-weight:3 \
     modify-weight:3 search-weight:3
  3. 2 番目のデータソースのプロパティーを設定します。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-2 \
     add-weight:2 bind-weight:2 compare-weight:2 delete-weight:2 modify-dn-weight:2 \
     modify-weight:2 search-weight:2
  4. 3 番目のデータソースのプロパティーを設定します。


    $ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-3 \
     add-weight:1 bind-weight:1 compare-weight:1 delete-weight:1 modify-dn-weight:1 \
     modify-weight:1 search-weight:1
  5. 接続済みデータソースのキーパラメータを比較します。


    $ dpconf list-attached-ldap-data-sources -h host -p port -v pool-name
    Name add-weight bind-weight compare-weight delete-weight modify-dn-weight modify-weight search-weight
    ---  ---------- ----------- -------------- ------------- ---------------- ------------- -------------
    ds-1 3          3           3              3             3                3             3
    ds-2 2          2           2              2             2                2             2
    ds-3 1          1           1              1             1                1             1
  6. Directory Proxy Server のインスタンスを再起動します。


    $ dpadm restart instance-path
    

クライアントアフィニティーの設定

クライアントアフィニティーにより、負荷分散された配備での伝播遅延のリスクが削減されます。クライアントアフィニティーについては、『Sun Java System Directory Server Enterprise Edition 6.1 Reference』「Client Affinity」を参照してください。この節では、クライアント接続とデータソース間のアフィニティーを設定する方法を説明し、設定例を示します。

Procedureクライアントアフィニティーを設定する

この手順では、クライアント接続とデータソース間のアフィニティーを設定する方法について説明します。

DSCC を使用してこの作業を実行できます。詳細は、「Directory Service Control Center のインタフェース」と DSCC のオンラインヘルプを参照してください。

  1. データソースプールのプロパティーを表示することで、現在の負荷分散アルゴリズムを表示します。


    $ dpconf get-ldap-data-source-pool-prop -h host -p port pool-name
    

    データソースプールのデフォルトプロパティーは、次のとおりです。


    client-affinity-policy    :  write-affinity-after-write
    client-affinity-timeout   :  20s
    description               :  -
    enable-client-affinity    :  false
    load-balancing-algorithm  :  proportional

    次のパラメータは、クライアントアフィニティーを設定します。client-affinity-policy client-affinity-timeoutenable-client-affinity 。プロパティーの詳細とそれらの有効な値のリストについては、次のように入力します。


    dpconf help-properties ldap-data-source-pool client-affinity-policy \
     client-affinity-timeout enable-client-affinity

    プロパティーの詳細は、次のマニュアルページを参照してください。client-affinity-policy(5dpconf)client-affinity-timeout(5dpconf)、および enable-client-affinity(5dpconf)

  2. クライアントアフィニティーを有効にします。


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
     enable-client-affinity:true
  3. クライアントアフィニティーに対するポリシーを選択します。


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
     client-affinity-policy:selected-policy
    

    ここで、selected-policy は次のいずれかです。

    write-affinity-after-write

    最初の書き込み要求のあとの書き込み要求に対するアフィニティー

    read-write-affinity-after-write

    最初の書き込み要求のあとのすべての要求に対するアフィニティー

    read-write-affinity-after-any

    最初の読み取り要求または書き込み要求のあとのすべての要求に対するアフィニティー

    read-affinity-after-write

    書き込み要求のあとの最初の読み取り要求に対するアフィニティー

  4. クライアントアフィニティーの期間を設定します。


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
     client-affinity-timeout:time-out[unit]

    タイムアウトのデフォルトの unit はミリ秒です。

クライアントアフィニティーの設定例

この節では、クライアントアフィニティーに関連する設定の例を示し、レプリケーションの遅延、書き込み操作の検証、接続ベースのルーティングの例を示します。

Procedureデータソースプールにマスターとコンシューマが含まれている場合に、レプリケーションの遅延に対するクライアントアフィニティーを設定する

この手順では、最初の書き込み操作後、3 秒までの間に行われるすべての読み取り操作と書き込み操作に対するクライアントアフィニティーを設定します。

DSCC を使用してこの作業を実行できます。詳細は、「Directory Service Control Center のインタフェース」と DSCC のオンラインヘルプを参照してください。

  1. データソースプールのアフィニティーパラメータを設定します。


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
     client-affinity-policy:read-write-affinity-after-write client-affinity-timeout:3000 \
     enable-client-affinity:true

Procedure書き込み操作のそれぞれを読み取り操作で検証するようにクライアントアフィニティーを設定する

この手順では、それぞれの書き込み操作のあとの最初の読み取り操作に対するクライアントアフィニティーを設定します。例は、読み取り操作を行うことで指定した DN がそれぞれの書き込み操作の妥当性検査を行うアプリケーションの場合もあります。

DSCC を使用してこの作業を実行できます。詳細は、「Directory Service Control Center のインタフェース」と DSCC のオンラインヘルプを参照してください。

  1. データソースプールのアフィニティーパラメータを設定します。


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
     client-affinity-policy:read-affinity-after-write enable-client-affinity:true

Procedure接続ベースのルーティングに対するクライアントアフィニティーを設定する

Directory Proxy Server 6.0 より前のバージョンでは、クライアントと LDAP サーバー間で確立される接続数は 1 つです。この接続が閉じられるまで、クライアントからのすべての要求に使用されました。このタイプのルーティングを、connection-based routing といいます。この手順では、接続ベースのルーティングに対してクライアントアフィニティーを設定する方法について説明します。

DSCC を使用してこの作業を実行できます。詳細は、「Directory Service Control Center のインタフェース」と DSCC のオンラインヘルプを参照してください。

始める前に

すべてのデータソースがデータソースプールに接続されていて、clientCredentialsForwardinguseBind に設定されていることを確認します。

  1. データソースプールのアフィニティーパラメータを設定します。


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
     client-affinity-policy:read-write-affinity-after-any enable-client-affinity:true