本文へジャンプ

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

送信されたすべての情報は安全です。

  • 閉じる [x]

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


送信されたすべての情報は安全です。

  • 閉じる [x]

Linuxでの高可用性ミドルウェア、第4回:IBM WebSphere Application Server

動的アプリケーションのための拡張性のあるHAエンジンをセットアップする

Hidayatullah Shaikh (hshaikh@us.ibm.com), Senior Software Engineer, IBM
Hidayatullah H. ShaikhはIBM T.J. Watson Research Centerのオンデマンド・アーキテクチャーと開発チームのシニア・ソフトウェア技術者です。関心領域は広く、ビジネス・プロセスのモデル化と統合、サービス指向アーキテクチャー、グリッド・コンピューティング、eコマース、エンタープライズJava、データベース管理システム、それに高可用性クラスターに渡っています。連絡先はhshaikh@us.ibm.comです。

概要: 

高可用性構成のミドルウェアの実装に関する5回シリーズの第4回では、IBM® WebSphere® Application Serverの高可用性構成を作るステップ・バイ・ステップの方法を学び、オンデマンド環境に必要な柔軟性、回復力、および効率性を確保しましょう。

日付:  2005年 3月 10日
レベル:  中級 この記事の原文:  英語
アクティビティー: 2048 ビュー
お気軽にご意見・ご感想をお寄せください: 


どの業界でも、ビジネス環境はますます複雑になり、ピッチが速くなり、予測不能になっています。今日の企業は、効率的で回復力のある運用を確保しつつ、競争で優位を保つための柔軟性を必要としています。IBM WebSphereは、システムの稼働時間を最大限に維持することなど、オンデマンドの世界で重要とされる優先事項を解決するためのアプリケーション・インフラストラクチャーと統合ソフトウェアを提供します。この記事では、WebSphere Application Serverの高可用性構成を構築するためのステップ・バイ・ステップの手順を説明します。

はじめに

WebSphere Application Serverは、J2EE®およびWebサービス・アプリケーション・サーバーであり、動的なeビジネス・アプリケーションのための高性能で非常に拡張性の高いトランザクション・エンジンを提供することを目的として設計されています。

WebSphere Application Server Network Deployment(ND)は、動的なアプリケーション環境をサポートする優れた性能と可用性機能を備えた操作環境を提供します。WebSphere Application Serverの特長と機能に加えて、この特定の構成は、クラスタリング、エッジ・オブ・ネットワーク・サービス、Webサービス拡張、分散構成のための高可用性など、高度な導入サービスも提供します。

ハートビートの監視

ハートビートは、Linux-HAプロジェクトの一般公開されているパッケージの1つです(リンクについては、この記事の「参考文献」を参照してください)。ハートビートは、リソースの開始と停止、クラスタ内のシステムの可用性の監視、クラスタ内のノード間での共有IPアドレスの所有権の移転など、HAシステムに必要な基本的な機能を提供します。ハートビートは、シリアル回線またはイーサネット・インターフェース、あるいはその両方を通じて、特定のサービスの健康も監視します。最新バージョンは、特殊なハートビート“ping”を使用してサービスのステータスと可用性をチェックする2ノード構成をサポートしています。

このシリーズの第1回では、HAの概念とハートビートのインストールおよび構成の方法を紹介しました。今回の記事では、ハートビートを使用したコールド・スタンバイ構成でのWebSphere Application ServerとNDのHA実装について解説します。

この実装では、ハートビートによってプライマリーの障害を検出した後、次のようにしてフェイルオーバーを開始します。

  • プライマリー上のWebSlihere Alililication Serverとノード・エージェントの停止
  • プライマリー上のNDデプロイメント・マネージャーの停止
  • プライマリー上の共有ディスクのリリース
  • プライマリー上のサービスIliアドレスの削除
  • サービスIliアドレスのスタンバイへの追加
  • スタンバイ上の共有ディスクのマウント
  • スタンバイ・マシン上のデプロイメント・マネージャーの開始
  • スタンバイ・マシン上のアプリケーション・サーバーとノード・エージェントの開始

