ヘッダーをスキップ
Oracle Communication and Mobility Server管理者ガイド
10gリリース3(10.1.3)
B50835-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

5 高可用性の構成

この章では、高可用性の構成について説明します。

高可用性の構成について

OCMSでは、冗長性、アプリケーションの状態のレプリケーション、およびクラスタリングにより、高可用性が提供されます。高可用性のOCMSのトポロジはアクティブ-アクティブです。これは、トポロジのコンテキストにおいてすべての冗長なノードがアクティブに機能していることを意味します。これにより、OCMSはスケーラブルにもなります。

図5-1 高可用性のOCMSトポロジ

図5-1の説明が続きます
「図5-1 高可用性のOCMSトポロジ」の説明

高可用性のOCMSトポロジ(図5-1)は、次の機能を提供します。

高可用性のOCMS環境の構成には、デプロイするOCMSトポロジに応じて、次の主要な手順が含まれます。

表5-1 追加情報

詳細な情報 関連項目:

OCMSのデプロイメント・トポロジ

このガイドの第2章「デプロイメント・トポロジ」

OCMSのインストール

Oracle Communication and Mobility Serverのインストレーション・ガイド

高可用性OCMSクラスタがサポートするオペレーティング・システム

『Oracle Communication and Mobility Server Certification Guide』

高可用性クラスタ化されたOracle Application Server環境の構成

  • 『Oracle Containers for J2EE構成および管理ガイド』のアプリケーションのクラスタリングに関する章

  • 『Oracle Application Server高可用性ガイド』の「アクティブ/アクティブ・トポロジ」


OCMSノードの高可用性クラスタの設定


注意:

UDPを使用する場合は、すべてのサーバーを同一のサブネットまたはスイッチに配置することで、巨大なUDPパッケージのデフラグメンテーションが発生しないようにします。

Edge Proxyノードを含む各OCMSノードを、高可用性をサポートするように構成する必要があります。

OCMSサーバーのクラスタをセットアップする基本的な手順を次に示します。

  1. ノードとOPMNの関連付け: Oracle Process Manager and Notification Serverは、単一または複数のOracle Application Serverコンポーネントおよびインスタンスのプロセス制御と監視のためのコマンドライン・インタフェースを提供します。OPMNを使用すると、OCMSの各ノードとそのサブコンポーネントを起動および停止できます。

  2. クラスタの起動: OPMNでクラスタを起動すると、すべてのOCMSノードがOPMNと正しく関連付けられており、クラスタとして認識されていることが示されます。

  3. クラスタのステータスの確認: OPMNまたはEnterprise Managerを使用して、クラスタの各ノードが稼働していることを確認できます。

  4. クラスタの停止: OCMSノードのクラスタを設定して検証したら、各SIPコンテナを高可用性用に構成する前にクラスタを必ず停止します(「高可用性のためのOCMS SIPコンテナの構成」を参照)。

ノードとOPMNの関連付け

OCMSノードのクラスタを設定するには、ノードをOPMNと関連付ける必要があります。次の3つの方法があります。


関連項目:

OPMNを使用したクラスタの構成と管理の詳細は、『Oracle Process Manager and Notification Server管理者ガイド』を参照してください。

動的検出方法によるノードとOPMNの関連付け

この方法(Oracleで推奨する方法)では、クラスタ内の各Oracle Application Serverインスタンスに、同じマルチキャスト・アドレスとポートを定義します。この方法の長所は、クラスタ内のOracle Application Serverインスタンスごとに名前を指定する必要がないことです。マルチキャスト・アドレスとポートを編集することで、クラスタのインスタンスを動的に追加または削除できます。

  1. 同じクラスタにグループ化するOracle Application Serverのインスタンスごとに、次のコマンドを実行します。

    $ORACLE_HOME/opmn/bin/opmnctl config topology update discover="*<multicastAddress>:<multicastPort>"
    

    次に例を示します。

    $ORACLE_HOME/opmn/bin/opmnctl config topology update
                           discover="*225.0.0.20:6200"
    

    ここでは、次のようになります。

    • multicastAddressでは、クラスタに使用するマルチキャスト・アドレスを指定します。マルチキャスト・アドレスは、有効な範囲(224.0.1.0〜239.255.255.255)のものである必要があります。マルチキャスト・アドレスの前にはアスタリスク(*)を付けることに注意してください。

    • multicastPortは、未使用の任意のポート番号です。

    すべてのインスタンスに、同じマルチキャストIPとポートを使用します。

  2. 手順1でコマンドを実行した各Oracle Application Serverインスタンスでopmnctl reloadを実行し、更新したopmn.xmlファイルをOPMNに読み込みます。

    $ORACLE_HOME/opmn/bin/opmnctl reload
    

検出サーバー方法によるノードとOPMNの関連付け

Oracleでは動的検出方法によるノードとOPMNの関連付けをお薦めしていますが、opmn.xmlファイル内のOracle Application Serverインスタンスをインスタンスごとに実行するノードの名前を指定し、クラスタを定義することもできます。たとえば、4つのインスタンス(node1.example.com、node2.example.com、node3.example.com、node4.example.com)をクラスタ化するには、次のように検出サーバー方法を使用し、それらのノードとOPMNを関連付けます。

  1. すべてのノードでOracle Application Serverを実行します。

  2. クラスタのトポロジを保持する検出サーバーとして、1つのインスタンスを指定します(この例の場合は、node1.excample.comがクラスタの検出サーバーとして機能します。)。

  3. クラスタ内のすべてのインスタンスのopmn.xmlファイルで、検出サーバーを実行するノード(例5-1のnode1.example.com)を指定します。例5-1を見ると、opmn.xmlファイルには<discover>要素が含まれています。6200という値は、通知サーバーがリスニングするポート番号です。<notification-server>要素の<port>サブ要素で指定されているリモート・ポート番号を使用します。

    例5-1 検出サーバーとしてのインスタンスの指定

    <?xml version="1.0" encoding="UTF-8"?>
    <opmn xmlns="http://www.oracle.com/ias-instance">
       ...
       <notification-server interface="ipv4">
          <port local="6100" remote="6200" request="6003"/>
           ....
          <topology>
             <discover list="node1.example.com:6200"/>
          </topology>
          ...
       </notification-server>
       <process-manager>
       ...
       </process-manager>
    </opmn>
    
  4. すべてのサーバー・インスタンスでopmnctl reloadを実行し、更新したopmn.xmlファイルをOPMNにロードします。

    $ORACLE_HOME/opmn/bin/opmnctl reload
    

クラスタの起動

OPMNを使用し、クラスタの各インスタンスで次のコマンドを実行して、クラスタを起動します。

cd ORACLE_HOME/opmn/bin/
$ORACLE_HOME/opmn/bin/opmnctl startall

クラスタのステータスの確認

クラスタのOCMSノードのステータスを確認するには、次のようにします。

  1. クラスタ内の任意のSIPコンテナで稼働しているEnterprise ManagerのURIを、Webブラウザで入力します。

    http://<SIP container URI>:<port number>/em
    
  2. プロンプトが表示されたら、管理者のユーザー名とパスワードを入力します。

    Enterprise Managerに、クラスタ・トポロジのステータスが表示されます。

クラスタの停止

クラスタのステータスを確認した後、OPMNを使用してクラスタのノードを停止し、SIPコンテナの構成を継続できるようにします(「高可用性のためのOCMS SIPコンテナの構成」を参照)。

OCMSを停止するには、クラスタの各ノードで次のコマンドを実行します。

cd ORACLE_HOME/opmn/bin/
$ORACLE_HOME/opmn/bin/opmnctl stopall

高可用性のためのOCMS SIPコンテナの構成

Application Server ControlコンソールのMBeanブラウザを使用し、各SIPアプリケーション・サーバー・ノードのMBeanで、次のパラメータを構成します。

  1. SIPContainer MbeanのEdge Proxyパラメータを、Edge ProxyのSIP URIを示すように構成します。また、複数のEdge Proxyを使用する場合はサード・パーティのロード・バランサを示すように構成します。

    次の形式を使用します。

    SIP:<Edge Proxy or Load Balancer IP address>:<port>;lr
    
  2. 次の形式でDistributableRecordRouteパラメータを構成します。

    SIP:<SIP Container IP address>:<port>
    

    追加されているトランスポート方式(transport=tcpなど)を削除し、Edge ProxyとOCMSの間で使用するトランスポートの種類を有効にします。

  3. 次の形式を使用してRecordRouteパラメータを構成します。

    SIP:<SIP Container IP address>:<port>
    

    追加されているトランスポート方式(transport=tcpなど)を削除し、Edge ProxyとOCMSの間で使用するトランスポートの種類を有効にします。

高可用性のためのEdge Proxyノードの構成


注意:

ロード・バランサでは、Edge Proxyサーバーに送信されるUDPデータグラムのスティッキー設定を必ず無効にしてください。UDPでデータグラムを送信する場合のスティッキー設定の無効化の詳細は、ロード・バランサのドキュメントを参照してください。

高可用性のためにEdge Proxyノードを構成するには、次のようにします。

トポロジ内のEdge Proxyノードごとに、次の構成を行います。

  1. Application Server ControlコンソールのMBeanブラウザで、edgeproxy Mbeanをクリックします。

  2. 次のいずれかを示すようにRecordRouteパラメータを構成します。

    • ロード・バランサを使用しない単一のEdge Proxyの場合: パラメータにEdge ProxyノードのIPアドレスを設定します。

    • ロード・バランサまたはDNSサーバーを使用する複数のEdge Proxyの場合: パラメータに、サード・パーティのロード・バランサまたはDNSサーバー(クライアントがDNS参照を使用して接続する場合)の仮想IPアドレスまたはホスト名を設定します。

  3. edgeproxy.xmlファイル(例5-2sdp/edgeproxy/conf/edgeproxy.xml)を変更し、oc4j-ping要素が含まれるようにします。

    <oc4j-ping interval="1" allowed-miss-count="16"/>
    

    oc4j-ping要素は、クラスタ内のOracle Application ServerがEdge Proxyに対してpingを実行する間隔(単位は秒)を構成します。allowed-miss-count属性は、許容されるping失敗の最大回数を指定します。この回数を超えると、Edge Proxyは応答しないOracle Application Serverをルーティング・テーブルから削除します。

    例5-2 edgeproxy.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <edge-proxy xmlns:xsi="http://www.oracle.com/sdp">
         <record-route sip-uri="sip:%IPADDRESS%:%SIPPORT%"/>
         <jmx-rmi-connector port="%EPRMIPORT%"/>
         <oc4j-ping interval="1" allowed-miss-count="16"/>
         <nat-traverse enabled="true"/>
         <sip-stack ip="%IPADDRESS%">
              <listening-point transport="tcp" port="%SIPPORT%" />
              <listening-point transport="udp" port="%SIPPORT%" />
         </sip-stack>
    </edge-proxy>
    
  4. edgeproxy.xmlファイルでは、必要委応じてnat-traverse要素を変更します。

    • Edge ProxyがSIPクライアントによるNAT(Network Address Translators)の横断を有効にする場合は、値をtrue(デフォルト)に設定します。Oracle Communicatorで対応するデフォルト値を設定する必要があります。

    • NATの横断を使用しない場合は、この属性にfalseを設定します。NATの横断の無効化の詳細は、「Edge Proxyによって有効化されたNATの横断の無効化」を参照してください。

  5. 次のようにして、クラスタ内のEdge Proxyノードのステータスを確認します。

