Oracle WebLogic Server 12c: クラスタ内のHTTPセッションの管理

<このテキストを削除しないでください。これは、ブラウザ実行時に生成される"主要"なトピック一覧のプレースホルダです。>

目的

このチュートリアルでは、Oracle WebLogic Server 12cクラスタのHTTPセッション・レプリケーション機能を設定し、テストする方法について説明します。 ここでは、インメモリ・レプリケーションとJDBC(データベース)レプリケーションの両方をテストします。 JDBCレプリケーションを使用するには、アクティブなJDBCデータソースが必要です。

所要時間

約45分

概要

Webアプリケーションに対してインメモリ・レプリケーションが有効化されている場合、WebLogic Serverはクラスタ内のあるサーバー(プライマリ)から同じクラスタ内の別のサーバー(セカンダリ)へとセッション・ステートをコピーします。 セカンダリ・サーバー上のレプリカは、プライマリ・サーバーの障害発生時に使用できるように最新の状態に維持されます。

クライアントがクラスタ内のサーバーに接続してプライマリ・セッション・ステートを作成すると、プライマリ・ステートをホスティングしているサーバーはクラスタ内の残りのサーバーに対して順位付けを行うことで、セカンダリ・ステートをホスティングするサーバーを決定します。 サーバーの順位は次の組合せを使用して割り当てられます。

プライマリ・サーバーに障害が発生すると、別のサーバーがクライアントを引き継ぎ、新しいプライマリ・サーバーとなります。 このサーバーがセカンダリ・サーバーに接続してセッション・データを受け取り、新しいセカンダリ・サーバーが選ばれます。

永続JDBCレプリケーションでは、データベースがセッション・オブジェクトを保存するように設定されます。 この設定が行われると、クラスタ内の各サーバー・インスタンスはJDBCデータソースを使用してデータベース・アクセスを共有するようになります。 この方法では、すべてのサーバーからアクセスできるデータベースにデータが保存されるため、プライマリ・サーバーやセカンダリ・サーバーは必要ありません。 ただし、インメモリ・レプリケーションと比べると、JDBCレプリケーションでは大幅なパフォーマンス低下が発生します。

クラスタのレプリケーション設定は、クラスタに配置されたアプリケーションごとに個別に行います。 これらの設定を変更するには、アプリケーションのXMLデプロイメント・ディスクリプタ・ファイル・ディレクトリを更新するか、またはデプロイメント・プランを作成します。

ソフトウェア要件

ソフトウェア要件は、以下のとおりです。

前提条件

このチュートリアルを開始する前に、次のOracle by Exampleチュートリアルを完了している必要があります。

優先レプリケーション境界の割当て

カスタムのクラスタ・レプリケーション・グループ設定を行うには、以下の手順を実行します。

.

ドメインの管理サーバーがまだ実行されていない場合は、これを起動します。 ターミナル・ウィンドウでドメイン・ディレクトリに移動し、次のコマンドを実行します。

./startWebLogic.sh

ユーザー名とパスワードを入力するよう指示されたら、ドメイン管理者の資格証明を入力します。

 

.

WebLogicクラスタ内のいずれかのサーバー(dizzy1dizzy2dizzy3)が実行されている場合は、これを停止します。

レプリケーション・グループを変更しても、実行中のサーバーに対しては有効になりません。

 

.

Webブラウザを開き、ドメインの管理コンソールのURLを入力します。 このチュートリアルでは、http://host01.example.com:8001/consoleが使用されました。

注:使用するドメイン管理サーバーのホスト名とポートを指定してください。

Welcome画面で、サーバー起動時に入力したユーザー名とパスワードを使用してログインします。

 

.

Change Centerで、「Lock & Edit」ボタンをクリックします。

 

.

Domain Structureで「Environment」を開き、「Servers」をクリックします。

 

.

dizzy1」サーバーをクリックします。

 

.

Configuration」タブをクリックしてから「Cluster」サブタブをクリックします。

 

.

次の値を入力します。