この記事を最大限に利用するには、WebSphere Application Server BaseとNetwork DeploymentおよびHigh Availabilityクラスターの基本的な理解が必要です。また、有用な背景知識として、このシリーズの最初の記事「Linuxでの高可用性ミドルウェア、第1回:HeartbeatとApache Webサーバー」を読んでください。



WebSphere Application ServerとHA

WebSphere Application Server NDでは、デプロイメント・マネージャーが管理エージェントとなって、セル内のすべてのノードの集中管理ビューを提供します。クラスターの管理と1つまたは複数のノード間でのアプリケーション・サーバーのワークロード・バランシングの管理は、デプロイメント・マネージャーを通じて行われます。

デプロイメント・マネージャーは管理コンソールもホストして、WebSphere Application Server配布セル全体のすべての要素の集中管理制御点となります。デプロイメント・マネージャーが使用不能になると、構成を変更することも変更内容をアプリケーション・サーバーに伝播することもできなくなります。このため、デプロイメント・マネージャーは単一障害点でもあります。

この記事の残りでは、WebSphere Application Server ND環境のデプロイメント・マネージャーを高可用性にする方法と、WebSphereベース・ノードをバックアップにフェイルオーバーする方法を説明します。このシリーズの以前の記事と同様、重要なファイルは、WebSphere Application Serverノードに障害が発生した場合にバックアップ・マシンから使用できる共有ファイルシステム(この例の場合は/ha)にあります。

図1に、ファイルシステムの編成を示します。


図1. WebSphere高可用性のセットアップ
The WebSphere high-availability setup

このセットアップでは

  • マシンha1は、プライマリーWebSphere Application Serverデプロイメント・マネージャー・マシンであり、WebSphere Application Serverノードでもあります。
  • マシンha2は、WebSphere Application Serverデプロイメント・マネージャーのバックアップであり、WebSphere Application Serverノードでもあります。
  • マシンha3は、WebSphere Application Serverノードです。
  • WebSphereデプロイメント・マネージャー(/ha/WebSphere/DeploymentManager)とWebSphereノード(/ha/WebSphere/AppServer)のインストレーション全体は、共有ディスク上に保持されています。ログ・ディレクトリーだけは、ローカル・マシン上に保持されています。


HA構成でのWebSphere Application Server NDとベースのインストール

このセクションでは、WebSphere Application Server NDとベースの両方をインストールします。

ebSphere Application Server NDのインストール

