さて今回は、MQ4.1から新たに導入された新機能であるHAクラスタ機能の使い方(構成方法)について説明したいと思います。

HAクラスタはHigh Availabilityクラスタの略で、高可用性クラスタのことです。
前回説明したコンベンショナル(=従来型)クラスタとどう違うかというと、以下の点で大きく異なっています

・あるブローカに障害が発生しても、MQブローカクラスタ側で内部的にフェイルオーバを行う。
送受信中に接続先ブローカがダウンする場合以外は、クライアントはブローカの障害を関知しない。

・サービスの継続性が得られるのみならず、コミット済のデータに関してはロストしない

以下の図を見てください。

コンベンショナルクラスタとは違って、全てのメンバブローカが同一の永続ストアを参照していることがわかります。
例えばクライアントがメッセージをbroker1に送付しコミットした後にbroker1に障害が発生した場合は、broker2またはbroker3にステートが移行されクライアントからは障害を検知しません。

今回は、JDKにも含まれるようになった噂のJava DBを使ってHAクラスタ構成を組んでみたいと思います。
#HAクラスタ構成は、JDBC永続化のみサポートしています。ファイル永続化はサポートしないので注意してください。
#Java DBにはOracle RACのようなクラスタ機能はありませんので、単一障害点になる可能性があります。高い可用性が要求される環境で利用される場合は、次回説明するHADBを永続ストアに使うか、Oracle RACなどの高可用性製品を使用してください。

[Java DBについて]
今回MQの永続ストアに使うJavaDBについて少し解説をしてみたいと思います。Java DBは元々IBMのCouldscapeという製品をオープンソースとしてApache DBプロジェクトにIBMが寄贈したものになります(製品としてのCloudscapeも存在しています)

Apache DBプロジェクトのサブプロジェクトとしてApache Derbyの名前で開発が進められています。
このDerby成果物のSunのサポートディストリビューションがJava DBという名前になります(中身はderbyです)。最近はJDK6などにもバンドルされており、Javaとセットで手軽に使えるRDBMSとなっています。
Java DB、結構機能が豊富で、ロールバック、バックアップリカバリ、XA完全対応はもちろんのこと、内部でトランザクションログもしっかりとっているのでロールフォワードリカバリまで出来る優れものです。もちろん本番環境での使用にも十分耐えます。(Sunは有償でこの製品のサポートも行っています)

[Java DBのインストール]
まずは永続ストアに使用するJavaDBをインストールしてみましょう。
現在JavaDBは色々なプロダクトにバンドルされているので、すでに皆様の環境にもインストールされているかもしれません。
Java Enterprise System
JDK6
GlassFish
Java Studio Creater2
これらをインストールしたことがある方はもしかしたら既にJavaDBが入っているかもしれません。

今回はSunのサイトからダウンロードするところから始めてみたいと思います。

こちらのページのオレンジ色のGet Itボタンを押します。
すると、MQのダウンロードの時のようにユーザ名とパスワードを聞いてきますので入力後、Loginボタンを押します。
Acceptラジオボタンにチェックを入れてから、ダウンロードしたい環境のモジュールの左側のチェックボックスにチェックを入れてオレンジ色の「Download Selected with Sun Download Manager」ボタンを押します。以後の流れはMQのダウンロードと同じです。

ダウンロードしたモジュールをダブルクリックします。

するとインストーラが起動します。

Nextボタンを押します。

インストール場所を聞いてくるのでインストールしたいフォルダを指定します。

以上で準備完了です。Installボタンを押してください。

インストールが完了するとFinish画面が出ますので、Finishボタンを押してください。

[Java DBの起動]
JavaDBには起動タイプが2通りあります。
・EMBEDDED
・NetworkServer
EMBEDDEDはローカル専用で、同一マシンからのアクセス専用になります。
NetworkServerはJava DBを外部マシン(DBサーバなど)に配置して、クライアントとネットワーク通信で接続できるタイプになります。

今回はNetworkServerモードで起動してみます。
コマンドプロンプトを起動して、インストールしたフォルダのbinディレクトリまで移動します。

cd <<Java DBインストールディレクトリ>>\bin

例:cd C:\software\JavaDB\bin

[お手軽な起動方法]
以下の起動コマンドを実行します

startNetworkServer

実行結果

C:\software\JavaDB\bin>startNetworkServer
DRDA_SecurityInstalled.I
Apache Derby Network Server - 2007-10-02 01:40:16.981 GMT に 10.3.1.4 - (561794) が開始され、ポート 1527 で接続を受け入れる準備ができました

今回はサンプルDBを使ってみたいので、ちょっと環境変数スクリプトを変更します。
<<インストールディレクトリ>>\bin\derby_common.batをnotepadなどで開きます。
set _USE_CLASSPATH=yesの下あたりに、以下の一行を追加します。

set DERBY_OPTS=-Dderby.system.home=C:\software\JavaDB\demo\databases

#c:\software\JavaDBは私の環境でのJavaDBインストール先です。ご使用の環境にしたがって適宜変更してください

derby_common.batへの変更を保存したら次のコマンドでJava DBを起動します。

C:\software\JavaDB\bin>startNetworkServer

[サンプルDBへの接続テスト]
Java DBにはSQLコマンドラインインターフェイスツールIJが付属しています。
#Oracleで言うところのSQLPlusみたいなもの
このIJを使って、Java DBが正常に稼動しているかどうかを見てみましょう。

・binディレクトリへ移動します。

cd <<Java DBインストールディレクトリ>>\bin

例:cd C:\software\JavaDB\bin

以下のコマンドを入力します。

ij

するとijが起動して、インタラクティブモードになります
C:\software\JavaDB\bin>ij
ij バージョン 10.3
ij>

ij>の次に以下を入力します。

connect 'jdbc:derby://localhost:1527/toursdb';

#「;」を忘れないでください

C:\software\JavaDB\bin>ij
ij バージョン 10.3
ij> connect 'jdbc:derby://localhost:1527/toursdb';
ij>

のように、ij>が返ってくれば接続成功です。

試しにSQLを入力してみましょう。

ij> select * from airlines;
A&|AIRLINE_FULL            |BASIC_RATE            |DISTANCE_DISCOUNT     |BUSINESS_LEVEL_FACTOR |
-------------------------------------------------------------------------------------------------
AA|Amazonian Airways       |0.18                  |0.03                  |0.5                   |
US|Union Standard Airlines |0.19                  |0.05                  |0.4                   |


2 行が選択されました
ij>

データがきちんと照会されました。
これで、Java DBがネットワークモードで稼動し、正しく稼動していることが確認できました。
ちょっと長くなってしまったので、次回にMQのHAクラスタの構成方法(続き)を説明したいと思います。

投稿されたコメント:

コメント
コメントは無効になっています。

This blog copyright 2009 by naokitakemura