フィールド
Replication Group dizzyRepGroup1
Preferred Secondary Group dizzyRepGroup2

 

Save」をクリックします。

 

.

dizzy2サーバーに対して上記ステップを繰り返します。

Replication GroupPreferred Secondary Groupには同じ値を設定します。

 

.

dizzy3」サーバーを選択します。

上記ステップを繰り返します。今回は、Replication GroupPreferred Secondary Groupに対して反対の値を設定します。

フィールド
Replication Group dizzyRepGroup2
Preferred Secondary Group dizzyRepGroup1

 

.

Change Centerパネルで、「Activate Changes」ボタンをクリックします。

 

.

WebLogicクラスタ内のすべてのサーバー(dizzy1dizzy2dizzy3)を再起動します。

Oracle WebLogic Server 12c:ノード・マネージャの構成と使用チュートリアルの説明に従ってノード・マネージャを構成し、開始している場合、管理コンソールからこれらの管理対象サーバーを起動できます。 それ以外の場合は、コマンドラインから各サーバーを起動します。 次に例を挙げます。

./startManagedWebLogic.sh dizzy1 host01.example.com:8001

 

サンプル・アプリケーションのインメモリ・レプリケーション設定とデプロイ

Webアプリケーションを、インメモリ・レプリケーションを使用するように設定してクラスタにデプロイするには、以下の手順を実行します。

.

Webアプリケーションshoppingcart.warをダウンロードし、 WebLogicドメインからアクセスできる場所に保存します。 このチュートリアルでは、/u01/app/oracle/Middleware/user_projects/applicationsにファイルが保存されました。

 

.

jarunzipなどのアーカイブ・ユーティリティを使用して、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>

変更を保存します。

 

.

jarzipなどのアーカイブ・ユーティリティを使用して、アプリケーション・アーカイブ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レプリケーションをサポートするためのデータベースの初期化

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ファイルが現在のディレクトリ以外にある場合、コマンドでフルパスを指定します。 次に例を挙げます。
@/mypath/jdbc_replication_oracle.sql

 

.

WL_SERVLET_SESSIONSという新しい表が作成されていることを確認します。

SQL> select count(*) from WL_SERVLET_SESSIONS;

 

.

SQL Plusセッションは開いたままにしておきます。

 

JDBCデータソースからクラスタへのターゲット設定

既存データソース(以前のチュートリアルで作成したもの)のターゲットをクラスタ全体に変更するには、以下の手順に従います。

.

管理コンソールへ戻り、Change Centerパネルで、「Lock & Edit」をクリックします。

次に、Domain Structureパネルで「Services」を開き、「Data Sources」を選択します。

 

.

既存の「dizzyworldDS」データソースを選択します。

 

.

Targets」タブをクリックします。

 

.

Clustersセクションで「All servers in the cluster」オプションを選択し、 「Save」をクリックします。

 

.

Change Centerパネルで、「Activate Changes」ボタンをクリックします。

 

WebアプリケーションのJDBCレプリケーション設定

アプリケーションが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」をクリックします。

 

JDBCレプリケーションのテスト

セッション・レプリケーション設定を検証するには、以下の手順を実行します。

.

再度、ブラウザでshoppingcartアプリケーションを表示します。 いくつかのアイテムをショッピング・カートに追加します。

 

.

SQL Plusに戻り、WL_SERVLET_SESSIONS表に含まれる最新のデータを確認します。

SQL> select * from WL_SERVLET_SESSIONS;

行が存在し、WL_CONTEXT_PATH列の値がshoppingcart.warになっていることを確認します。

 

.

サーバー出力を使用して、現在セッションをホスティングしているサーバーを特定します。 このサーバーを停止します。

 

.

アプリケーションを使用して再度ショッピング・カートを表示し、中身が変わっていないことを確認します。

 

まとめ

このチュートリアルで学習した内容は、次のとおりです。

関連情報

著者

Hardware and Software Engineered to Work Together Copyright © 2012, Oracle and/or its affiliates. All rights reserved