WebSphere Application Server ND 5.1と必要な修正パックをプライマリー・ノードとバックアップ・ノードの両方にインストールするには:

  1. ハートビートが両方のノード上で実行していることを確認します。これにより、ha1がクラスターIPアドレスを与えていることと、ファイルシステム/haがha1にもマウントされていることが確認できます。
  2. ha1ノード上に、WebSphere Application Server NDとベースのインストール・ディレクトリーを作成します。
        mkdir /ha/WebSphere/
    
        mkdir /ha/WebSphere/DeploymentManager
    
        mkdir /ha/WebSphere/AppServer
    


  3. ha1ノード上に、WebSphere Application Server ND 5.1インストレーション・イメージを解凍します。
        rm -rf /tmp/was5.1nd-install
    
        mkdir /tmp/was5.1nd-install
    
        tar xf c53t6ml.tar -C /tmp/was5.1nd-install
    

    ここで、c53t6ml.tarは、WebSphere Application Server NDのインストール用tarファイルです。イメージ・ファイル名は、入手方法によって異なることがあります。

  4. ノードha1で、インストール・ウィザードを実行します。
        cd /tmp/was5.1nd-install/linuxi386
        ./launchpad.sh
    


    ウィザード画面のフィールドに、次の情報を入力します。
    • Installation directory:/ha/WebSphere/DeploymentManager
    • Node: haManager
    • Host: ha.haw2.ibm.com
    • Cell: haNetwork
    • このセットアップでは、HTTPサーバーとMQはすでにインストールされているので、どちらもインストールしないことにしました。また、Webサービス・ゲートウェイもインストールしません。
  5. インストール・イメージ・ディレクトリーをクリーンアップします。
        rm rf /tmp/was5.1nd-install
    


  6. ha1ノード上に、WebSphere Application Server ND 5.1 Fix Pack 1インストレーション・イメージを解凍します。
        rm -rf /tmp/was5.1.1nd-install
        mkdir /tmp/was5.1.1nd-install
        tar xzf was51_nd_fp1_linux.tar.gz -C /tmp/was5.1.1nd-install
    


    ここで、was51_nd_fp1_linux.tar.gzは、WebSphere Application Server ND 5.1 Fix Pack 1のインストール用tarファイルです。イメージ・ファイル名は、入手方法によって異なることがあります。

  7. ha1で、サイレント・アップデートを実行します。
    . /ha/WebSphere/DeploymentManager/bin/setupCmdLine.sh
    
    cd /tmp/was5.1.1nd-install/
    
    ./updateSilent.sh installDir /ha/WebSphere/DeploymentManager -fixpack -install
        -fixpackDir /tmp/was5.1.1nd-install/fixpacks -fixpackID was51_nd_fp1_linux
        -skipIHS -skipMQ
    


  8. 修正パックのインストール・イメージ・ディレクトリーをクリーンアップします。
        rm rf /tmp/was5.1.1nd-install
    


  9. ha1ノード上に、WebSphere Application Server ND 5.1.1 Cumulative Fix 1インストレーション・イメージを解凍します。
       rm -rf /tmp/was5.1.1.1nd-install
    
       mkdir /tmp/was5.1.1.1nd-install
    
       unzip -q was511_nd_cf1_linux.zip -d /tmp/was5.1.1.1nd-install
    

    ここで、was511_nd_cf1_linux.zipは、WebSphere Application Server ND 5.1.1 Cumulative Fix 1のインストール用zipファイルです。

  10. ha1で、サイレント・アップデートを実行します。
    . /ha/WebSphere/DeploymentManager/bin/setupCmdLine.sh
    
    cd /tmp/was5.1.1.1nd-install
    
    ./updateSilent.sh installDir /ha/WebSphere/DeploymentManager -fixpack -install
         -fixpackDir /tmp/was5.1.1.1nd-install/fixpacks -fixpackID was511_nd_cf1_linux
         -skipIHS -skipMQ
    

  11. 修正パックのインストール・イメージ・ディレクトリーをクリーンアップします。
        rm rf /tmp/was5.1.1.1nd-install
    


  12. 次に、図1のようなディレクトリー・リンクを作成します。
    1. ha1上のインストレーションからデプロイメント・マネージャー・ログ・ディレクトリーを削除します。
          rm rf /ha/WebSphere/DeploymentManager/logs
      


    2. ノードha1とha2の両方で、ローカル・ファイルシステム上にログ用ディレクトリーを作成します。
          mkdir /var/log/waslog
      
          mkdir /var/log/waslog/DeploymentManager
      


    3. ha1とha2の両方のノードで、正しいアクセス権を設定します。
          chmod 755 /var/log/waslog
      
          chmod 755 /var/log/waslog/DeploymentManager
      


    4. ノードha1のみ、シンボリック・リンクを作成します。
      ln -s /var/log/waslog/DeploymentManager /ha/WebSphere/DeploymentManager/logs
      


ベースのインストール

