この章では、高可用性の構成について説明します。
OCMSでは、冗長性、アプリケーションの状態のレプリケーション、およびクラスタリングにより、高可用性が提供されます。高可用性のOCMSのトポロジはアクティブ-アクティブです。これは、トポロジのコンテキストにおいてすべての冗長なノードがアクティブに機能していることを意味します。これにより、OCMSはスケーラブルにもなります。
高可用性のOCMSトポロジ(図5-1)は、次の機能を提供します。
プロセスの停止検出と自動再起動: 構成やソフトウェアの問題のため、予期せずにプロセスが停止する場合があります。適切なプロセス監視およびシステム再起動の機能が、常にすべてのシステム・プロセスを監視し、必要な場合には再起動します。
クラスタ化: システムのコンポーネントをクラスタ化することで、ランタイム処理や管理性に関して、クライアントからはコンポーネントが機能的に単一のエンティティであるかのように見えます。クラスタは、単一または複数のコンピュータ上で動作し、同じワークロードを共有する一連のプロセスです。クラスタ化と冗長性の間には密接な関係があります。クラスタは、システムに冗長性を提供します。
構成管理: クラスタ化された類似コンポーネントのグループは、通常、共通の構成を共有する必要があります。適切な構成管理により、コンポーネントが同じ着信リクエストに対して同じ応答を返すことが保証され、コンポーネント間で構成の同期を取ることができ、高可用性の構成管理によって管理の停止時間が減少します。
状態のレプリケーションとルーティング: ステートフルなアプリケーションの場合は、クライアントの状態をレプリケートでき、リクエストを処理するプロセスで障害が発生した場合でもリクエストのステートフルなフェイルオーバーが可能です。
サーバーのロード・バランシングとフェイルオーバー: 同じサーバー・コンポーネントの複数のインスタンスを使用できる場合は、これらのコンポーネントに対するクライアントのリクエストをロード・バランスして、各インスタンスのワークロードをほぼ同じにすることができます。ロード・バランシング・メカニズムを導入すると、インスタンスが冗長になります。いずれかのインスタンスで障害が発生した場合は、そのインスタンスに対するリクエストを、動作しているインスタンスに送ることができます。
高可用性のOCMS環境の構成には、デプロイするOCMSトポロジに応じて、次の主要な手順が含まれます。
OCMSノードの高可用性クラスタの設定: 各OCMSノードをOPMNと関連付けて、管理可能なクラスタを構成します。
高可用性のためのOCMS SIPコンテナの構成: Application Server ControlコンソールのMBeanブラウザを使用して、高可用性に影響するSIPサーブレット・コンテナのパラメータを構成します。
高可用性のためのEdge Proxyノードの構成: オプション。OCMSトポロジでEdge Proxyノードを使用する場合にのみ必要です。
高可用性SIPサーブレット・アプリケーションの構成: SIPサーブレット・アプリケーションのディスクリプタ・ファイルを編集し、高可用性のサポートを有効にします。各アプリケーションに状態のレプリケーションを構成します。
オーバーロード・ポリシーの構成: オプション。OCMSトポロジでProxy Registrarを使用する場合にのみ必要です。
表5-1 追加情報
詳細な情報 | 関連項目: |
---|---|
OCMSのデプロイメント・トポロジ |
このガイドの第2章「デプロイメント・トポロジ」 |
OCMSのインストール |
Oracle Communication and Mobility Serverのインストレーション・ガイド |
高可用性OCMSクラスタがサポートするオペレーティング・システム |
『Oracle Communication and Mobility Server Certification Guide』 |
高可用性クラスタ化されたOracle Application Server環境の構成 |
|
注意: UDPを使用する場合は、すべてのサーバーを同一のサブネットまたはスイッチに配置することで、巨大なUDPパッケージのデフラグメンテーションが発生しないようにします。 |
Edge Proxyノードを含む各OCMSノードを、高可用性をサポートするように構成する必要があります。
OCMSサーバーのクラスタをセットアップする基本的な手順を次に示します。
ノードとOPMNの関連付け: Oracle Process Manager and Notification Serverは、単一または複数のOracle Application Serverコンポーネントおよびインスタンスのプロセス制御と監視のためのコマンドライン・インタフェースを提供します。OPMNを使用すると、OCMSの各ノードとそのサブコンポーネントを起動および停止できます。
クラスタの起動: OPMNでクラスタを起動すると、すべてのOCMSノードがOPMNと正しく関連付けられており、クラスタとして認識されていることが示されます。
クラスタのステータスの確認: OPMNまたはEnterprise Managerを使用して、クラスタの各ノードが稼働していることを確認できます。
クラスタの停止: OCMSノードのクラスタを設定して検証したら、各SIPコンテナを高可用性用に構成する前にクラスタを必ず停止します(「高可用性のためのOCMS SIPコンテナの構成」を参照)。
OCMSノードのクラスタを設定するには、ノードをOPMNと関連付ける必要があります。次の3つの方法があります。
Oracle Application Serverのインストール時のクラスタ構成。詳細は、Oracle Application Serverのインストレーション・ガイドを参照してください。
関連項目: OPMNを使用したクラスタの構成と管理の詳細は、『Oracle Process Manager and Notification Server管理者ガイド』を参照してください。 |
この方法(Oracleで推奨する方法)では、クラスタ内の各Oracle Application Serverインスタンスに、同じマルチキャスト・アドレスとポートを定義します。この方法の長所は、クラスタ内のOracle Application Serverインスタンスごとに名前を指定する必要がないことです。マルチキャスト・アドレスとポートを編集することで、クラスタのインスタンスを動的に追加または削除できます。
同じクラスタにグループ化する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とポートを使用します。
手順1でコマンドを実行した各Oracle Application Serverインスタンスでopmnctl reload
を実行し、更新したopmn.xml
ファイルをOPMNに読み込みます。
$ORACLE_HOME/opmn/bin/opmnctl reload
Oracleでは動的検出方法によるノードとOPMNの関連付けをお薦めしていますが、opmn.xml
ファイル内のOracle Application Serverインスタンスをインスタンスごとに実行するノードの名前を指定し、クラスタを定義することもできます。たとえば、4つのインスタンス(node1.example.com、node2.example.com、node3.example.com、node4.example.com)をクラスタ化するには、次のように検出サーバー方法を使用し、それらのノードとOPMNを関連付けます。
すべてのノードでOracle Application Serverを実行します。
クラスタのトポロジを保持する検出サーバーとして、1つのインスタンスを指定します(この例の場合は、node1.excample.comがクラスタの検出サーバーとして機能します。)。
クラスタ内のすべてのインスタンスの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>
すべてのサーバー・インスタンスでopmnctl reload
を実行し、更新したopmn.xml
ファイルをOPMNにロードします。
$ORACLE_HOME/opmn/bin/opmnctl reload
OPMNを使用し、クラスタの各インスタンスで次のコマンドを実行して、クラスタを起動します。
cd ORACLE_HOME/opmn/bin/ $ORACLE_HOME/opmn/bin/opmnctl startall
クラスタのOCMSノードのステータスを確認するには、次のようにします。
クラスタ内の任意のSIPコンテナで稼働しているEnterprise ManagerのURIを、Webブラウザで入力します。
http://<SIP container URI>:<port number>/em
プロンプトが表示されたら、管理者のユーザー名とパスワードを入力します。
Enterprise Managerに、クラスタ・トポロジのステータスが表示されます。
クラスタのステータスを確認した後、OPMNを使用してクラスタのノードを停止し、SIPコンテナの構成を継続できるようにします(「高可用性のためのOCMS SIPコンテナの構成」を参照)。
OCMSを停止するには、クラスタの各ノードで次のコマンドを実行します。
cd ORACLE_HOME/opmn/bin/ $ORACLE_HOME/opmn/bin/opmnctl stopall
Application Server ControlコンソールのMBeanブラウザを使用し、各SIPアプリケーション・サーバー・ノードのMBeanで、次のパラメータを構成します。
SIPContainer MbeanのEdge Proxyパラメータを、Edge ProxyのSIP URIを示すように構成します。また、複数のEdge Proxyを使用する場合はサード・パーティのロード・バランサを示すように構成します。
次の形式を使用します。
SIP:<Edge Proxy or Load Balancer IP address>:<port>;lr
次の形式でDistributableRecordRouteパラメータを構成します。
SIP:<SIP Container IP address>:<port>
追加されているトランスポート方式(transport=tcp
など)を削除し、Edge ProxyとOCMSの間で使用するトランスポートの種類を有効にします。
次の形式を使用してRecordRouteパラメータを構成します。
SIP:<SIP Container IP address>:<port>
追加されているトランスポート方式(transport=tcp
など)を削除し、Edge ProxyとOCMSの間で使用するトランスポートの種類を有効にします。
注意: ロード・バランサでは、Edge Proxyサーバーに送信されるUDPデータグラムのスティッキー設定を必ず無効にしてください。UDPでデータグラムを送信する場合のスティッキー設定の無効化の詳細は、ロード・バランサのドキュメントを参照してください。 |
高可用性のためにEdge Proxyノードを構成するには、次のようにします。
「OCMSノードの高可用性クラスタの設定」および「高可用性のためのOCMS SIPコンテナの構成」で説明されているように、Edge Proxyを実行するOCMSノードごとに高可用性の構成を行います。
SIPContainer Mbeanのedgeproxyパラメータを次のいずれかに示します。
Edge ProxyノードのIPアドレス
複数のEdge Proxyを使用している場合は、サード・パーティのロード・バランサまたはDNSサーバー(クライアントがDNS参照を使用して接続する場合)の仮想IPアドレスまたはホスト名
注意: 複数のEdge Proxyノードと1つのロード・バランサを使用する高可用性環境でOCMSを設定する場合、ロード・バランサ上のEdge Proxyと仮想サーバーのSIPポートは同じにする必要があります。 |
SIPコンテナ・ノードがEdge Proxyノードに対してpingを実行する間隔、および許容されるping失敗最大回数(この回数を超えると、Edge Proxyノードは応答しないSIPコンテナをルーティング・テーブルから削除します)を構成します。これらのパラメータにより、Edge ProxyノードはSIPコンテナ・ノードの状態を監視できます。
トポロジ内のEdge Proxyノードごとに、次の構成を行います。
Application Server ControlコンソールのMBeanブラウザで、edgeproxy Mbeanをクリックします。
次のいずれかを示すようにRecordRouteパラメータを構成します。
ロード・バランサを使用しない単一のEdge Proxyの場合: パラメータにEdge ProxyノードのIPアドレスを設定します。
ロード・バランサまたはDNSサーバーを使用する複数のEdge Proxyの場合: パラメータに、サード・パーティのロード・バランサまたはDNSサーバー(クライアントがDNS参照を使用して接続する場合)の仮想IPアドレスまたはホスト名を設定します。
edgeproxy.xml
ファイル(例5-2のsdp/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>
edgeproxy.xml
ファイルでは、必要委応じてnat-traverse
要素を変更します。
Edge ProxyがSIPクライアントによるNAT(Network Address Translators)の横断を有効にする場合は、値をtrue
(デフォルト)に設定します。Oracle Communicatorで対応するデフォルト値を設定する必要があります。
NATの横断を使用しない場合は、この属性にfalse
を設定します。NATの横断の無効化の詳細は、「Edge Proxyによって有効化されたNATの横断の無効化」を参照してください。
次のようにして、クラスタ内のEdge Proxyノードのステータスを確認します。
詳細は、Oracle Communication and Mobility Serverのインストレーション・ガイドの「クラスタ環境でのEdge Proxyを使用したOCMSの構成」を参照してください。
NATの横断により、SIPユーザー・エージェントがファイアウォールまたはNATの背後にあっても、SIPユーザー・エージェントにアクセスできます。ファイアウォールまたはNATの背後にあるSIPクライアントをサポートするために、プロキシ・サーバーではPath拡張ヘッダー・メカニズム(RFC 3327を参照)を使用します。SIPクライアントはこれにより、特定のパスに従って、ネットワーク全体でNATおよびファイアウォールの横断を有効にすることができます。Edge ProxyでNAT横断機能を有効にすると、OCMSクラスタはREGISTERリクエストにPathヘッダー・フィールドを挿入することにより、Path拡張ヘッダー・メカニズムをサポートします。
デフォルト時、NATの横断はedgproxy.xml
で有効になっています(例5-2ではnat-traverse enabled=true
)。この機能を無効にするには、次のようにします。
Edge Proxyは、動作している場合、次のコマンドを入力して停止させます。
$ORACLE_HOME/opmn/bin/opmnctl stopproc process-type=EdgeProxy
edgeproxy.xml
(場所はORACLE_HOME/sdp/edgeproxy/conf/edgeproxy.xml
)のnat-traverse
要素を、次のように編集します。
<nat-traverse enabled="false"/>
次のコマンドを使用して、Edge Proxyを起動します。
$ORACLE_HOME/opmn/bin/opmnctl startproc process-type=EdgeProxy
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より入手可能)に従ってクラスタが構成されている場合は、このかぎりではありません。 |
ここでは、OCMSノードのクラスタにデプロイされたSIPサーブレット・アプリケーションに高可用性を構成する方法について説明します。
SIPサーブレット・アプリケーションでの高可用性の有効化: デプロイを行う前に、各アプリケーションのディスクリプタ・ファイル(web.xml
およびsip.xml
)を高可用性用に構成する必要があります。各アプリケーションのorion-application.xml
ファイルでも、高可用性を構成する必要があります。
アプリケーション・セッション・データのレプリケーションの構成: ノードで障害が発生した場合は、各SIPサーブレット・アプリケーションのセッション・データを、クラスタ内の他のノードにレプリケートできます。
デプロイ済のSIPサーブレット・アプリケーションに対する高可用性の構成: すでにデプロイされているアプリケーションに、高可用性を構成することもできます。
アプリケーション・レベルでの高可用性の無効化: SIPサーブレット・アプリケーションから、高可用性のサポートを削除できます。
OCMSのSIPサーブレット・アプリケーションのアップグレード: デプロイ済のSIPサーブレット・アプリケーションでローリング・アップグレードを実行する方法を説明します。
注意:
|
高可用性のSIPサーブレット・アプリケーションを構成するには、次のようにします。
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>
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>
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-colocation にfalse を設定してください。複数のOracle Application Serverインスタンスが同じマシンでインスタンス化されている場合は、default-web-site.xml 、jms.xml 、rmi.xml の各構成ファイルで、インスタンスごとに異なるリスナー・ポートを指定する必要があります。 |
write-quota
: アプリケーションの状態をレプリケートする必要のある他のグループ・メンバーの数です。この属性を使用して状態が書き込まれるノードの数を制限することで、オーバーヘッドを減らすことができます。デフォルト値は1
です。
<cluster>
要素とそのサブ要素の追加情報については、『Oracle Containers for J2EE構成および管理ガイド』の「アプリケーションのクラスタリングの構成」を参照してください。
注意: orion-application.xml ファイル内の属性に対しては、正しいスペルを使用してください。スペルが間違っていても、エラー・メッセージが出力されないからです。たとえば、クラスタ構成セクションでstart-port のスペルをstart-prt と間違えると、レプリケーションが開始された旨が表示されますが、セッションのレプリケーションは機能しません。 |
各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-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サーブレット・アプリケーションをアンデプロイします。
アプリケーションのEARを解凍します。
「SIPサーブレット・アプリケーションでの高可用性の有効化」で説明されているように、sip.xml
ファイルとweb.xml
ファイルを変更して<distributable>
要素を追加します。sip.xml
ファイルおよびweb.xml
ファイルを編集するには、次のようにします。
新しいフォルダを作成し、名前を<Your SIP application>
にします。
新しいフォルダにEARファイルを解凍します。
EARファイルに含まれるWARファイルを、フォルダ<Your SIP application>/<WAR module name>
に解凍します。
次のファイルを編集します。
<Your SIP application>/<WAR module name>/WEB-INF/sip.xml <Your SIP application>/<WAR module name>/WEB-INF/web.xml
<Your SIP application>/<WAR module name>
の下で、元のWARファイル名を使用してWARファイルの内容を再パッケージングします。<Your SIP application>
フォルダ内の元のWARファイルを、作成したばかりの新しいファイルに置き換えます。
<Your SIP application>/<WAR module name>
フォルダを削除します。
<Your SIP application>
の内容をEARファイルにパッケージングします。元のEARファイルのファイル名を使用します。
SIPサーブレット・コンテナにアプリケーションのEARを再デプロイします。
クラスタからアプリケーションを削除するには、次のようにします。
テキスト・エディタで、アプリケーション固有のorion-application.xml
ファイルを開きます。
<cluster>
要素のenabled
属性をfalse
に設定します。詳細は、「アプリケーション・セッション・データのレプリケーションの構成」を参照してください。
次に例を示します。
<orion-application ... > ... <cluster enabled="false"> ... </cluster> </orion-application>
orion-application.xml
ファイルを保存します。
SIPサーブレット・アプリケーションは、停止時間を最小限にするローリング・アップグレード手順を使用してアップグレードできます。
OCMSのSIPサーブレット・アプリケーションのローリング・アップグレードを実行するには、次のようにします。
SIPサーブレット・アプリケーションをアップグレードするOCMSノードで、次のコマンドを実行してノードで稼働しているすべてのOCMSプロセスを停止します。
$ORACLE_HOME/opmn/bin/opmnctl shutdown
クラスタからSIPアプリケーション・サーバーを削除するには、ORACLE_HOME/opmn/conf/opmn.xml
ファイルで<topology>
要素をコメント化します。
次のコマンドを実行して、SIPコンテナを再起動します。
$ORACLE_HOME/opmn/bin/opmnctl startall
クラスタから外したSIPコンテナのSIPサーブレット・アプリケーションをアップグレードします。
クラスタに戻すことができるように、SIPコンテナを再びシャットダウンします。
$ORACLE_HOME/opmn/bin/opmnctl shutdown
クラスタにSIPコンテナを戻すには、opmn.xml
ファイルで<topology>
要素のコメントを外します。
次のコマンドを実行して、SIPコンテナをクラスタに戻します。
$ORACLE_HOME/opmn/bin/opmnctl startall
進行中のすべてのコールが完了した後で、SIPサーブレット・アプリケーションはアップグレードされます。
残りの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の各属性を大きな値に設定します。