詳細は、Oracle Communication and Mobility Serverのインストレーション・ガイドの「クラスタ環境でのEdge Proxyを使用したOCMSの構成」を参照してください。

NAT横断オプション(Edge Proxyで有効化される)

NATの横断により、SIPユーザー・エージェントがファイアウォールまたはNATの背後にあっても、SIPユーザー・エージェントにアクセスできます。ファイアウォールまたはNATの背後にあるSIPクライアントをサポートするために、プロキシ・サーバーではPath拡張ヘッダー・メカニズム(RFC 3327を参照)を使用します。SIPクライアントはこれにより、特定のパスに従って、ネットワーク全体でNATおよびファイアウォールの横断を有効にすることができます。Edge ProxyでNAT横断機能を有効にすると、OCMSクラスタはREGISTERリクエストにPathヘッダー・フィールドを挿入することにより、Path拡張ヘッダー・メカニズムをサポートします。

Edge Proxyによって有効化されたNATの横断の無効化

デフォルト時、NATの横断はedgproxy.xmlで有効になっています(例5-2ではnat-traverse enabled=true)。この機能を無効にするには、次のようにします。

  1. Edge Proxyは、動作している場合、次のコマンドを入力して停止させます。

    $ORACLE_HOME/opmn/bin/opmnctl stopproc process-type=EdgeProxy
    
  2. edgeproxy.xml(場所はORACLE_HOME/sdp/edgeproxy/conf/edgeproxy.xml)のnat-traverse要素を、次のように編集します。

    <nat-traverse enabled="false"/>
    
  3. 次のコマンドを使用して、Edge Proxyを起動します。

    $ORACLE_HOME/opmn/bin/opmnctl startproc process-type=EdgeProxy
    
  4. OCMSクラスタのEdge Proxyノードごとに、これらの手順を実行します。


注意:

NATの横断が有効な場合、Edge Proxyノードは各自のローカルIPアドレスをSIPリクエストのRecordRouteヘッダーに挿入します。そのため、Edge Proxyノードはグローバルなルーティングが可能である必要があります。ただし、ホワイト・ペーパー『Oracle Communication and Mobility Server in a High-Availability Environment Running with F5 BigIP』(Oracle Technology Networkより入手可能)に従ってクラスタが構成されている場合は、このかぎりではありません。

高可用性SIPサーブレット・アプリケーションの構成

ここでは、OCMSノードのクラスタにデプロイされたSIPサーブレット・アプリケーションに高可用性を構成する方法について説明します。


注意:

  • Proxy Registrarに依存するSIPサーブレット・アプリケーションに高可用性を構成する場合は、Proxy Registrarにも高可用性を構成する必要があります。

  • 複合アプリケーション(SIPサーブレットとHTTPサーブレットの両方で構成されているアプリケーション)については、現時点では高可用性はサポートされていません。


SIPサーブレット・アプリケーションでの高可用性の有効化

高可用性のSIPサーブレット・アプリケーションを構成するには、次のようにします。

  1. sip.xmlファイル(場所はORACLE_HOME/j2ee/ocms/applications/<application name>/<web module name>/WEB-INF/sip.xml)を変更して、<distributable>要素を含めます。

    次に例を示します。

    <?xml version="1.0" encoding="UTF-8"?>
      <sip-app>
      <display-name>proxyregistrarssr</display-name>
       <distributable/>
    <!--Servlets-->
    <servlet>
      <servlet-name>Registrar</servlet-name>
      <servlet-class>oracle.sdp.registrar.VoipRegistrarServlet</servlet-class>
      <init-param>
        <param-name>LocationService</param-name>
        <param-value>oracle.sdp.locationdbservice.LocationDbServiceBD
        </param-value>
       </init-param>
      </servlet>
    </sip-app>
    
  2. web.xmlファイル(場所はORACLE_HOME/j2ee/ocms/applications/<application name>/<web module name>/WEB-INF/web.xml)を変更して、<distributable>要素を含めます。

    次に例を示します。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application
    2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
    <web-app>
         <display-name>proxyregistrarssr</display-name>
         <distributable/>
    </web-app>
    
  3. orion-application.xmlファイル(場所はORACLE_HOME/j2ee/ocms/application-deployments/<application name>/orion-application.xml)を変更して、<cluster>要素を含めます。この要素は、Oracle Application Serverノードおよび特定のSIPサーブレット・アプリケーションの両方に対するクラスタリングの構成に使用します。

    次に例を示します。

    <orion-application ... >
       <cluster allow-colocation="false">
       ...
       </cluster>
    </orion-application>
    

    <cluster>要素(orion-application.xmlファイルおよびapplication.xmlファイル内で使用される)には、アプリケーションのレプリケーションを制御する次のサブ要素が含まれます。

    • enabled: クラスタリングを有効にするかどうかを指定します。デフォルト値はtrueです。

    • group-name: レプリケーション・グループ・チャネルを確立するときに使用する名前です。指定しないと、server.xml(Oracle Application Serverサーバー構成ファイル)で定義されているアプリケーション名がデフォルトで使用されます。エンタープライズ・アプリケーションごとに新しいグループ・チャネルが作成されます。この値を指定すると、アプリケーションおよびすべての子アプリケーションが、このグループ名に関連付けられたチャネルを使用します。

    • allow-colocation: 同じホスト・マシンに存在するノードへのアプリケーション状態のレプリケートを許可するかどうかを指定します。デフォルト値はtrueです。


      注意:

      デフォルト値はtrueですが、複数のホストが利用可能な場合はallow-colocationfalseを設定してください。複数のOracle Application Serverインスタンスが同じマシンでインスタンス化されている場合は、default-web-site.xmljms.xmlrmi.xmlの各構成ファイルで、インスタンスごとに異なるリスナー・ポートを指定する必要があります。

    • write-quota: アプリケーションの状態をレプリケートする必要のある他のグループ・メンバーの数です。この属性を使用して状態が書き込まれるノードの数を制限することで、オーバーヘッドを減らすことができます。デフォルト値は1です。

      <cluster>要素とそのサブ要素の追加情報については、『Oracle Containers for J2EE構成および管理ガイド』の「アプリケーションのクラスタリングの構成」を参照してください。


      注意:

      orion-application.xmlファイル内の属性に対しては、正しいスペルを使用してください。スペルが間違っていても、エラー・メッセージが出力されないからです。たとえば、クラスタ構成セクションでstart-portのスペルをstart-prtと間違えると、レプリケーションが開始された旨が表示されますが、セッションのレプリケーションは機能しません。

  4. 各OCMSインスタンスにデプロイされているアプリケーションごとに、前述の手順を繰り返します。


