このチュートリアルでは、Oracle WebLogic Server 12cクラスタのHTTPセッション・レプリケーション機能を設定し、テストする方法について説明します。 ここでは、インメモリ・レプリケーションとJDBC(データベース)レプリケーションの両方をテストします。 JDBCレプリケーションを使用するには、アクティブなJDBCデータソースが必要です。
約45分
Webアプリケーションに対してインメモリ・レプリケーションが有効化されている場合、WebLogic Serverはクラスタ内のあるサーバー(プライマリ)から同じクラスタ内の別のサーバー(セカンダリ)へとセッション・ステートをコピーします。 セカンダリ・サーバー上のレプリカは、プライマリ・サーバーの障害発生時に使用できるように最新の状態に維持されます。
クライアントがクラスタ内のサーバーに接続してプライマリ・セッション・ステートを作成すると、プライマリ・ステートをホスティングしているサーバーはクラスタ内の残りのサーバーに対して順位付けを行うことで、セカンダリ・ステートをホスティングするサーバーを決定します。 サーバーの順位は次の組合せを使用して割り当てられます。
プライマリ・サーバーに障害が発生すると、別のサーバーがクライアントを引き継ぎ、新しいプライマリ・サーバーとなります。 このサーバーがセカンダリ・サーバーに接続してセッション・データを受け取り、新しいセカンダリ・サーバーが選ばれます。
永続JDBCレプリケーションでは、データベースがセッション・オブジェクトを保存するように設定されます。 この設定が行われると、クラスタ内の各サーバー・インスタンスはJDBCデータソースを使用してデータベース・アクセスを共有するようになります。 この方法では、すべてのサーバーからアクセスできるデータベースにデータが保存されるため、プライマリ・サーバーやセカンダリ・サーバーは必要ありません。 ただし、インメモリ・レプリケーションと比べると、JDBCレプリケーションでは大幅なパフォーマンス低下が発生します。
クラスタのレプリケーション設定は、クラスタに配置されたアプリケーションごとに個別に行います。 これらの設定を変更するには、アプリケーションのXMLデプロイメント・ディスクリプタ・ファイル・ディレクトリを更新するか、またはデプロイメント・プランを作成します。
ソフトウェア要件は、以下のとおりです。
このチュートリアルを開始する前に、次のOracle by Exampleチュートリアルを完了している必要があります。
カスタムのクラスタ・レプリケーション・グループ設定を行うには、以下の手順を実行します。
. |
ドメインの管理サーバーがまだ実行されていない場合は、これを起動します。 ターミナル・ウィンドウでドメイン・ディレクトリに移動し、次のコマンドを実行します。 ./startWebLogic.sh ユーザー名とパスワードを入力するよう指示されたら、ドメイン管理者の資格証明を入力します。
|
||||||
|---|---|---|---|---|---|---|---|
. |
WebLogicクラスタ内のいずれかのサーバー(dizzy1、dizzy2、dizzy3)が実行されている場合は、これを停止します。 レプリケーション・グループを変更しても、実行中のサーバーに対しては有効になりません。
|
||||||
. |
Webブラウザを開き、ドメインの管理コンソールのURLを入力します。 このチュートリアルでは、http://host01.example.com:8001/consoleが使用されました。 注:使用するドメイン管理サーバーのホスト名とポートを指定してください。 Welcome画面で、サーバー起動時に入力したユーザー名とパスワードを使用してログインします。
|
||||||
. |
Change Centerで、「Lock & Edit」ボタンをクリックします。
|
||||||
. |
Domain Structureで「Environment」を開き、「Servers」をクリックします。
|
||||||
. |
「dizzy1」サーバーをクリックします。
|
||||||
. |
「Configuration」タブをクリックしてから「Cluster」サブタブをクリックします。
|
||||||
. |
次の値を入力します。
「Save」をクリックします。
|
||||||
. |
dizzy2サーバーに対して上記ステップを繰り返します。 Replication GroupとPreferred Secondary Groupには同じ値を設定します。
|
||||||
. |
「dizzy3」サーバーを選択します。 上記ステップを繰り返します。今回は、Replication GroupとPreferred Secondary Groupに対して反対の値を設定します。
|
||||||
. |
Change Centerパネルで、「Activate Changes」ボタンをクリックします。
|
||||||
. |
WebLogicクラスタ内のすべてのサーバー(dizzy1、dizzy2、dizzy3)を再起動します。 Oracle WebLogic Server 12c:ノード・マネージャの構成と使用チュートリアルの説明に従ってノード・マネージャを構成し、開始している場合、管理コンソールからこれらの管理対象サーバーを起動できます。 それ以外の場合は、コマンドラインから各サーバーを起動します。 次に例を挙げます。 ./startManagedWebLogic.sh dizzy1 host01.example.com:8001
|
Webアプリケーションを、インメモリ・レプリケーションを使用するように設定してクラスタにデプロイするには、以下の手順を実行します。
. |
Webアプリケーションshoppingcart.warをダウンロードし、 WebLogicドメインからアクセスできる場所に保存します。 このチュートリアルでは、/u01/app/oracle/Middleware/user_projects/applicationsにファイルが保存されました。
|
|---|---|
. |
jarやunzipなどのアーカイブ・ユーティリティを使用して、shoppingcartという名前のフォルダに対してアプリケーション・アーカイブを解凍します。 mkdir shoppingcart unzip -d shoppingcart shoppingcart.war
|
. |
shoppingcart/WEB-INF/weblogic.xmlファイルを編集します。 Insert session descriptor element hereというコメント行を探します。
|
. |
この行のすぐ下に次の行を新しく追加します。 <session-descriptor> <persistent-store-type>replicated_if_clustered</persistent-store-type> </session-descriptor> 変更を保存します。
|
. |
jarやzipなどのアーカイブ・ユーティリティを使用して、アプリケーション・アーカイブshoppingcart.warを再作成します。 rm shoppingcart.war cd shoppingcart zip -r ../shoppingcart.war *
|
. |
WebLogic Serverの管理コンソールに戻ります。
|
. |
Change Centerで、「Lock & Edit」ボタンをクリックします。
|
. |
Domain Structureパネルで、「Deployments」をクリックします。
|
. |
右側のDeploymentsセクションで、「Install」ボタンをクリックします。
|
. |
Current Locationフィールドを探します。 リンクを使用して、ダウンロードしたshoppingcart.warファイルの置かれた場所を参照します。 shoppingcart.warファイルとその横にラジオ・ボタンが表示されます。 このラジオ・ボタンを選択します。 コンソールによってPathフィールドが自動的に入力されます。 代わりに、Pathフィールドに手動でパスとファイル名を入力することもできます。 「Next」をクリックします。
|
. |
次の画面でInstall this deployment as an applicationオプションが選択されていることを確認します。 「Next」をクリックします。
|
. |
次の画面でクラスタ「dizzycluster」を選択し、 「Next」をクリックします。
|
. |
次の画面ですべてをデフォルト値のままにして、「Finish」をクリックします。
|
. |
Change Centerパネルで、「Activate Changes」ボタンをクリックします。
|
. |
Deployments表で、shoppingcartアプリケーションの左側にあるチェック・ボックスを選択します。 Startドロップダウン・リストを使用して「Servicing all requests」オプションを選択します。
プロンプトが表示されたら「Yes」をクリックして処理を続行します。
|
セッション・レプリケーション設定を検証するには、以下の手順を実行します。
. |
ターミナル・ウィンドウを開き、<WEBTIER_HOME>/instances/instance1/binディレクトリへ移動します。 このチュートリアルで使用した<WEBTIER_HOME>は/u01/app/oracle/Middleware/Oracle_WT1です。
|
|---|---|
. |
次のコマンドを実行します。 ./opmnctl status
|
. |
コマンド出力から、HTTP Serverプロセスohs1が実行中("Alive")であることを確認します。
実行中でない場合は、次のコマンドを使用してプロセスを開始します。 ./opmnctl startall
|
. |
HTTP Serverプロキシ経由で、ブラウザからshoppingcartアプリケーションを表示します。 デフォルトのポートは7777です。 http://<host>:7777/shoppingcart 次に例を挙げます。 http://host01.example.com:7777/shoppingcart
|
. |
「Go Shopping」リンクをクリックします。 「Add to shopping cart」リンクを使用して、カートにアイテムを追加します。
|
. |
「Back to Home Page」リンクをクリックします。 上記手順を繰り返して、カートに2番目のアイテムを追加します。 終了したら、「View Shopping Cart」リンクをクリックします。
|
. |
WebLogicクラスタ内のサーバーを起動したターミナル・ウィンドウを見つけます。 アプリケーションの出力メッセージを使用して、ユーザー・セッションが固定されているサーバー(プライマリ・サーバー)を特定します。 次に例を挙げます。 added new element: package of 5 legal pads Your shopping cart includes: Item: box of 12 pens (black) price: 4.99 Item: package of 5 legal pads price: 15.99" コマンドラインではなくノード・マネージャからサーバーを起動している場合、出力ログ・ファイル(<サーバー名>.out)を参照する必要があります。
|
. |
セッションをホスティングしているプライマリ・サーバーを停止します。 [Ctrl]を押しながら[C]キーを押すか、またはLinuxのkillコマンドを使用します。
|
. |
Webブラウザに戻り、「Back to Home Page」をクリックしてから、再度「View Shopping Cart」をクリックします。 ショッピング・カートの中身が変わっていないことを確認します。
|
. |
再度、サーバーの出力メッセージを使用して、現在リクエストを処理しているサーバーを特定します。
|
. |
停止したサーバーを再起動します。 Webブラウザを閉じます。
|
JDBCレプリケーションに必要な表をデータベース内に作成するには、以下の手順を実行します。
. |
Oracleデータベースを実行しているマシンに対して、SQLスクリプトjdbc_replication_oracle.sqlをダウンロードします。
|
|---|---|
. |
sysdbaロールとしてSQL Plusを起動します。 $ $ORACLE_HOME/bin/sqlplus / as sysdba
|
. |
次のコマンドを使用して、SQLスクリプトを実行します。 SQL> @jdbc_replication_oracle.sql SQL> commit;
SQLファイルが現在のディレクトリ以外にある場合、コマンドでフルパスを指定します。 次に例を挙げます。
|
. |
WL_SERVLET_SESSIONSという新しい表が作成されていることを確認します。 SQL> select count(*) from WL_SERVLET_SESSIONS;
|
. |
SQL Plusセッションは開いたままにしておきます。
|
既存データソース(以前のチュートリアルで作成したもの)のターゲットをクラスタ全体に変更するには、以下の手順に従います。
. |
管理コンソールへ戻り、Change Centerパネルで、「Lock & Edit」をクリックします。 次に、Domain Structureパネルで「Services」を開き、「Data Sources」を選択します。
|
|---|---|
. |
既存の「dizzyworldDS」データソースを選択します。
|
. |
「Targets」タブをクリックします。
|
. |
Clustersセクションで「All servers in the cluster」オプションを選択し、 「Save」をクリックします。
|
. |
Change Centerパネルで、「Activate Changes」ボタンをクリックします。
|
アプリケーションがJDBCセッション・レプリケーションを使用するように設定するには、以下の手順を実行します。
. |
再度、shoppingcart/WEB-INF/weblogic.xmlファイルを編集します。
|
|---|---|
. |
既存の<session-descriptor>を次のとおりに変更します。 <session-descriptor> <persistent-store-type>jdbc</persistent-store-type> <persistent-store-pool>dizzyworldDS</persistent-store-pool> <persistent-store-table>WL_SERVLET_SESSIONS</persistent-store-table> </session-descriptor> 変更を保存します。
|
. |
再度、shoppingcart.warを作り直します。 rm shoppingcart.war cd shoppingcart zip -r ../shoppingcart.war *
|
. |
管理コンソールへ戻り、Change Centerパネルで、「Lock & Edit」をクリックします。
|
. |
Domain Structureパネルで「Deployments」をクリックします。
|
. |
shoppingcartアプリケーションのチェック・ボックスを選択し、 「Update」をクリックします。
|
. |
「Finish」をクリックします。 Change Centerで「Activate Changes」をクリックします。
|
セッション・レプリケーション設定を検証するには、以下の手順を実行します。
. |
再度、ブラウザでshoppingcartアプリケーションを表示します。 いくつかのアイテムをショッピング・カートに追加します。
|
|---|---|
. |
SQL Plusに戻り、WL_SERVLET_SESSIONS表に含まれる最新のデータを確認します。 SQL> select * from WL_SERVLET_SESSIONS; 行が存在し、WL_CONTEXT_PATH列の値がshoppingcart.warになっていることを確認します。
|
. |
サーバー出力を使用して、現在セッションをホスティングしているサーバーを特定します。 このサーバーを停止します。
|
. |
アプリケーションを使用して再度ショッピング・カートを表示し、中身が変わっていないことを確認します。
|
このチュートリアルで学習した内容は、次のとおりです。
![]()
|
Copyright © 2012, Oracle and/or its affiliates. All rights reserved |