WebSphere Application Server 5.1 Baseと必要な修正パックをプライマリー・ノードとバックアップ・ノードの両方にインストールするには:

  1. ha1ノード上に、WAS Base 5.1インストレーション・イメージを解凍します。
    rm -rf /tmp/was5.1base-install
    
    mkdir /tmp/was5.1base-install
    
    tar xf c53ipml.tar -C /tmp/was5.1base-install
    


    ここで、c53ipml.tarは、WAS Base 5.1のインストール用tarファイルです。イメージ・ファイル名は、入手方法によって異なることがあります。

  2. ノードha1で、インストール・ウィザードを実行します。
    cd /tmp/was5.1base-install/linuxi386
    
    ./launchpad.sh
    


    ウィザード画面のフィールドに、次の情報を入力します。

    • Installation directory:/ha/WebSphere/AppServer
    • Node: ha
    • Host: ha.haw2.ibm.com
    • このセットアップでは、HTTPサーバーとMQはすでにインストールされているので、どちらもインストールしないことにしました。これらの機能のインストールを無効にするには、Custom Setupオプションを選択します。

  3. 次のコマンドを使用して、インストール・イメージ・ディレクトリーをクリーンアップします。
    rm rf /tmp/was5.1base-install
    


  4. ha1ノード上で下記のコマンドを使用して、WAS Base 5.1 Fix Pack 1インストール・イメージを解凍します。
    rm -rf /tmp/was5.1.1base-install
    
    mkdir /tmp/was5.1.1base-install
    
    tar xzf was51_fp1_linux.tar.gz -C /tmp/was5.1.1base-install
    

    ここで、was51_fp1_linux.tar.gzは、WAS Base 5.1修正パック1のインストール用tarファイルです。イメージ・ファイル名は、入手方法によって異なることがあります。

  5. ha1で、下記のコマンドを使用してサイレント・アップデートを実行します。
    . /ha/WebSphere/AppServer/bin/setupCmdLine.sh
    
    cd /tmp/was5.1.1base-install
    
    ./updateSilent.sh installDir /ha/WebSphere/AppServer -fixpack -install -fixpackDir
         /tmp/was5.1.1base-install/fixpacks -fixpackID was51_fp1_linux -skipIHS -skipMQ
    


  6. ノードha1で、次のコマンドを使用して修正パックのインストール・イメージ・ディレクトリーをクリーンアップします。
    rm rf /tmp/was5.1.1base-install
    


  7. ha1ノードで、下記のコマンドを使用してWAS Base 5.1 Cumulative Fix 1インストール・イメージを解凍します。
    rm -rf /tmp/was5.1.1.1base-install
    
    mkdir /tmp/was5.1.1.1base-install
    
    unzip -q was511_cf1_linux.zip -d /tmp/was5.1.1.1base-install
    

    ここで、was511_cf1_linux.zipは、WAS Base 5.1.1 Cumulative Fix 1のインストール用zipファイルです。

  8. ha1で、下記のコマンドを使用してサイレント・アップデートを実行します。
    . /ha/WebSphere/AppServer/bin/setupCmdLine.sh
    
    cd /tmp/was5.1.1.1base-install
    
    ./updateSilent.sh installDir /ha/WebSphere/AppServer -fixpack -install -fixpackDir
         /tmp/was5.1.1.1base-install/fixpacks -fixpackID was511_cf1_linux -skipIHS -skipMQ
    

  9. ノードha1で、次のコマンドを使用して修正パックのインストール・イメージ・ディレクトリーをクリーンアップします。
    rm rf /tmp/was5.1.1.1base-install
    

  10. 次に、図1のようなディレクトリー・リンクを作成します。
    1. ha1上のインストレーションからWebSphereログ・ディレクトリーを削除します。
      rm rf /ha/WebSphere/AppServer/logs
      

    2. ノードha1とha2の両方で、ローカル・ファイルシステム上にログ用ディレクトリーを作成します。
      chmod 755 /var/log/waslog/AppServer
      

    3. ha1とha2の両方のノードで、正しいアクセス権を設定します。
      chmod 755 /var/log/waslog/AppServer
      

    4. ノードha1のみ、シンボリック・リンクを作成します。
      ln -s /var/log/waslog/AppServer /ha/WebSphere/AppServer/logs
      

  11. 次の情報を使用して、ノードha3にWebSphere Application Serverベースをインストールします(上記のステップ1~9のみ)。
    • Installation directory:/opt/WebSphere/AppServer
    • Node: ha3
    • Host: ha3.haw2.ibm.com
    • このセットアップでは、HTTPサーバーとMQはすでにインストールされているので、どちらもインストールしないことにしました。
  12. デプロイメント・マネージャー・インストレーションのbinディレクトリーからstartManager.shを実行して、ha1上でデプロイメント・マネージャーを開始します。
  13. 各ノードで(アプリケーション・サーバーのbinディレクトリーから)次のコマンドを実行して、WASノードhaおよびha3(上記のWebSphere Application Serverベースのインストール時に作成された)をセルhaNetwork(WebSphere Application Server NDのインストールのステップ4で作成された)に追加します。
    addnode.sh ha
    

  14. 管理コンソールから、セルが正しく表示されることを確認します。コンソール(http://ha.haw2.ibm.com:9090/admin)を開いて、Application Serverのすべてのノードが表示されることを確認します。
  15. すべてを停止します。これは、デプロイメント・マネージャーとそれぞれのWASノード上のノード・エージェントを停止することを意味します。次のコマンドを使用します。
    1. ノード・エージェント:stopNode.sh(Application Serverのbinディレクトリーから)
    2. デプロイメント・マネージャー:stopManager.sh(デプロイメント・マネージャーのbinディレクトリーから)


デプロイメント・マネージャーを管理するためのハートビートの構成

これで、ハートビートを構成して、WebSphere Application Server NDデプロイメント・マネージャーを管理することができます。まず、デプロイメント・マネージャー・プロセスの開始と停止を行うスクリプトを作成します。基本的なスクリプト(wasdmgr)をリスト1に示します。セットアップに応じて、さらにカスタマイズすることができます。このスクリプトを/etc/rc.d/init.dディレクトリーに入れます。


リスト1. デプロイメント・マネージャーを開始および停止するための基本的なスクリプト(wasdmgr)
                
#!/bin/bash
#
#	/etc/rc.d/init.d/wasdmgr
#
# Starts the WebSphere Deployment Manager
#
# chkconfig: 345 88 57
# description: Runs  WAS DMGR

. /etc/init.d/functions
# Source function library.

PATH=/usr/bin:/bin:/ha/WebSphere/DeploymentManager/bin
#==============================================================================
SU="sh"
#======================================================================
start() {
	echo "$0: starting websphere deployment manager"
	$SU -c "startManager.sh"
}
#======================================================================
stop() {
	echo "$0: stopping websphere deployment manager"
	$SU -c "stopManager.sh"
}


case $1 in
'start')
    start
    ;;