重要:

すべてのSIPアプリケーション・サーバー・ノードに、アプリケーションを対称的にデプロイしてください。

高可用性SIPサーブレット・アプリケーションのデプロイについては、『Oracle Communication and Mobility Server開発者ガイド』を参照してください。

アプリケーション・セッション・データのレプリケーションの構成

OCMSでは、orion-application.xmlファイルの<cluster>要素および<property-config>要素の定義により、マルチキャスト・レプリケーションをサポートしています。<property-config>要素は、クラスタ内のノード間でセッション状態をレプリケートするためにJGroupsグループ通信プロトコルを使用する場合に必要なデータを含みます。

レプリケーション・ポリシーを設定するには、ORACLE_HOME/j2ee/ocms/application-deployments/<application name>/orion-application.xmlファイルを次のように編集します。

  • <cluster>要素のallow-colocation属性をfalseに設定します。

  • <property-config>要素の<url>要素に、アプリケーション関連の高可用性構成を規定するJGroupのXMLファイル(例5-4を参照)に対するパスを設定します。

    例5-3 レプリケーション用のorion-application.xmlファイルの編集

    <orion-application ... >
       ...
       <cluster allow-colocation="false">
       ...
          <property-config>
             <url>file:///ORACLE_HOME/j2ee/ocms/application-deployments/
             <application name>/jgroups-tcp.xml</url>
          </property-config>
       </cluster>
    

例5-4は、例5-3のJGroups XMLファイル(jgroups-tcp.xmlという名前)を示しています。

例5-4 アプリケーション高可用性用JGroups構成ファイルの例

<config>
  <TCP/>
  <MPING mcast_addr="230.0.0.130" mcast_port="8500" ip_ttl="1"/>
  <MERGE2 min_interval="5000" max_interval="10000"/>
  <FD timeout="1000" max_tries="3" shun="false"/>
  <FD_SOCK/>
  <VERIFY_SUSPECT timeout="1000"/>
  <pbcast.NAKACK gc_lag="100" retransmit_timeout="3000"/>
  <pbcast.STABLE desired_avg_gossip="20000"/>
  <pbcast.GMS join_timeout="3000" join_retry_timeout="2000" shun="false"
  print_local_addr="true"/>
</config>

例5-4では、障害検出(<FD timeout>によって設定)がミリ秒単位で設定されています。同じJGroupsファイル内では、1000ミリ秒でリトライ回数は3回(max_tries="3")と設定されています。

デプロイ済SIPサーブレット・アプリケーションのための高可用性の構成

SIPサーブレット・アプリケーションをすでに開発およびデプロイしてあるが、高可用性の構成を行っていない場合は、次のようにします。

  1. SIPサーブレット・アプリケーションをアンデプロイします。

  2. アプリケーションのEARを解凍します。

  3. 「SIPサーブレット・アプリケーションでの高可用性の有効化」で説明されているように、sip.xmlファイルとweb.xmlファイルを変更して<distributable>要素を追加します。sip.xmlファイルおよびweb.xmlファイルを編集するには、次のようにします。

    1. 新しいフォルダを作成し、名前を<Your SIP application>にします。

    2. 新しいフォルダにEARファイルを解凍します。

    3. EARファイルに含まれるWARファイルを、フォルダ<Your SIP application>/<WAR module name>に解凍します。

    4. 次のファイルを編集します。

      <Your SIP application>/<WAR module name>/WEB-INF/sip.xml
      <Your SIP application>/<WAR module name>/WEB-INF/web.xml
      
    5. <Your SIP application>/<WAR module name>の下で、元のWARファイル名を使用してWARファイルの内容を再パッケージングします。<Your SIP application>フォルダ内の元のWARファイルを、作成したばかりの新しいファイルに置き換えます。

    6. <Your SIP application>/<WAR module name>フォルダを削除します。

    7. <Your SIP application>の内容をEARファイルにパッケージングします。元のEARファイルのファイル名を使用します。

  4. SIPサーブレット・コンテナにアプリケーションのEARを再デプロイします。

アプリケーション・レベルでの高可用性の無効化

クラスタからアプリケーションを削除するには、次のようにします。

  1. テキスト・エディタで、アプリケーション固有のorion-application.xmlファイルを開きます。

  2. <cluster>要素のenabled属性をfalseに設定します。詳細は、「アプリケーション・セッション・データのレプリケーションの構成」を参照してください。

    次に例を示します。

    <orion-application ... >
       ...
       <cluster enabled="false">
       ...
       </cluster>
    </orion-application>
    
  3. orion-application.xmlファイルを保存します。

