ヘッダーをスキップ
Oracle® Fusion Middleware高可用性ガイド
12c (12.1.2)
E47984-02
  目次へ移動
目次

前
 
次
 

7 Web層コンポーネントの高可用性の構成

Oracle Fusion MiddlewareのWeb層は、エンド・ユーザーに最も近い、アーキテクチャの最も外側にあります。Web層のコンポーネントの主要なコンポーネントはOracle HTTP Serverです。この章では、Oracle HTTP Serverの高可用性の概要と構成手順について、次の各項で説明します。

7.1 Oracle HTTP Serverと高可用性の概要

Oracle HTTP Server (OHS)は、Oracle Fusion MiddlewareのWebサーバー・コンポーネントです。それは、Oracle WebLogic Server用のリスナーと、静的ページ、動的ページおよびWeb上のアプリケーションをホストするフレームワークを提供します。


関連項目:

OHSの操作の詳細は、次の各項を参照してください。

  • 『Oracle HTTP Serverの管理』のOracle HTTP Serverに関する項。この項には、基本的なOHSタスクの実行、OHSインスタンスの作成、サーバー・プロセスの管理と監視などに関する説明が含まれています。

  • 『Oracle Fusion Middleware Oracle HTTP Serverのインストールと構成』


7.2 Oracle HTTP Serverの単一インスタンスの特性

Oracle HTTP Serverは、Apacheインフラストラクチャをベースとしており、OHSのコア機能を拡張するためにOracleが開発したモジュールが含まれます。OHSには、クライアント・リクエストを処理するための次のコンポーネントが含まれます。

Oracle HTTP Serverは、フォワード・プロキシ・サーバーにも、リバース・プロキシ・サーバーにもなります。リバース・プロキシでは、様々なサーバーで処理されたコンテンツを1つのサーバーから送信されたように処理することができます。

7.2.1 Oracle HTTP ServerとOracle WebLogic Server

Oracle HTTP ServerにとってOracle WebLogicドメインは必須ではありませんが、通常はOracle WebLogicドメインと組み合せて使用します。Oracle HTTP Serverを管理コンソールに組み込むことで、一元的な管理や監視が実現するため、Oracle HTTP ServerはWebLogicドメインと関連付けることをお薦めします。

WebLogic管理対象サーバーへのリンクは、mod_wl_ohsモジュールを介して処理されます。このモジュールは、特定のタイプ(JSPなど)のリクエストのルーティング、およびURL、つまり特定の管理対象サーバーへのリクエストのルーティングによって構成されています。

一般に、Oracle HTTP ServerはWebLogic Serverクラスタのフロントエンドに使用します。Oracle HTTP ServerをWebLogic Serverクラスタのフロントエンドにする場合、WebLogicClusterという特殊なmod_wl_ohsディレクティブにより、クラスタ・メンバーをカンマ区切りリストで指定します。このプロセスは次のように機能します。

  1. 管理対象サーバーを必要とするリクエストがmod_wl_ohsで受信されると、そのリクエストは、ディレクティブにリストされているWebLogicクラスタ・メンバーの1つに送信されます。少なくとも1つ以上のサーバーが使用可能な状態になっており、リクエストに対応する必要があります。

  2. 管理対象サーバーがリクエストを受信すると、そのリクエストを処理して、クラスタ・メンバーの完全なリストをmod_wl_ohsに送り返します。

  3. mod_wl_ohsがその更新されたリストを受信すると、未知のサーバーが既知のサーバーのリストに動的に追加され、後続のリクエストはすべて完全なクラスタ・メンバー・リスト間でロード・バランシングされます。このプロセスは、mod_wl_ohsを更新したりOracle HTTP Serverを追加しなくても、新しい管理対象サーバーをクラスタに追加できるというメリットがあります。


注意:

開始時に現行のすべての管理対象サーバーをmod_wl_ohsディレクティブに含める必要はなく、リスト内に2つのクラスタ・メンバーがあれば、最初にコールされたときに機能する高可用性を設定できます。Oracle HTTP Serverの高可用性デプロイメントを実行する方法の詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverプロキシ・プラグインの使用』のOracle HTTP Server用のWebLogicプロキシ・プラグインの構成に関する項を参照してください。



関連項目:

Oracle WebLogicクラスタの詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverクラスタの使用』を参照してください。


