第4回 故障発生時にフェイルオーバーしない?

田中 崇幸
NTT OSSセンタ
2008/7/24

 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
図1 標準的なアクティブ-スタンバイ型のHAクラスタモデル例

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

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

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

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

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

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

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

図2
図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形式の利用が推奨されています。

第3回へ
1/3

Index
Linuxトラブルシューティング探偵団
 第4回 故障発生時にフェイルオーバーしない?
Page 1
 故障対策のはずのHAクラスタで故障って……?
 故障が発生したのにフェイルオーバーしない!?
 コラム 「リソース」「リソースエージェント」とは?
  Page 2
 システム構成は?
 コラム 共有ディスク排他制御「sfex」とは?
 トラブルシューティングしてみたが……深まる謎
  Page 3
 内蔵ディスクが故障してもアプリは動き続けた!
 キャッシュが犯人!?
 解決案は「灯台下暗し!」
 コラム ディスク監視デーモン「diskd」とは?
 強引な強制終了も1つの手

TechTargetジャパン

Linux Square フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ



- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH