本記事では、IBM MQ(旧称:WebSphere MQ)を対象とした障害対策をご紹介致します。当社はIBM様とのパートナーシップの 一環で、2011年4月にリリースされたLifeKeeper for Linux v7.3からLinux版のIBM MQを保護するオプションリカバリキットの「MQ ARK」を提供しています。どのようなケースで使われているかをMQの概要と合わせてご説明します。
MQとは
MQとは、主にシステム連携に用いられるメッセージング・ミドルウェアです。例えば企業の持つオンプレミスで動いている既存システムを、クラウドの新しいシステムから連携したい場合など、連携機能を個別に作り込むと通信の制御などの多くの処理を盛り込む必要が出てきます。
<システム連携の連携機能を個別に作り込んだ概念図>
MQは、これらのシステム間をメッセージのやり取りという汎用的な手段で仲介することにより疎結合し、効率的なシステム開発を実現してくれるミドルウェアです。
MQはIBM MQ以外にオラクルの Oracle Database に含まれる Oracle Advanced Queuing(英語版) (AQ)、マイクロソフトの MSMQ(英語版)、日立製作所のTP1/MessageQueue、セゾン情報システムズのHULFT-Messageなどが知られています。
<システム連携にメッセージング・ミドルウェアのMQを適用した概念図>
このようにシステム間連携で中心的な役割を担うMQは、障害が起きて止まってしまうとシステム間連携に大きな影響を及ぼしてしまう単一障害点になります。また、このような構成を組むシステムは基幹系の大きなシステムであることが一般的です。
IBM MQの概要と特徴
- 非同期型のシステム
受信者側のサーバーがダウンしたとしても、IBM MQに送信することでIBM MQはメッセージをキューに入れます。
その後、受信側が復旧時にIBM MQからメッセージを受信することができます。 - あらゆる開発環境に対応
IBM MQ に接続するアプリケーションは、さまざまなプログラミング言語や API で作成することもできます。
C、Cobol、 Java 、.Net、NodeJS、Ruby などに対応。 - セキュリティ・安全面
セキュリティ面に関しては、TLSで暗号化して、キュー・マネージャー間のメッセージ送達が保護されているので安心して使用できます。
IBMMQの障害対策
MQのメッセージを耐障害性の視点で、2つのメッセージに分けられます。
- パーシテントメッセージ(持続メッセージ)
- ノン・パーシステントメッセージ(非持続メッセージ)
メッセージ転送中にシステム障害が発生した場合、パーシテントメッセージ(持続メッセージ)はキュー・マネージャーが復旧後に再起動されると、 キュー・マネージャーがログファイルから持続メッセージを復元します。
しかし、ノン・パーシステントメッセージ(非持続メッセージ)はメッセージ転送中に障害が発生すると、MQアプリケーション側でのデータ復旧作業が必要になります。
ただ、ログファイルにデータを記録せず、メモリー上のバッファで処理されるため、迅速なデータ送受信ができるというメリットがあります。
ハードウェアやソフトウェアの障害発生時にキュー・マネージャーの停止時間を小さくし、パーシテントメッセージ(持続メッセージ)を素早く復元するために、HAクラスターなどで可用性を高めておく必要があります。
作りこみ不要なMQのHAクラスター
当社ではIBM様との協業の一環で、前述の通り2011年4月からLifeKeeper for LinuxのオプションリカバリキットとしてMQ ARKを提供しております。このMQ ARKを使うことで、一般的なHAクラスターソフトに必要な制御スクリプトの作り込みは不要です。GUIベースのウイザード上で容易にHAクラスターを構築できますので、一般に熟練性を要するHAクラスターソフトにありがちな「属人性」を排除でき、SIer様の人的リソースの効率化に寄与します。
<MQを保護対象としたHAクラスターの構成例(物理サーバーで共有ストレージを使用した場合)>
SIer様の方でMQをご提案の際には、上流工程の段階で「MQの障害対策」を課題に盛り込み、その課題に対するソリューションとして上記のLifeKeeper for LinuxとMQ ARKによる長年の実績ある構成をぜひご提案ください。
お問い合わせ
案件等がございましたら、お気軽に下記からお問い合わせくださいませ。
関連情報
IBM MQ のバージョン要件や機能については下記をご参照ください。
→[サポートマトリックス]
http://jpdocs.us.sios.com/Linux/9.3.1/LK4L/SupportMatrix/index.htm
→[オンラインマニュアル]