OCMSのSIPサーブレット・アプリケーションのアップグレード

SIPサーブレット・アプリケーションは、停止時間を最小限にするローリング・アップグレード手順を使用してアップグレードできます。

OCMSのSIPサーブレット・アプリケーションのローリング・アップグレードを実行するには、次のようにします。

  1. SIPサーブレット・アプリケーションをアップグレードするOCMSノードで、次のコマンドを実行してノードで稼働しているすべてのOCMSプロセスを停止します。

    $ORACLE_HOME/opmn/bin/opmnctl shutdown
    
  2. クラスタからSIPアプリケーション・サーバーを削除するには、ORACLE_HOME/opmn/conf/opmn.xmlファイルで<topology>要素をコメント化します。

  3. 次のコマンドを実行して、SIPコンテナを再起動します。

    $ORACLE_HOME/opmn/bin/opmnctl startall
    
  4. クラスタから外したSIPコンテナのSIPサーブレット・アプリケーションをアップグレードします。

  5. クラスタに戻すことができるように、SIPコンテナを再びシャットダウンします。

    $ORACLE_HOME/opmn/bin/opmnctl shutdown
    
  6. クラスタにSIPコンテナを戻すには、opmn.xmlファイルで<topology>要素のコメントを外します。

  7. 次のコマンドを実行して、SIPコンテナをクラスタに戻します。

    $ORACLE_HOME/opmn/bin/opmnctl startall
    

    進行中のすべてのコールが完了した後で、SIPサーブレット・アプリケーションはアップグレードされます。

  8. 残りのSIPコンテナに対し、同じ処理を繰り返します。

オーバーロード・ポリシーの構成

OCMSでは、オーバーロード・ポリシーを使用することで、処理能力が高位しきい値レベルに達したときにオーバーロード保護を実行できます。このMBeanを構成するには、最初に、表5-2で説明されているように、SIPセッションの数の最大値(SipSessionTableMaxSize)およびアプリケーション・キュー(AppQueueMaxSize)とネットワーク・キュー(StackQueueMaxSize)の最大サイズを設定します。その後、「高位しきい値と低位しきい値の構成」で説明されているように、これらのそれぞれに対するしきい値を設定します。

最大値の設定に加えて、AllowedTrafficDuring503属性を使用すると、システムがオーバーロード状態になってクライアントに503(サービス使用不可)エラー・レスポンスを発行する場合に、システムを通過することを許可するトラフィックのパーセンテージを設定できます。この属性をゼロ(デフォルト値)に設定すると、システムは新しい着信リクエストを処理しません。


注意:

これらの値を設定するときは、SIPサーブレット・コンテナ・モニターの属性ApplicationPeakQueue、NetworkPeakQueue、Sessions、503ResponseSentおよびMessagesDroppedに対して表示される負荷の値を参考にしてください。

表5-2 SIPセッション、アプリケーション・キュー、ネットワーク・キューのデフォルト値

属性 デフォルト値

AppQueueMaxSize

200

StackQueueMaxSize

100

SipSessionTableMaxSize

70000



注意:

OCMSによるキューの内部的な使用のため、オーバーロード状況でのキューの実際のピーク値は、オーバーロード・ポリシーで構成されている最大値を超える場合があります。

オーバーロード・ポリシー・アーキテクチャの概要

オーバーロード・ポリシーは、ポリシー・マネージャ(コレクタ、アクションおよびポリシーの検索サービス)からコレクタとアクションを受け取ります。ポリシー・マネージャは、使用可能なコレクタ、アクションまたはポリシーが変化すると、すべてのオブザーバに通知を送信します。

コレクタ

状態が変化すると、コレクタはポリシーに通知します。オーバーロード・ポリシーは、次のコレクタの状態変化をサブスクライブします。

オーバーロード・ポリシーの概要

オーバーロード・ポリシーは、次のデフォルト・アクションを実装しています。高位しきい値に達するとオーバーロード・アクションが実行され、使用量が低位しきい値まで低下すると終了します。

  • 新しい接続を受け付けない: 高位警告しきい値に達すると、このオーバーロード・アクションが実施されます。

  • 最初のリクエストに対して503(サービス使用不可)レスポンスを送信する: 高位アラームしきい値に達すると、このオーバーロード・アクションが実施されます。

  • すべての接続からの読取りを停止する: 高位クリティカルしきい値に達すると、このオーバーロード・アクションが実施されます。

高位しきい値と低位しきい値の構成

オーバーロード・ポリシーMBeanを使用すると、メモリー使用量アプリケーション・キューネットワーク・キューおよびSIPセッション・テーブル使用量の警告、アラーム、クリティカルの各レベルに対する高位と低位の値を構成できます。各レベルに対し、使用量が指定したしきい値を超えた場合に実行する1つまたは複数のアクションを指定できます。しきい値に対して設定されている高位値に達すると、オーバーロード・ポリシーはオーバーロード・アクションを呼び出します。この値は、アクションが開始されるしきい値です。使用量がしきい値に設定されている低位値まで低下すると、オーバーロード・ポリシーはオーバーロード・アクションを停止します。たとえば、高位レベルが90に設定され、下位レベルが80に設定されている場合、オーバーロード・アクションは、使用量が90%に達すると開始し、使用量が80%まで低下すると停止します。

オーバーロード・ポリシーの開始と停止

オーバーロード・ポリシーMBeanの操作を開始および停止することで、オーバーロード・ポリシーを手動で開始および停止できます。OCMSの起動時にオーバーロード・ポリシーを自動的に開始するには、Autostart属性をtrueに設定します。