'stop')
    stop
    ;;
'restart')
    stop
    start
    ;;
*)
    echo "usage: $0 {start|stop|restart}"
    ;;
esac

次に、ノードha1とha2の両方の/etc/ha.d/haresourcesファイルを構成して、wasdmgrスクリプトを含めます。変更済みのファイルの該当部分を以下に示します。

ha1.haw2.ibm.com 9.22.7.46 Filesystem::hanfs.haw2.ibm.com:/ha::/ha::nfs::rw,hard wasdmgr

この行は、ハートビートの開始時に、ha1がクラスターIPアドレスを与え、共有ファイルシステムをマウントし、WebSphere Application Serverデプロイメント・マネージャーを開始することを指定しています。シャットダウン時には、ハートビートは、まず、デプロイメント・マネージャーを停止した後、共有ファイルシステムをアンマウントして、最後にIPをギブアップします。



WebSphere Application Serverノードを管理するためのハートビートの構成

次に、WebSphere Application Serverノード・エージェントとアプリケーション・サーバー・プロセスを管理するためのハートビートを構成します。まず、ノード・エージェントとアプリケーション・サーバー・プロセスの開始と停止を行う2つのスクリプトを作成します。ノード・エージェントを開始するための基本スクリプト(wasnode)をリスト2に、ノード上のアプリケーション・サーバーを開始するためのスクリプト(wasserver)をリスト3に示します。セットアップに応じて、さらにカスタマイズすることができます。これらのスクリプトを/etc/rc.d/init.dディレクトリーに入れます。


リスト2. ノード・エージェントを開始するためのwasnodeスクリプト
                
#!/bin/bash
#
#	/etc/rc.d/init.d/wasnode
#
# Starts the WebSphere Node Agent
#
# chkconfig: 345 88 57
# description: Runs  WAS NODE

. /etc/init.d/functions
# Source function library.

PATH=/usr/bin:/bin:/ha/WebSphere/AppServer/bin
#======================================================================
SU="sh"
#======================================================================
start() {
	echo "$0: starting websphere node agent"
	$SU -c "startNode.sh"
}
#==============================================================================
stop() {
	echo "$0: stopping websphere node agent"
	$SU -c "stopNode.sh"
        #sleep 30
}


case $1 in
'start')
    start
    ;;
'stop')
    stop
    ;;
'restart')
    stop
    start
    ;;
*)
    echo "usage: $0 {start|stop|restart}"
    ;;
esac


リスト3. アプリケーション・サーバーを開始するためのwasserverスクリプト
                
