連載
» 2008年07月24日 00時00分 公開

Linuxトラブルシューティング探偵団(4):故障発生時にフェイルオーバーしない? (1/3)

[田中崇幸,NTT OSSセンタ]

 NTTグループの各社で鳴らした俺たちLinuxトラブルシューティング探偵団は、各社で培ったOSS関連技術を手に、NTT OSSセンタに集められた。普段は基本的にNTTグループのみを相手に活動しているが、それだけで終わる俺たちじゃあない。引き続きOSSに関するトラブルの解決過程を@ITで連載していくぜ。

 ソースコードさえあればどんなトラブルでも解決する命知らず、不可能を可能にし、多くのバグを粉砕する、俺たちLinuxトラブルシューティング探偵団! 助けを借りたいときは、いつでもいってくれ!

OS:高田哲生
俺はリーダー、高田哲生。Linuxの達人。俺のようにソースコードレベルでOSを理解している人間でなければ、百戦錬磨のLinuxトラブルシューティング探偵団のリーダーは務まらん。

Web:福山義仁
俺は、福山義仁。Web技術の達人さ。ApacheのようなWebサーバからTomcat、JBossみたいなJava、アプリケーション技術まで、何でも問題を解決してみせるぜ。

DBMS:下垣徹
下垣徹。PostgreSQLの達人だ。開発からサポートまで何でもやってみせらぁ。でも某商用DBMSだけは勘弁な。

HA:田中 崇幸
よぉ! お待ちどう。俺さまこそHAエキスパート。Heartbeatを使ってクラスタを構成する腕は天下一品! HAが好きなんて奇人? 変人? だから何? HaHaHaHa!!

 システム最後のとりで、HAらしく、4回目の大事な大トリは、俺さま田中崇幸が受け持つぜ!


関連記事

第1回 高負荷なのに片方のサーバにだけ余裕が……なぜ?
http://www.atmarkit.co.jp/flinux/rensai/troubleshoot01/ts01a.html

第2回 サービス直前の非常事態! アプリケーションが復帰しない?
http://www.atmarkit.co.jp/flinux/rensai/troubleshoot02/ts02a.html

第3回 PostgreSQLを遅くしている犯人はどこだ?
http://www.atmarkit.co.jp/flinux/rensai/troubleshoot03/ts03a.html


故障対策のはずのHAクラスタで故障って……?

 4回目はオープンソースである「Heartbeat」(http://linux-ha.org/ja/HomePage_ja)を用いた高可用性クラスタシステム(HAクラスタ)の故障と解決例を紹介します。

 HeartbeatやHAクラスタの概要、インストール方法などは過去の連載を読んでいただくのがよいでしょう。「リソース」や「リソースエージェント」というキーワードも多数出てきますので、これについてはコラムを参照してください。

関連記事

連載:Heartbeatでかんたんクラスタリング
http://www.atmarkit.co.jp/flinux/index/indexfiles/heartbeatindex.html

Linuxクラスタリングへの招待
http://www.atmarkit.co.jp/flinux/index/indexfiles/clusterindex.html


 今回紹介するトラブル例は、Webアプリケーションシステムを、オープンソースのHeartbeatを用い、アクティブ-スタンバイ形式でHigh Availability(HA)クラスタ化したシステムで起こった故障事例です。

 ノードやリソースの故障発生時には、アクティブ系からスタンバイ系へフェイルオーバーするといった、ごく一般的なHAクラスタモデルです。

図1 標準的なアクティブ-スタンバイ型のHAクラスタモデル例 図1 標準的なアクティブ-スタンバイ型のHAクラスタモデル例

 と、すでにここで、読者の中には疑心暗鬼になっている人がいるかもしれませんね。本来HAクラスタは、故障発生時にもサービスを継続させる仕組みのはずですから。そんなHAクラスタで故障が起こるって、一体どういうことなのでしょう?

故障が発生したのにフェイルオーバーしない!?

 ある日、クライアントのWebブラウザでWebアプリケーションに接続すると、Apacheの「Internal Server Error」の画面が突如出てくるといった故障が発生しました。しかし、サーバ側でスタンバイ系へフェイルオーバーする気配はなく、サービスは復旧しません。これではノード監視だけではなくリソース監視も行うHAクラスタの意味がありません。

 では、なぜHeartbeatはフェイルオーバーさせなかったのでしょうか?

コラム 「リソース」「リソースエージェント」とは?

 HAクラスタにおける「リソース」とは、サービスを提供するために必要な構成要素のことで、Heartbeatが起動、停止、監視などの制御対象とするアプリケーションやNIC、ディスクなどを示します。

 「リソースエージェント」とは、そのリソースとHeartbeatを仲介するプログラムになります。Heartbeatは、リソースエージェントに対して指示を出し、リソースの起動(start)と停止(stop)の制御を行います。さらにバージョン2では、バージョン1では実装されていなかったリソースの監視(monitor)も可能になりました。

図2 PostgreSQLの場合のHeartbeatとリソースエージェントの関係 図2 PostgreSQLの場合のHeartbeatとリソースエージェントの関係

 Heartbeatバージョン2では、Web系、DB系、ネットワーク系、ファイルシステム系などのリソースエージェントが、OCF()形式で/usr/lib/ocf/resource.d/heartbeat/に標準で多数用意されています。一般的にシェルスクリプトで作成され、ユーザーが新規に作成することも可能です。

 Heartbeatは、リソースエージェントからリソースを起動(start)し、監視(monitor)していて故障検出した場合は、リソースを停止(stop)し、スタンバイ系にフェイルオーバーを行うことが可能です。

注:OCFとは、Open Cluster Frameworkhttp://www.opencf.org/)に基づき、initスクリプトを拡張した形式です。Heartbeatバージョン2ではOCF形式の利用が推奨されています。



       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。