メモリー使用量

メモリー・モニターは、オーバーロード・ポリシーにメモリーの使用量を報告します。使用量は、総メモリーに対する割合で通知されます。たとえば、メモリー・モニターが85という値を報告した場合は、総メモリーの85%が現在使用されていて、15%が空いていることを意味します。

オーバーロード・ポリシーMBeanを使用して、オーバーロード・ポリシーのメモリー使用量に対する警告、アラームおよびクリティカルのしきい値レベルを構成します。各レベルに対し、メモリー使用量が指定したしきい値を超えた場合に実行する1つまたは複数のアクションを指定できます。MBeanを使用すると、これらの各レベルに対して高位と低位のしきい値を設定できます。高位の値は、オーバーロード・アクションの実行を開始するしきい値です。低位レベルは、アクションの実行を停止するしきい値を示します。たとえば、高位レベルが90に設定され、下位レベルが80に設定されている場合、アクションは、メモリー使用量が90%に達すると開始し、メモリー使用量が80%まで再び低下すると停止します。

メモリー・オーバーロード・アクションの遅延

高位レベルと低位レベルにより、メモリー使用量が少し変化しただけでオーバーロード・アクションが繰り返し開始および停止するのを防ぐことができます。アクションの実行開始を設定するしきい値レベルを構成できる他、MemoryActionDelay属性を使用して、メモリー・オーバーロード・アクションに対する遅延時間(秒単位)を設定することもできます。高位しきい値を超えると、指定された遅延時間(秒)の後でスケジュール・タイマーが開始します。遅延時間が経過するまではメモリー・オーバーロード・アクションは実行されず、遅延時間の間にメモリーの使用量が高位しきい値より低下すると、タイマーはキャンセルされてアクションは実行されません。

メモリーしきい値を超えたときからアクションを実行するときまでの遅延時間(秒)を入力することで、MemoryActionDelay属性を構成します。遅延時間内にメモリー使用量がしきい値より低下すると、実行は停止します。遅延時間は0より大きい値にする必要があります。デフォルト値は60秒です。

表5-3は、メモリー使用量に対する高位および低位の警告しきい値を設定するために構成する属性のリストです。

表5-3 メモリー使用量に対する警告の高位および低位しきい値

属性 説明

MemoryWarningHigh

新規接続を却下するオーバーロード・アクションをトリガーする警告しきい値の高位値。これはデフォルトのオーバーロード・アクションです。値の範囲は0〜100です。0はアクションを無効にします。デフォルト値は95です。

MemoryWarningLow

オーバーロード・アクションの終了をトリガーする警告しきい値の低位値。値の範囲は0〜100です。デフォルト値は90です。

MemoryWarningActions

メモリー警告レベルに達したときに実行するアクションのカンマ区切りリスト。デフォルト値はoracle.sdp.networlayer.NetworkServiceImpl$StopAcceptActionです。


表5-4は、メモリー使用量に対する高位および低位のアラームしきい値を設定するために構成する属性のリストです。

表5-4 メモリー使用量に対するアラームの高位および低位しきい値

属性 説明

MemoryAlarmHigh

初期リクエストで503レスポンス(サービス使用不可)を送信するアクションをトリガーするメモリー使用量のアラームしきい値の高位値。これはデフォルトのオーバーロード・アクションです。値の範囲は0〜100です。0はアクションを無効にします。デフォルト値は95です。

MemoryAlarmLow

オーバーロード・アクションの終了をトリガーするメモリー使用量のアラームしきい値の低位値。値の範囲は0〜100です。デフォルト値は90です。

MemoryAlarmActions

メモリー・アラームしきい値に達したときに実行するアクションのカンマ区切りリスト。デフォルト値はcom.hotsip.jainsipimpl.javax.sip.context.SipContextImpl$Send503Actionです。


表5-5は、メモリー使用量に対する高位および低位のクリティカルしきい値を設定するために構成する属性のリストです。

表5-5 メモリー使用量に対するクリティカルの高位および低位しきい値

属性 説明

MemoryCriticalHigh

接続読取りを停止するオーバーロード・アクションをトリガーするメモリー使用量のクリティカルしきい値の高位値。これはデフォルトのオーバーロード・アクションです。値の範囲は0〜100です。0はアクションを無効にします。デフォルト値は98です。

MemoryCriticalLow

オーバーロード・アクションの終了をトリガーするメモリー使用量のクリティカルしきい値の低位値。値の範囲は0〜100です。デフォルト値は90です。

MemoryCriticalActions

メモリー使用量のクリティカルしきい値に達したときに実行するアクションのカンマ区切りリスト。デフォルト値はoracle.sdp.networklayer.NetworkServiceImpl$StopReadActionです。


アプリケーション・キュー

アプリケーション・キューは、ネットワーク・レイヤーとアプリケーションの間の通信リンクです。ネットワーク・パッケージが構成されてアプリケーションを使用できる状態になり、セッション・タイマーまたは他のネットワーク関連イベントが発生すると、イベントがアプリケーション・キューに追加されます。ネットワーク・レイヤーのEventNotifierが、アプリケーション・キューの使用量をオーバーロード・ポリシーに報告します。この使用量は、キューの総容量に対する割合で通知されます。たとえば、EventNotifierが85という値を報告した場合は、キューの総容量の85%が現在使用されていて、キューの15%が空いていることを意味します。アプリケーション・キューの容量はAppQueMaxSize属性で設定します。デフォルト値は200です。この値は常に0より大きい値である必要があります。