7.3 Oracle HTTP Serverの起動とシャットダウンのライフサイクル

Oracle HTTP Serverが起動すると、HTTP(S)リクエストのリスニングおよび応答の準備が整います。

Microsoft Windowsシステムでのリクエスト処理モデルは、UNIXシステムでのモデルとは異なります。


関連項目:

OHS処理モデルの詳細は、『Oracle HTTP Server管理者ガイド』のOracle HTTP Server処理モデルに関する項を参照してください。


7.4 Oracle HTTP Serverの起動と停止

Oracle HTTP Serverの起動、停止および再起動は、Fusion Middleware ControlまたはWebLogic Scripting Tool (WLST)を使用して実行できます。WLSTの使用を予定している場合は、『Oracle Fusion Middleware管理者ガイド』のOracle WebLogic Scripting Tool (WLST)の使用のスタート・ガイドを参照してください。


関連項目:

OHSの起動と停止の詳細は、『Oracle HTTP Server管理者ガイド』のOracle HTTP Serverの起動、停止および再起動に関する項を参照してください。


7.5 Oracle HTTP Serverの高可用性アーキテクチャとフェイルオーバーに関する考慮事項

図7-1は、ロード・バランサの後方に配置された2つのOracle HTTP Serverを示しています。

図7-1 Oracle HTTP Serverの高可用性アーキテクチャ

この図については後の文で説明しています。
「図7-1 Oracle HTTP Serverの高可用性アーキテクチャ」の説明

ロード・バランサは、ユーザーからリクエストを受信して、それを接続されたOracle HTTP Serverに転送します。図7-1のロード・バランサでは、標準的なHTTP/HTTPSポート(80/443)でリクエストを受信しています。しかし、Oracle HTTP Serverにリクエストを渡すときは、まったく別のポートを使用します。この設定には、次の利点があります。

Unixベースのシステムでは、Oracle HTTP Serverをroot権限で起動する必要はありません。1024未満のポートを使用するプロセスを起動できるのは、rootのみです。

ロード・バランサは、稼働中のOracle HTTP Serverにリクエストをルーティングします。

図7-1には、Oracle HTTP ServerからWebLogic管理対象サーバーにリクエストが分散される仕組みも示しています。高可用性の場合、コンポーネントの各ペア(Oracle HTTP ServerとWeb Logic管理対象サーバー)は、別のホスト・コンピュータに存在することを前提としています。

このアーキテクチャは、2つのサーバーに分けることができます。また、より複雑な実装では、各コンポーネントを完全に別のサーバーに配置することもできます。

7.6 Oracle HTTP Serverの障害からの保護および予想される動作

Oracle HTTP Serverの障害は、プロセス障害ノード障害という2つのカテゴリに分類できます。プロセス障害は、個々のオペレーティング・システムで発生する可能性があります。一方、ノード障害は、Oracle HTTP Serverを実行しているホスト・コンピュータ全体の障害に及ぶ可能性があります。この項では、障害タイプと、それらが発生したときのシステムまたはプロセスの引継ぎについて説明します。

プロセス障害

ノード・マネージャは、Oracle HTTP Serverプロセスの保護と監視を行います。Oracle HTTP Serverプロセスに障害が発生すると、ノード・マネージャによって自動的にプロセスが再起動されます。

ノード障害

ノード全体に障害が発生したときに、1つ目のOracle HTTP Serverが応答しない場合、またはURLのpingを使用して障害が発生していると判断された場合は、その前面にあるロード・バランサによってリクエストが別のOracle HTTP Serverに送信されます。

WebLogic管理対象サーバーの障害

高可用性デプロイメントでは、Oracle WebLogic管理対象サーバーはクラスタの一部になります。管理対象サーバーのいずれかに障害が発生した場合、mod_wl_ohsによってアクティブなクラスタ・メンバーのいずれかにリクエストが自動的にリダイレクトされます。アプリケーションに状態が格納されている場合、状態のレプリケーションがクラスタ内で使用可能になり、これにより、リダイレクトされたリクエストが、同じ状態情報にアクセスできます。

データベース障害

通常、データベース障害が問題となるのはmod_oradavまたはmod_plsqlを使用しているときのみです。このデータベースがOracle Real Application Clusters (Oracle RAC)データベースの場合は、定義済のOracle RAC接続により障害の特性が判断されます。

