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
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クラスタモデルです。
と、すでにここで、読者の中には疑心暗鬼になっている人がいるかもしれませんね。本来HAクラスタは、故障発生時にもサービスを継続させる仕組みのはずですから。そんなHAクラスタで故障が起こるって、一体どういうことなのでしょう?
ある日、クライアントのWebブラウザでWebアプリケーションに接続すると、Apacheの「Internal Server Error」の画面が突如出てくるといった故障が発生しました。しかし、サーバ側でスタンバイ系へフェイルオーバーする気配はなく、サービスは復旧しません。これではノード監視だけではなくリソース監視も行うHAクラスタの意味がありません。
では、なぜHeartbeatはフェイルオーバーさせなかったのでしょうか?
HAクラスタにおける「リソース」とは、サービスを提供するために必要な構成要素のことで、Heartbeatが起動、停止、監視などの制御対象とするアプリケーションやNIC、ディスクなどを示します。
「リソースエージェント」とは、そのリソースとHeartbeatを仲介するプログラムになります。Heartbeatは、リソースエージェントに対して指示を出し、リソースの起動(start)と停止(stop)の制御を行います。さらにバージョン2では、バージョン1では実装されていなかったリソースの監視(monitor)も可能になりました。
Heartbeatバージョン2では、Web系、DB系、ネットワーク系、ファイルシステム系などのリソースエージェントが、OCF(注)形式で/usr/lib/ocf/resource.d/heartbeat/に標準で多数用意されています。一般的にシェルスクリプトで作成され、ユーザーが新規に作成することも可能です。
Heartbeatは、リソースエージェントからリソースを起動(start)し、監視(monitor)していて故障検出した場合は、リソースを停止(stop)し、スタンバイ系にフェイルオーバーを行うことが可能です。
注:OCFとは、Open Cluster Framework(http://www.opencf.org/)に基づき、initスクリプトを拡張した形式です。Heartbeatバージョン2ではOCF形式の利用が推奨されています。
Copyright © ITmedia, Inc. All Rights Reserved.