EventNotifierは、アプリケーション・キュー使用量のすべての変化をオーバーロード・ポリシーに報告するわけではありません。95%以下では、5%変化するたびに報告します(つまり、0、5、10、15など)。95%を超えると、1%変化するたびに報告します(つまり、95、96、97など)。オーバーロード・ポリシーMBeanを使用すると、アプリケーション・キューについて、警告(表5-6)、アラーム(表5-7)、クリティカル(表5-8)の各しきい値を構成できます。

表5-6は、アプリケーション・キュー使用量に対する高位および低位の警告しきい値の設定を有効にするオーバーロード・ポリシーの属性のリストです。

表5-6 アプリケーション・キューに対する警告の高位および低位しきい値とアクション

属性

AppQueueWarningHigh

新規接続を却下するアクションをトリガーするアプリケーション・キュー使用量の高位警告しきい値。これはデフォルトのオーバーロード・アクションです。値の範囲は0〜100です。0を選択すると、アクションが無効になります。デフォルト値は70です。

AppQueueWarningLow

オーバーロード・アクションの終了をトリガーするアプリケーション・キュー使用量の低位警告しきい値。値の範囲は0〜100です。デフォルト値は50です。

AppQueueWarningActions

アプリケーション・キュー使用量の警告しきい値に達したときに実行するアクションのカンマ区切りリスト。デフォルト値はoracle.sdp.networklayer.NetworkServiceImpl$StopAcceptActionです。


表5-7は、アプリケーション・キュー使用量に対する高位および低位のアラームしきい値の設定を有効にするオーバーロード・ポリシーの属性のリストです。

表5-7 アプリケーション・キューに対するアラームの高位および低位しきい値とアクション

属性 説明

AppQueueAlarmHigh

最初のリクエストで503レスポンス(サービス使用不可)を送信するオーバーロード・アクションをトリガーするアプリケーション・キュー使用量の高位アラームしきい値。これはデフォルトのオーバーロード・アクションです。値の範囲は0〜100です。0はアクションを無効にします。デフォルト値は80です。

AppQueueAlarmLow

オーバーロード・アクションの終了をトリガーするアプリケーション・キュー使用量の低位アラームしきい値。値の範囲は0〜100です。デフォルト値は60です。

AppQueueAlarmActions

アラームしきい値に達したときに実行するアクションのカンマ区切りリスト。デフォルト値はcom.hotsip.jainsipimpl.javax.sip.context.SipContextImpl$Send503Actionです。


表5-8は、アプリケーション・キュー使用量に対する高位および低位のクリティカルしきい値の設定を有効にするオーバーロード・ポリシーMBeanの属性のリストです。

表5-8 アプリケーション・キューに対するクリティカルの高位および低位しきい値とアクション

属性 説明

AppQueueCriticalHigh

接続の読取りを停止するオーバーロード・アクションをトリガーするアプリケーション・キュー使用量の高位クリティカルしきい値。これはデフォルトのオーバーロード・アクションです。値の範囲は0〜100です。0はアクションを無効にします。デフォルト値は90です。

AppQueueCriticalLow

オーバーロード・アクションの終了をトリガーするアプリケーション・キュー使用量の低位クリティカルしきい値。値の範囲は0〜100です。デフォルト値は70です。

AppQueueCriticalActions

クリティカル・レベルに達したときに実行するアクションのカンマ区切りリスト。デフォルト値はoracle.sdp.networklayer.NetworkServiceImpl$StopReadActionです。


ネットワーク・キュー

ネットワーク・レイヤーは、ネットワークから着信するフレーム化されていないデータをネットワーク・キューに蓄積します。ネットワーク・レイヤーのEventQueueが、ネットワーク・キューの使用量をオーバーロード・ポリシーに報告します。この使用量は、キューの総容量に対する割合で通知されます。たとえば、EventQueueが85という値を報告した場合は、キューの総容量の85%が現在使用されていて、キューの15%が空いていることを意味します。ネットワーク・キューの容量はStackQueueMaxSize属性で設定します。この属性のデフォルト値は100です。この値は常に0より大きい値である必要があります。

EventQueueは、キューの使用量が変化するたびにオーバーロード・ポリシーに報告するわけではありません。95%以下では、5%変化するたびに報告します(つまり、0、5、10、15など)。95%を超えると、1%変化するたびに報告します(つまり、95、96、97など)。オーバーロード・ポリシーMBeanを使用すると、ネットワーク・キューの警告(表5-9)、アラーム(表5-10)、クリティカル(表5-11)のしきい値を構成できます。

表5-9は、警告アクションをトリガーする高位および低位のしきい値を設定するために構成する属性のリストです。

表5-9 ネットワーク・キューに対する警告の高位および低位しきい値とアクション

属性 説明

StackQueueWarningHigh

新規接続を却下するオーバーロード・アクションをトリガーするネットワーク・キュー使用量の高位警告しきい値。これはデフォルトのオーバーロード・アクションです。値の範囲は0〜100です。0はアクションを無効にします。デフォルト値は70です。

StackQueueWarningLow

オーバーロード・アクションの終了をトリガーする低位警告しきい値。値の範囲は0〜100です。デフォルト値は50です。

StackQueueWarningActions

警告しきい値に達したときに実行するアクションのカンマ区切りリスト。デフォルト値はoracle.sdp.networklayer.NetworkServiceImpl$StopAcceptActionです。


表5-10は、アラーム・アクションをトリガーする高位および低位のしきい値を設定するために構成する属性のリストです。

表5-10 ネットワーク・キューに対する警告の高位および低位しきい値とアクション

属性 説明

StackQueueAlarmHigh