クライアント接続のフェイルオーバーが構成されている場合、進行中のすべてのトランザクションはロールバックされ、データベースへの再接続が必要になります。

透過的アプリケーション・フェイルオーバー(TAF)が構成されている場合は、進行中のすべてのデータベースの書込みはロールバックされますが、データベースへの再接続が自動的に行われ、select文は自動的にリカバリされます。このシナリオでは、TAFはselect文のみをフェイルオーバーし、パッケージ変数は失われます。(TAFはJava Database Connectivity (JDBC) Oracle Call Interfaceドライバの機能です。この機能により、接続先のデータベース・インスタンスに障害が発生した場合でも、アプリケーションはデータベースに自動的に再接続できます。この場合、アクティブ・トランザクションはロールバックされます。

7.7 Oracle HTTP Serverのクラスタワイドの構成変更

Oracle HTTP ServerはFusion Middleware Controlによって個別に管理されます。Oracle HTTPサーバー構成はファイル・ベースであるため、いずれかのOracle HTTP Serverに対して行った変更は、その構成において他のOracle HTTP Serverに手動でコピーする必要があります。これは、htdocsディレクトリに格納されている静的HTMLファイルにも適用されます。

7.8 高可用性のためのOracle HTTP Serverの構成

この項では、Oracle HTTP Serverの高可用性デプロイメントの構成方法について、例を挙げて説明します。

この項の内容は次のとおりです。

7.8.1 前提条件

Oracle HTTP Serverの高可用性デプロイメントを構成する前に、次の前提条件を確認します。

7.8.1.1 ロード・バランサの構成

Oracle HTTP Serverにリクエストを分散させるには、使用可能なOracle HTTP Server間でHTTP(S)リクエストを分散させるために、外部ロード・バランサを使用する必要があります。外部ロード・バランサを使用している場合は、第2.1.1項「サード・パーティ製のロード・バランサの要件」で説明した次の機能を備えている必要があります。

  • 仮想サーバー名とポートを構成する機能

  • プロセス障害を検出する機能

  • Oracle HTTPおよびHTTPSのためにポート(HTTP、HTTPS)を監視する機能

  • SSLプロトコル交換(必要な場合)

次の項では、ロード・バランサを構成する手順について説明します。

ロード・バランサの仮想サーバー名とポートの構成

myapp.example.comなどの各アプリケーションに対して、ロード・バランサの仮想サーバー名および関連するポートを構成します。Oracle HTTP Serverのインストールでは、これらの仮想サーバーはHTTP接続に対して構成され、この接続はHTTPサーバー全体に分散されます。

サイトでHTTPおよびHTTPS接続のリクエストを処理する場合は、HTTPSリクエストはロード・バランサで終了し、そのリクエストをHTTPリクエストとして通過させることをお薦めします。これを行うには、ロード・バランサでプロトコルを変換できることが必要です。また、永続HTTPセッションを実行できるように構成する必要があります。

この例では、ロード・バランサが次のように構成されていると想定します。

  • 仮想ホスト: Myapp.example.com

  • 仮想ポート: 7777

  • サーバー・プール: Map

  • サーバー: WEBHOST1Port 7777WEBHOST2Port 7777

ポート番号の管理

多くのOracle Fusion Middlewareコンポーネントおよびサービスはポートを使用します。管理者は、これらのサービスが使用するポート番号を把握し、1つのホスト上の2つのサービスによって同じポート番号が使用されないようにする必要があります。

ほとんどのポート番号は、インストール中に割り当てられます。Oracle HTTP ServerからOracle WebLogic Serverに送信されるすべてのトラフィックは、すべてのファイアウォールを通じてアクセスできることが重要です。

7.8.1.2 WEBHOST1へのOracle HTTP Serverのインストール

WEBHOST1上にOracle HTTP Serverをインストールする方法については、『Oracle Fusion Middleware Oracle HTTP Serverのインストールと構成』のOracle HTTP Serverソフトウェアのインストールに関する項の手順を参照してください。

OHSインストールの検証

次のOracle HTTP Serverホーム・ページにアクセスするURLを使用して、インストールを確認します。

http://webhost1:7777/

7.8.1.3 仮想ホストの構成

使用するそれぞれの仮想ホストまたはサイト名に対して、Oracle HTTP Serverの構成にエントリを追加します。次のように、DOMAIN_HOME/config/fmwconfig/components/OHS/ohs_component_name/moduleconfディレクトリ内にvirtual_hosts.confという名前のファイルを作成します。

NameVirtualHost *:7777
<VirtualHost *:7777>
    ServerName http://myapp.example.com:80
    RewriteEngine On
    RewriteOptions inherit
    UseCanonicalName On
</VirtualHost>

SSL/SSLターミネーション(*)を使用する場合は、次のようになります

NameVirtualHost *:7777
<VirtualHost *:7777>
    ServerName https://myapp.example.com:443
    RewriteEngine On
    RewriteOptions inherit
    UseCanonicalName On
</VirtualHost>

7.8.1.4 mod_wl_ohs.confの構成

Oracle HTTP Serverのインストールと構成を終えたら、DOMAIN_HOME/config/fmwconfig/components/OHS/instances/componentNameディレクトリにあるmod_wl_ohs.confファイルを編集して、定義済のWebLogic管理対象サーバーにそれをリンクします。

mod_wl_ohs.confファイルを編集する方法の詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverプロキシ・プラグイン12.1.2の使用』のOracle HTTP Server用のWebLogicプロキシ・プラグインの構成に関する項を参照してください。

次にmod_wl_ohs.confエントリの例を示します。

LoadModule weblogic_module PRODUCT_HOME/modules/mod_wl_ohs.so
 
<IfModule mod_weblogic.c>
      WebLogicCluster apphost1.example.com:7050, apphost2.example.com:7050
      MatchExpression *.jsp
 </IfModule>
  
<Location /weblogic>
  SetHandler weblogic-handler
  WebLogicCluster apphost1.example.com:7050,apphost2.example.com:7050
  DefaultFileName index.jsp
</Location>

注意:

SSLターミネーションを使用しており、なおかつWebLogicにリクエストをルーティングしている場合は、次の追加の構成が必要です。

WebLogicコンソールで、「WebLogicプラグインの有効化」を、ドメイン、クラスタ、または管理対象サーバーのレベルでtrueに設定する必要があります。

WebLogic管理対象サーバーにリクエストを転送するLocationブロックに、次の行も追加する必要があります。

WLProxySSL ON
WLProxySSLPassThrough ON

例:

<Location /weblogic>
  SetHandler weblogic-handler
  WebLogicCluster apphost1.example.com:7050,apphost2.example.com:7050
  WLProxySSL On
  WLProxySSLPassThrough ON
  DefaultFileName index.jsp
</Location>

WebLogicプラグインを有効化した後、管理サーバーを再起動します。


この例は、Oracle WebLogic管理対象サーバーにリクエストをルーティングする2つの方法を示しています。

  • <ifModule>ブロックでは、*.jspで終わるすべてのリクエストがApphost1およびApphost2上にあるWebLogic管理対象サーバーのクラスタに送信されます。

  • <Location>ブロックでは、/weblogicで始まるURLのすべてのリクエストがApphost1およびApphost2上にあるWebLogic管理対象サーバーのクラスタに送信されます。

7.8.2 WEBHOST2へのOracle HTTP Serverのインストール

WEBHOST2上にOracle HTTP Serverをインストールする方法については、『Oracle Fusion Middleware Oracle HTTP Serverのインストールと構成』のOracle HTTP Serverソフトウェアのインストールに関する項の手順を参照してください。

OHSインストールの検証

Oracle HTTP Serverホーム・ページにアクセスする次のURLを使用して、WEBHOST2上のインストールを確認します。

http://webhost2:7777/

7.8.3 OHS高可用性デプロイメントの構成と検証

OHS高可用性デプロイメントの構成と検証は、次の手順で実行します。

7.8.3.1 仮想ホストの構成

それぞれの仮想ホストまたはサイト名のエントリに対して、Oracle HTTP Serverの構成にエントリを追加します。virtual_hosts.confファイルをWEBHOST1からWEBHOST2にコピーします。このファイルはDOMAIN_HOME/config/fmwconfig/components/OHS/ohs_name/moduleconfディレクトリにあります。

7.8.3.2 Oracle HTTP Serverの構成の検証

次のURLを使用して構成を検証します。

http://myapp.example.com/

https://myapp.example.com (SSL/SSLターミネーションを使用している場合)

http://myapp.example.com:7777/weblogic