#!/bin/bash
#
#	/etc/rc.d/init.d/wasserver
#
# Starts the WebSphere Application Server
#
# chkconfig: 345 88 57
# description: Runs  WAS Server

. /etc/init.d/functions
# Source function library.

PATH=/usr/bin:/bin:/ha/WebSphere/AppServer/bin
WASSERVERS="server1"
#======================================================================
SU="sh"
#======================================================================
start() {
    for wasserver in $WASSERVERS ; do
        export wasserver
	echo "$0: starting websphere application server $wasserver"
	$SU -c "startServer.sh $wasserver"
    done
}
#==============================================================================
stop() {
    for wasserver in $WASSERVERS ; do
        export wasserver
	echo "$0: stopping websphere application server $wasserver"
	$SU -c "stopServer.sh $wasserver"
    done
}


case $1 in
'start')
    start
    ;;
'stop')
    stop
    ;;
'restart')
    stop
    start
    ;;
*)
    echo "usage: $0 {start|stop|restart}"
    ;;
esac

次に、ノードha1とha2の両方の/etc/ha.d/haresourcesファイルを構成して、wasnodeおよびwasserverスクリプトを含めます。変更済みのファイルの該当部分を以下に示します。

ha1.haw2.ibm.com 9.22.7.46 Filesystem::hanfs.ibm.com:/ha::/ha::nfs::rw,hard 
wasdmgr wasnode wasserver

この行は、ハートビートの開始時に、ha1がクラスターIPアドレスを与え、共有ファイルシステムをマウントし、WebSphere Application Serverデプロイメント・マネージャー、ノード・エージェント、およびアプリケーション・サーバーを開始することを指定しています。シャットダウン時には、ハートビートは、まず、アプリケーション・サーバーを停止した後、ノード・エージェントを停止し、次にデプロイメント・マネージャーを停止し、共有ファイルシステムをアンマウントして、最後にIPをギブアップします。



デプロイメント・マネージャーのフェイルオーバーのテスト

