この章では、Oracle WebLogic Serverのサーバー全体の移行およびサービス移行について述べ、さらにOracle Fusion Middlewareエンタープライズ・トポロジでそれらをどのように使用できるかについて説明します。
この章には次の項が含まれます:
Oracle WebLogic Serverは、可用性の高い環境にとって不可欠な要素である移行フレームワークを備えています。次の項では、エンタープライズ・デプロイメントでこのフレームワークを効果的に使用する方法を詳しく説明します。
Oracle WebLogic Serverの移行フレームワークでは、次の2つの種類の自動移行をサポートしています。
サーバー全体の移行。障害発生時に、管理対象サーバー・インスタンスが別の物理システムに移行されます。
サーバー全体の移行では、別の物理マシン上で、サーバー・インスタンスとそのすべてのサービスが自動的に再起動されます。サーバー移行が構成されているクラスタに属するサーバーで問題が発生すると、そのサーバーは、クラスタのメンバーをホストする他のマシンで再起動されます。
このためには、サーバーはリスニング・アドレスとして浮動IPを使用する必要があり、必要なリソース(トランザクション・ログとJMS永続ストア)が候補マシンで利用できなければなりません。
詳細は、『Oracle WebLogic Serverクラスタの管理』のサーバー全体の移行に関する項を参照してください。
サービスの移行。特定のサービスが、クラスタ内の別の管理対象サーバーに移行されます。
サービスの移行を理解するには、固定サービスを理解することが重要です。
WebLogic Serverクラスタでは、ほとんどのサブシステム・サービスがクラスタ内のすべてのサーバー・インスタンスに均一にホストされます。これにより、サーバー間の透過的なフェイルオーバーが可能になります。対照的に、JMS関連サービスやJTAトランザクション・リカバリ・サービス、ユーザー定義のシングルトン・サービスなどの固定サービスは、クラスタ内の個々のサーバー・インスタンスにホストされます。WebLogic Serverの移行フレームワークは、これらのサービスに対して、フェイルオーバーではなく、サービスの移行による障害回復をサポートしています。
詳細は、『Oracle WebLogic Serverクラスタの管理』の「サービスの移行フレームワークの理解」を参照してください。
サーバーまたはサービスが別のシステムで再起動されるときは、必要なリソース(サービス・データ、ログなど)が元のシステムとフェイルオーバー・システムの両方で利用できなければなりません。利用できなければ、サービスは、同じ操作をフェイルオーバー・システムで正常に再開できません。
このような理由から、サーバー全体の移行とサービスの移行の両方で、クラスタのすべてのメンバーが、同一のトランザクションとJMS永続ストア(ファイルベースかデータベースベースかを問わない)にアクセスできる必要があります。
これが、エンタープライズ・デプロイメントで共有記憶域が重要となる、もう1つの理由です。共有記憶域を適切に構成すると、手動フェイルオーバー(管理サーバーのフェイルオーバー)または自動フェイルオーバー(サーバー全体の移行またはサービスの移行)が発生したときに、元のマシンとフェイルオーバー・マシンの両方が、サービスを変更しなくても、確実に同一のファイル・ストアにアクセスできるようになります。
自動サービス移行の場合、固定サービスの再開が必要になったときは、フェイルオーバー前に固定サービスによって使用されていたJMSとJTAのログにアクセスできる必要があります。
サーバー全体の移行の場合、共有記憶域のほかに、仮想IPアドレス(VIP)の入手と割当ても必要になります。管理対象サーバーが別のマシンにフェイルオーバーされると、VIPは新しいマシンに自動的に再割り当てされます。たとえば、第5章でSOAHOST1VHN1、SOAHOST2VHN1の仮想IPを取得するのはこのためです。
サービスの移行には、VIPは必要ありません。
Oracle SOA Suiteエンタープライズ・デプロイメント内の大部分の製品とコンポーネントでは、固定サービスを使用します。しかし、一部のコンポーネントでは、自動サービス移行によるこれらのサービスの透過的なフェイルオーバーはサポートしていません。場合によっては、JMSとJTAのリソースを使用しているソフトウェアは、固定サービスが別のサーバーに移行されるときに、固定サービスの起動をフェイルオーバーできません。
そのため、一部のコンポーネントは、フェイルオーバーとデータ損失ゼロを目的に、サーバー移行が構成されます。
表19-1は、サーバー全体の移行と自動サービス移行を構成する必要のある、Oracle SOA Suite製品とコンポーネントをまとめたものです。
表19-1 Oracle SOA Suiteエンタープライズ・デプロイメントのサーバー移行要件
コンポーネント | サーバー全体の移行(WSM) | 自動サービス移行(ASM) |
---|---|---|
Oracle Web Services Manager (OWSM) |
NO |
NO |
Oracle SOA Suite |
YES |
NO |
Oracle Service Bus |
YES |
NO |
Oracle Business Process Management |
YES |
NO |
Enterprise Enterprise Scheduler |
NO |
NO |
Oracle Business Activity Monitoring |
NO |
YES |
Oracle B2B |
YES |
NO |
次の項では、エンタープライズ・デプロイメント内のサーバー全体の移行をサポートする製品に対して、サーバー全体の移行を構成する方法について説明します。
create tablespace leasingコマンドを使用して、サーバー移行リース・テーブルのユーザーおよび表領域を設定します。ドメイン名、クラスタ名およびサーバー名が競合しないかぎり、リース・テーブルは、サーバー移行が構成されている複数のクラスタで共有できます。リース・テーブルは、サーバーのタイム・スタンプとライブ・メッセージを保持するために使用されるため、使用されるデータベースの可用性が高いことと、データベース内のノードで同期されたクロックを使用することが重要になります。
次の手順を使用して、可用性の高いデータベースにユーザーとリース表領域を設定します。リース・テーブルは、サーバー全体の自動移行を有効にするために必要です。詳細は、『Oracle WebLogic Serverクラスタの管理』のリースに関する項を参照してください。
Leasing
という表領域を作成します。
たとえば、sysdba
ユーザーとしてSQL*Plusにログインし、次のコマンドを実行します。
SQL> create tablespace Leasing
logging datafile 'DB_HOME/oradata/orcl/leasing.dbf'
size 32m autoextend on next 32m maxsize 2048m extent management local;
Leasing
というユーザー名を作成し、リース表領域に割り当てます。
SQL> create user Leasing identified by password;
SQL> grant create table to Leasing;
SQL> grant create session to Leasing;
SQL> alter user Leasing default tablespace Leasing;
SQL> alter user Leasing quota unlimited on Leasing;
leasing.ddl
スクリプトを使用して、リース・テーブルを作成します。
次のいずれかのディレクトリにあるleasing.ddl
ファイルを、データベース・ホストにコピーします。
WL_HOME/server/db/oracle/db_version/
この例では、db_versionを、Oracleデータベースのバージョン番号に置き換えます。
Leasing
ユーザーとしてデータベースに接続します。
注意: リース ・ユーザーとして接続する必要があります。sysdba や他のユーザー・アカウントとして接続すると、スキーマが正常に作成されません。 |
leasing.ddl
をSQL*Plusで実行します。
SQL> @script_location/leasing.ddl;
リース・テーブルを作成したら、Oracle WebLogic Server管理コンソールでリース・テーブルのデータ・ソースを作成する必要があります。
エンタープライズ・デプロイメントでは、GridLinkのデータ・ソースを使用する必要があります。
Oracle WebLogic Server管理コンソールにログインします。
「チェンジ・センター」で「ロックして編集」をクリックします(まだこれを実行していない場合のみ)。
「ドメイン構造」ツリーで「サービス」を開き、「データ・ソース」を選択します。
データ・ソースの概要ページで、「新規」をクリックして「GridLinkデータ・ソース」を選択し、次の内容を入力します。
「名前」フィールドにデータ・ソースの論理名を入力します。たとえば、Leasingと入力します。
JNDIの名前を入力します。たとえば、jdbc/leasingです。
「データベース・ドライバ」には、Oracle Driver (Thin) for GridLink Connections Versions: Anyを選択します。
「次へ」をクリックします。
「トランザクション・オプション」ページで、「グローバル・トランザクションのサポート」チェック・ボックスを選択解除して「次へ」をクリックします。
「GridLinkデータ・ソース接続プロパティのオプション」画面で、「個別のリスナー情報の入力」を選択し、「次へ」をクリックします。
次の接続プロパティを入力します。
サービス名: データベースのサービス名を小文字で入力します。GridLinkデータ・ソースには、Oracle RACのサービス名を入力します。例:
soaedg.example.com
ホスト名とポート: RACデータベースのSCANアドレスとポートを、コロンで区切って入力します。例:
db-scan.example.com:1521
「追加」をクリックして、フィールドの下のリスト・ボックスにホスト名とポートを追加します。
SCANアドレスは、TCPプロトコルを使用してデータベース内の適切なパラメータを問い合せると、確認できます。
SQL>show parameter remote_listener; NAME TYPE VALUE -------------------------------------------------- remote_listener string db-scan.example.com
注意: Oracle Database 11gリリース1 (11.1)の場合は、各データベース・インスタンス・リスナーの仮想IPとポートを使用します。例:dbhost1-vip.mycompany.com (port 1521) および dbhost2-vip.mycompany.com (1521) Oracle Database 10gの場合は、マルチ・データ・ソースを使用してOracle RACデータベースに接続します。マルチ・データ・ソースの構成の詳細は、付録A「Oracle RACでのマルチ・データ・ソースの使用」を参照してください。 |
データベース・ユーザー名: Leasingと入力します。
パスワード: たとえば、welcome1などを入力します。
パスワードの確認: もう一度パスワードを入力し、「次へ」をクリックします。
「GridLinkデータベース接続のテスト」ページで、接続パラメータを確認して、「すべてのリスナーのテスト」をクリックします。
接続が成功したときに表示される通知の一例を示します。
Connection test for jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=db-scan.mycompany.com) (PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=soaedg.example.com))) succeeded.
「次へ」をクリックします。
「ONSクライアント構成」ページで、次の手順を実行します。
「FANの有効化」を選択してOracle FANイベントに登録し、それらのイベントを処理できるようにします。
ここにも、次のように、SCANアドレス: RACデータベースのONSリモート・ポート、データベースから報告されたONSリモート・ポートを入力し、「追加」をクリックします。
[orcl@db-scan1 ~]$ srvctl config nodeapps -s ONS exists: Local port 6100, remote port 6200, EM port 2016
「次へ」をクリックします。
注意: Oracle Database 11gリリース1 (11.1)の場合は、各データベースのONSサービスのホスト名とポートを使用します。次に例を示します。custdbhost1.mycompany.com (port 6200) および custdbhost2.mycompany.com (6200) |
「ONSクライアント構成のテスト」ページで、接続パラメータを確認して、「すべてのONSノードのテスト」をクリックします。
接続が成功したときに表示される通知の一例を示します。
Connection test for db-scan.mycompany.com:6200 succeeded.
「次へ」をクリックします。
「ターゲットの選択」ページで、サーバー移行が構成されるクラスタをターゲットとして選択し、「クラスタのすべてのサーバー」を選択します。
たとえば、Oracle SOA Suiteクラスタに対してサーバー全体の移行を構成している場合は、SOA_Clusterを選択します。サーバー全体の移行をサポートするコンポーネントについては、第19.1.3項「サーバー全体の移行とサービスの移行が必要となる製品およびコンポーネントの理解」を参照してください。
「終了」をクリックします。
「変更のアクティブ化」をクリックします。
この項では、サーバーが実行されている2つのノード上のノード・マネージャのプロパティ・ファイルを編集します。
次のファイルを探してテキスト・エディタで開きます。
MSERVER_HOME/nodemanager/nodmeanager.properties
nodemanager.properties
ファイルのStartScriptEnabled
プロパティをtrueに設定していない場合はtrueに設定します。
これは、ノード・マネージャが管理対象サーバーを起動するために必要です。
次のプロパティをnodemanager.properties
ファイルに追加して、サーバー移行が正常に動作するようにします。
Interface
Interface=eth0
このプロパティは浮動IP (eth0
など)のインタフェース名を指定します。
注意: サブ・インタフェース(eth0:1 、eth0:2 など)を指定しないでください。このインタフェースは、:0 または:1 なしに使用されます。
ノード・マネージャのスクリプトは、別の: |
NetMask
NetMask=255.255.255.0
このプロパティでは、インタフェースの浮動IPのネット・マスクを指定します。
UseMACBroadcast
UseMACBroadcast=true
このプロパティはARPパケットを送信する際にノードのMACアドレスを使用するかどうかを指定します。つまり、arpingコマンドで-b
フラグを使用するかどうかを指定します。
ノード・マネージャを再起動します。
これらのプロパティが適用されていることをノード・マネージャの出力(ノード・マネージャが起動したシェル)で確認します。適用されていないと、移行中に問題が発生する可能性があります。このコマンドの出力結果は、次のようになります。
... SecureListener=true LogCount=1 eth0=*,NetMask=255.255.255.0 ...
この項では、wlsifconfig.sh
スクリプトの環境とスーパーユーザー権限を設定します。このスクリプトは、移行中に、IPアドレスをマシンからマシンに転送するために使用します。このスクリプトは、通常はスーパーユーザーのみが利用できるifconfig
を実行できる必要があります。
wlisconfig.sh
スクリプトの詳細は、『Oracle WebLogic Serverクラスタの管理』のサーバー全体の自動移行の構成に関する項を参照してください。
wlsifconfig.sh
スクリプトを実行するためにシステムを準備する手順は、次の項を参照してください。
表19-2に記載されているコマンドは、各ホスト・コンピュータのPATH環境変数に必ず含めてください。
パスワードによる制限を設けずにsudo権限をWebLogicユーザー(oracle)に付与し、/sbin/ifconfig
バイナリおよび/sbin/arping
バイナリの実行権限を付与します。
注意: セキュリティ上の理由から、sudo を、wlsifconfig.sh スクリプトの実行に必要なコマンドのサブセットに限定する必要があります。
この必須の構成タスクを実行するためのsudo権限とsystem権限については、必要に応じてシステム管理者に問い合せてください。 |
/etc/sudoers内の次のエントリ例では、ifconfig
とarping
を実行するために、oracle
に対してsudo実行権限を付与しています。
Defaults:oracle !requiretty oracle ALL=NOPASSWD: /sbin/ifconfig,/sbin/arping
クラスタ内の移行を構成する手順は次のとおりです。
Oracle WebLogic Server管理コンソールにログインします。
「ドメイン構造」ウィンドウで、「環境」を開き、「クラスタ」を選択します。「クラスタのサマリー」ページが表示されます。
移行を構成するクラスタを、表の「名前」列でクリックします。
「移行」タブをクリックします。
「ロックして編集」をクリックします。
「移行可能サーバーの候補マシン」の「使用可能」フィールドで「SOAHOST1」と「SOAHOST2」を選択し、右矢印をクリックして「選択済み」に移動します。
自動移行に使用するデータ・ソースを選択します。この場合は、Leasingデータ・ソースを選択します。
「保存」をクリックします。
サーバー移行の候補となるマシンを設定します。管理対象サーバーすべてについてこのタスクを次のように実行する必要があります。
Oracle WebLogic Server管理コンソールの「ドメイン構造」ウィンドウで、「環境」を開き、「サーバー」を選択します。
移行を構成するサーバーを選択します。
「移行」タブをクリックします。
「サーバーの自動移行を有効化」を選択し、「保存」をクリックします。
これにより、ノード・マネージャはターゲット・ノード上の障害発生サーバーを自動的に起動できます。
アプリケーションとリソースのターゲット設定の詳細は、付録A「Oracle RACでのマルチ・データ・ソースの使用」を参照してください。
「移行の構成」セクションの「使用可能」フィールドで、移行先として許可するマシンを選択して、右向き矢印をクリックします。WLS_SOA1には「SOAHOST2」を選択します。WLS_SOA2には「SOAHOST1」を選択します。
ヒント: 「サーバーの概要」ページの「この表のカスタマイズ」をクリックし、「現在のマシン」を「使用可能」ウィンドウから「選択済み」ウィンドウへ移動すると、サーバーを実行しているマシンを確認できます。このサーバーが自動的に移行すると、構成と異なる内容になります。 |
「変更のアクティブ化」をクリックします。
管理サーバーと、サーバー移行が構成されたサーバーを再起動します。
この項の手順を実行して、サーバー全体の自動移行が適切に機能していることを確認します。
ノード1からテストする手順は次のとおりです。
管理対象サーバーのプロセスを停止します。
kill -9 pid
pidには、管理対象サーバーのプロセスIDを指定します。次のコマンドを実行すると、ノードのPIDを識別できます。
ps -ef | grep WLS_SOA1
ノード・マネージャのコンソール(killコマンドを実行したターミナル・ウィンドウ)を確認します。管理対象サーバーの浮動IPが無効になっていることを示すメッセージが表示されているはずです。
ノード・マネージャが管理対象サーバーの2回目の再起動を試行するのを待ちます。ノード・マネージャは30秒間待機してからこの再起動を試行します。
ノード・マネージャがサーバーを再起動し、サーバーが「実行中」状態になる前に、関連するプロセスを再度強制終了します。
サーバーが再びローカルで再起動されないことを示すメッセージがノード・マネージャによってログに記録されるようになります。
注意: 必要な再起動回数は、次の構成ファイルのRestartMax パラメータで設定されます。
MSERVER_HOME/servers/WLS_SOA1/data/nodemanager/startup.properties
デフォルト値は |
ノード2からテストする手順は次のとおりです。
ローカルのノード・マネージャのコンソールを確認します。ノード1で最後に管理対象サーバーの再起動が試行されてから30秒経過した後、ノード2のノード・マネージャによって、管理対象サーバーの浮動IPが有効になっていること、またこのノードでサーバーが再起動されていることが表示されます。
同じIPでsoa-infraコンソールにアクセスします。
管理コンソールからの検証
Oracle WebLogic Server管理コンソールを使用して、移行を検証することもできます。
管理コンソールにログインします。
左側のコンソールで、「ドメイン」をクリックします。
「監視」タブをクリックし、「移行」サブタブをクリックします。
「移行の状態」の表に、移行の状態に関する情報が表示されます。
注意: サーバーの移行後、そのサーバーを元のマシンにフェイルバックするには、Oracle WebLogic管理コンソールから管理対象サーバーを停止し、再起動します。適切なノード・マネージャが、もともと割り当てられていたマシン上の管理対象サーバーを起動します。 |
一般的なOracle SOA Suiteエンタープライズ・デプロイメントでは、Oracle BAMソフトウェアのみに自動サービス移行を構成する必要があります。
詳細は、第16.8項「Oracle BAMサーバーの自動サービス移行の構成」を参照してください。