最初のリクエストで503(サービス使用不可)レスポンスを送信するオーバーロード・アクションをトリガーするネットワーク・キュー使用量の高位アラームしきい値。これはデフォルトのアクションです。値の範囲は0〜100です。0はアクションを無効にします。デフォルト値は80です。

StackQueueAlarmLow

オーバーロード・アクションの終了をトリガーするネットワーク・キュー使用量の低位アラームしきい値。値の範囲は0〜100です。デフォルト値は60です。

StackAlarmQueueActions

しきい値に達したときに実行するアクションのカンマ区切りリスト。デフォルト値はcom.hotsip.jainsipimpl.javax.sip.context.SipContexImpl$Send503Actionです。


表5-11は、クリティカル・アクションをトリガーする高位および低位のしきい値を設定するために構成する属性のリストです。

表5-11 ネットワーク・キューに対するクリティカルの高位および低位しきい値とアクション

属性 説明

StackQueueCriticalHigh

すべての接続の読取りを停止するオーバーロード・アクションをトリガーするネットワーク・キュー使用量の高位クリティカルしきい値。これはデフォルトのオーバーロード・アクションです。値の範囲は0〜100です。0はアクションを無効にします。デフォルト値は90です。

StackQueueCriticalLow

オーバーロード・アクションの終了をトリガーする低位クリティカルしきい値。値の範囲は0〜100です。デフォルト値は70です。

StackQueueCriticalActions

クリティカル・レベルに達したときに実行するアクションのカンマ区切りリスト。デフォルト値はoracle.sdp.networklayer.NetworkServiceImpl$StopReadActionです。


SIPセッション・テーブル使用量

SIPサーブレット・エンジンのアプリケーション・マネージャが、SIPセッション・テーブルの使用量をオーバーロード・ポリシーに報告します。この使用量は、テーブルの総容量に対する割合で通知されます。たとえば、アプリケーション・マネージャが85という値を報告した場合は、総テーブル容量の85%が現在使用されていて、15%が空いていることを意味します。SIPセッション・テーブルの容量はSessionTableMaxSizeSip属性で設定します。この属性のデフォルト値は70000です。この値は0より大きい値である必要があります。

テーブルの使用量が変化するたびに、オーバーロード・ポリシーに報告されるわけではありません。95%以下では、5%変化するたびに報告されます(つまり、0、5、10、15など)。95%を超えると、1%変化するたびに報告します(つまり、95、96、97など)。オーバーロード・ポリシーMBeanを使用すると、オーバーロード・アクションをトリガーする警告(表5-12)、アラーム(表5-13)、クリティカル(表5-14)の各しきい値を構成できます。

表5-12は、警告しきい値を設定するために構成する属性のリストです。

表5-12 SIPセッション・テーブル使用量に対する警告の高位および低位しきい値とアクション

属性 説明

SipSessionWarningHigh

新規接続を却下するオーバーロード・アクションをトリガーするSIPセッション・テーブル使用量の高位警告しきい値。これはデフォルトのオーバーロード・アクションです。値の範囲は0〜100です。0はアクションを無効にします。デフォルト値は90です。

SipSessionWarningLow

オーバーロード・アクションの終了をトリガーする低位警告しきい値。値の範囲は0〜100です。デフォルト値は85です。

SipSessionWarningActions

クリティカル・レベルに達したときに実行するアクションのカンマ区切りリスト。デフォルト値はoracle.sdp.networklayer.NetworkServiceImpl$StopAcceptActionです。


表5-13は、アラーム・レベルしきい値を設定するために構成する属性のリストです。

表5-13 SIPセッション・テーブル使用量に対するアラームの高位および低位しきい値とアクション

属性 説明

SipSessionAlarmHigh

最初のリクエストで503レスポンス(サービス使用不可)を送信するオーバーロード・アクションをトリガーするSIPセッション・テーブル使用量の高位アラームしきい値。これはデフォルトのオーバーロード・アクションです。値の範囲は0〜100です。0はアクションを無効にします。デフォルト値は98です。

SipSessionAlarmLow

オーバーロード・アクションの終了をトリガーするSIPセッション・テーブル使用量の低位アラームしきい値。値の範囲は0〜100です。デフォルト値は97です。

SipSessionAlarmActions

アラームしきい値に達したときに実行するアクションのカンマ区切りリスト。デフォルト値はcom.hotsip.jainsipimpl.javax.sip.context.SipContextImpl$Send503Actionです。


表5-14は、クリティカルしきい値を設定するために構成する属性のリストです。

表5-14 SIPセッション・テーブル使用量に対するクリティカルしきい値とアクション

属性 説明

SipSessionCriticalHigh

すべての接続の読取りを停止するオーバーロード・アクションをトリガーするSIPセッション・テーブル使用量の高位クリティカルしきい値。これはデフォルトのオーバーロード・アクションです。値の範囲は0〜100です。0はアクションを無効にします。デフォルト値は100です。

SipSessionCriticalLow

オーバーロード・アクションの終了をトリガーするSIPセッション・テーブル使用量の低位クリティカルしきい値。値の範囲は0〜100です。デフォルト値は99です。

SipSessionCriticalActions

クリティカル・レベルに達したときに実行するアクションのカンマ区切りリスト。デフォルト値はoracle.sdp.networklayer.NetworkServiceImpl$StopReadActionです。


システム・チューニングのためのオーバーロード保護の解除

技術的には、オーバーロード保護は常にアクティブです。システムをチューニングする場合、次のいずれかを実行することで、オーバーロード・アクションが実行されないようにすることができます。

  • トリガー値をすべて0(ゼロ)に設定してルールをすべて無効にします。

  • AppQueueMaxSize、StackQueueMaxSizeおよびSipSessionTableMaxSizeの各属性を大きな値に設定します。