このセクションでは、デプロイメント・マネージャーの高可用性をテストする方法を説明します。

  1. /etc/rc.d/init.d/heartbeat startコマンドを使用して、プライマリー・ノード上でハートビート・サービスを開始し、次にバックアップ・ノード上で開始します。ハートビートが正常に開始されると、ha.cfファイルで構成したIPアドレスを持つ新しいインターフェースが表示されます。ハートビートを開始した後、プライマリー上のログ・ファイル(デフォルトは/var/log/ha-log)を見て、IPのテイクオーバーが行われ、dmgr、ノード・エージェント、アプリケーション・サーバー、およびその他のリソースが開始されていることを確認してください。ハートビートは、バックアップ上のリソースは開始しません。これは、プライマリーに障害が発生しなければ行われません。
  2. ha3ノード上のWebSphereノード・エージェントとWebSphere Application Serverを開始します。
  3. adminコンソール(http://ha.haw2.ibm.com:9090/admin)から、両方のマシン(ha1とha3)のアプリケーション・サーバーが実行していることを確認します。実行していない場合は、それらを開始します。
  4. adminコンソールを使用して、サンプルのエンタープライズ・アプリケーションTestWebSphereHA.ear(下記の「ダウンロード」セクションを参照)をwas\sample_ver_1ディレクトリーに展開します。haとha3の両方のWASノードに展開してください。コンソールを使用して、アプリケーションを起動します。
  5. ブラウザで次のURLを指定して、両方のノードでアプリケーションが実行していることを確認します。

    http://ha.haw2.ibm.com:9080/TestWebSphereHAWeb/Test
    http://ha3.haw2.ibm.com:9080/TestWebSphereHAWeb/Test

    どちらのURLについても、ブラウザに次のようなテキストが表示されるはずです。Test:doGet() Invoked the HA Test Servlet

この時点で、ha1で実行しているデプロイメント・マネージャーによって管理されている2つのWebSphere Application Serverノードにアプリケーションを正常に展開できました。次に、バックアップへのフェイルオーバー後も、この構成情報が保持されるかどうかを確認します。

  1. /etc/rc.d/init.d/heartbeat stopコマンドを使用して、プライマリー・システム上のハートビートを停止して、フェイルオーバーをシミュレートします。すべてのサービスがバックアップ・マシン上に表示されるはずです。/var/log/ha-logファイルをチェックして、デプロイメント・マネージャーがバックアップ上で実行していることを確認します。バックアップが制御を引き継いだら、adminコンソールを再び開始してください。2つのアプリケーション・サーバーとエンタープライズ・アプリケーションTestWebSphereHAを確認できるはずです。これは、構成情報が障害を生き延びたことを示します。また、ステップ5を繰り消して、両方のノードでアプリケーションが動作していることを確認してください。
  2. adminコンソールを使用して、エンタープライズ・アプリケーションをwas\sample_ver_2ディレクトリーにある新しいバージョンのTestWebSphereHA.earにアップデートします。アップデート時には、haとha3の両方のWASノードを選択してください。
  3. アップデート後、マスター構成を保存してください。また、Synchronize changes with Nodesオプションが選択されていることを確認してください。アプリケーションを正常にアップデートできるはずです。ステップ5を再び繰り返します。
  4. URL http://ha.haw2.ibm.com:9080/TestWebSphereHAWeb/Testに対して、ブラウザはTest:doGet() Invoked the HA Test Servlet on remote host : ha2.haw2.ibm.comと表示します。マシンのホスト名も表示されます。これによって、クラスターIP ha.haw2.ibm.comがバックアップ・マシン(ha2.haw2.ibm.com)によってサービスされていることが確認できます。
  5. URL http://ha3.haw2.ibm.com:9080/TestWebSphereHAWeb/Testに対して、ブラウザはTest:doGet() Invoked the HA Test Servlet on remote host : ha3.haw2.ibm.comと表示します。
  6. 再び、プライマリー上でハートビート・サービスを開始します。これにより、セカンダリ上のWebSphere Application Serverプロセスは停止し、プライマリー上で開始されます。プライマリーはクラスターIPも引き継ぎます。/etc/rc.d/init.d/heartbeat startコマンドを使用します。
  7. adminコンソールを再び開始します。2つのアプリケーション・サーバーとアプリケーションTestWebSphereHAを確認できるはずです。これは、アップデートされた構成情報が、プライマリーへのフェイルオーバー後も保持されていることを示します。また、ステップ5を繰り消して、両方のノードでアプリケーションが動作していることを確認してください。

これで、デプロイメント・マネージャーの構成情報がプライマリー・マシンからスタンバイ・マシンへのフェイルオーバー後も維持されることが確認できました。



WebSphere Application Serverノードのフェイルオーバーのテスト

ノードのフェイルオーバーをテストするために、私は持続型カウンター(count)を維持することによって起動回数を追跡するようにサンプル・テスト・アプリケーションを変更しました。この際、カウンターを持続させるメカニズムとしてファイルシステムを選びました。アプリケーションのフェイルオーバーが機能するためには、このデータは共有ディスク上で保持されなければなりません。

WebSphereノードとアプリケーションの高可用性をテストするには、

  1. /etc/rc.d/init.d/heartbeat startコマンドを使用して、プライマリー・ノード上でハートビート・サービスを開始し、次にバックアップ・ノード上で開始します。
  2. ha3ノード上のWebSphereノード・エージェントとWebSphere Application Serverを開始します。
  3. adminコンソール(http://ha.haw2.ibm.com:9090/admin)から、両方のマシン(ha1とha3)のアプリケーション・サーバーが実行していることを確認します。実行していない場合は、それらを開始します。アプリケーションTestWebSphereHAも表示されるはずです。
  4. adminコンソールを使用して、エンタープライズ・アプリケーションをwas\sample_ver_3ディレクトリーにある新しいバージョンのTestWebSphereHA.earにアップデートします。アップデート時には、haとha3の両方のWASノードを選択してください。アップデート後、マスター構成を保存してください。また、オプションが選択されていることを確認してください。アプリケーションを正常にアップデートできるはSynchronize changes with Nodesずです。
  5. ブラウザでURL http://ha.haw2.ibm.com:9080/TestWebSphereHAWeb/Testを指定して、ha WebShpereノードでアプリケーションが実行していることを確認します。ブラウザの出力は次のようになるはずです。
    Test:doGet() Invoked the HA Test Servlet on remote host : ha1.haw2.ibm.com
    Test:doGet() This servlet has been invoked 1 times
    Test:doGet() Count data file : /ha/WebSphere/AppServer/installedApps/haNetwork
                                   /TestWebSphereHA.ear/TestWebSphereHAWeb.war
                                   /WEB-INF/count.dat
    

    この出力は、アプリケーションがWASノードha上で正常に実行していて、haはプライマリー・ノードha1上で実行していることを示しています。また、count.datファイルが共有ファイルシステム/ha上にあることにも注目してください。このステップをもう一度繰り返すと、カウントは2になります。

  6. /etc/rc.d/init.d/heartbeat stopコマンドを使用して、プライマリー・システム上のハートビートを停止して、フェイルオーバーをシミュレートします。バックアップが制御を引き継いだら、adminコンソールを再び開始してください。2つのアプリケーション・サーバーとアプリケーションTestWebSphereHAを確認できるはずです。

    ブラウザで、URL http://ha.haw2.ibm.com:9080/TestWebSphereHAWeb/Testを指定します。今回のブラウザの出力は、次のようになるはずです。

    Test:doGet() Invoked the HA Test Servlet on remote host : ha2.haw2.ibm.com
    Test:doGet() This servlet has been invoked 3 times
    Test:doGet() Count data file : /ha/WebSphere/AppServer/installedApps/haNetwork
                                   /TestWebSphereHA.ear/TestWebSphereHAWeb.war
                                   /WEB-INF/count.dat
    

    この出力は、アプリケーションがWASノードha上で正常に実行していて、haはバックアップ・ノードha2上で実行していることを示しています。また、アプリケーション・データ(countの値)は共有ディスク上にあるので、フェイルオーバー後も維持されています。

これは、アプリケーション・データのフェイルオーバーの簡単な例にすぎません。より現実的な例としては、データベースを使用することになるでしょう。その場合、データベースのHAも実装されなければならず、これについては、このシリーズの次回の記事で説明します。

  1. 再び、プライマリー上でハートビート・サービスを開始します。これにより、セカンダリ上のWebSphere Application Serverプロセスは停止し、プライマリー上で開始されます。プライマリーはクラスターIPも引き継ぎます。/etc/rc.d/init.d/heartbeat startコマンドを使用します。


まとめ

可用性は、ITシステムが1日24時間、1週7日間動作し続けるオンデマンド操作環境を構築するための主要な要件です。この記事では、Linux™オペレーティング・システム上でオープン・ソース・ソフトウェアを使用してWebSphere Application Serverの高可用性を実装することによって、ダウンタイムによるビジネスへの影響を軽減する方法を説明しました。このシリーズで概説されているアプローチを使用することによって、予定および予定外の機能停止を大幅に削減して、運用を中断することなく、クラスターのアップグレードやシステム保守を行うことができます。





ダウンロード

内容ファイル名サイズダウンロード形式
Sample code package for this articlehahbcode.tar.gz25KBFTP

ダウンロード形式について


参考文献

著者について

Hidayatullah H. ShaikhはIBM T.J. Watson Research Centerのオンデマンド・アーキテクチャーと開発チームのシニア・ソフトウェア技術者です。関心領域は広く、ビジネス・プロセスのモデル化と統合、サービス指向アーキテクチャー、グリッド・コンピューティング、eコマース、エンタープライズJava、データベース管理システム、それに高可用性クラスターに渡っています。連絡先はhshaikh@us.ibm.comです。

不正使用の報告のヘルプ

不正使用の報告

ありがとうございます。 このエントリーは、モデレーターの注目フラグが設定されました。


不正使用の報告のヘルプ

不正使用の報告

不正使用の報告の送信に失敗しました。


developerWorks: サイン・イン


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。 プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。 お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

表示名をお選びください

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

(半角英数字で3文字以上31文字以下にする必要があります)


「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


この記事を評価する

コメント

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux, WebSphere, Open source
ArticleID=228546
ArticleTitle=Linuxでの高可用性ミドルウェア、第4回:IBM WebSphere Application Server
publish-date=03102005
author1-email=hshaikh@us.ibm.com
author1-email-cc=

タグ

Help
このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。

スライダーバーを使用することで、より多く(少なく)タグを表示します。

人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。

マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。

このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。