okuyamaを運用するために知っておきたい基本的な操作

2011年10月26日(水)
岩瀬 高博

各ノードの障害検知と復旧方法

次は障害検知と復旧手順になります。基本的に障害の検知はokuyamaが内部で自動的に行っているため、人手で検知してフェイルオーバーなどを行う必要は特にありません。人手で行うことは、障害を起こしているノードを発見し再起動することです。

まず、ダウンしているノードの発見ですが、MasterNodeとDataNodeで方法が異なります。MasterNodeは起動しているノード全てにOkuyamaClientで接続を行い、接続エラーが発生するかどうかで障害を知ることができます。全てのMasterNodeの状態を一度に知る方法は現在存在しないため、少しプログラムを組むなどの必要はあります。

図2:MasterNodeチェックの実装例(Java言語での実装を一部抜粋)

上記のような方法でエラーが確認できた際は、該当MasterNodeを再起動することで復旧できます。MasterNodeは設定ファイルの情報のみで起動できるため、特に復旧処理などは存在しません。

次にDataNodeですが、こちらはまとめて確認可能です。確認方法ですが、MainMasterNodeの稼働しているサーバにログインし、okuyamaが出力しているログファイルの、KeyNodeWatchHelper.logを確認してください(logの場所はlog4j.propertiesに定義されています)。以下のように稼働中のサーバの生存確認を行っているログが出力されているはずです。

図3:KeyNodeWatchHelper.log

このログファイルは現在の各DataNodeの状態を表しています。上から順に以下のような意味になります。

"192.168.1.2:5553 Node Check Start"
=>192.168.1.2:5553として設定されているDataNodeの生存確認を開始
"192.168.1.2:5553 Node Check Arrival"
=>192.168.1.2:5553の生存を確認
"192.168.1.2:5553 Server Status [JVM MaxMemory Size =[954];・・・・Save Data Size=[all=295]]"
=>192.168.1.2:5553の現在のメモリの利用状態と保存しているデータ数および、データのサイズ(バイト)等の情報"192.168.1.2:5553 Node Check End"
=>192.168.1.2:5553の生存確認を完了
"192.168.1.2:5554 Node Check Start"
=>192.168.1.2:5554として設定されているDataNodeの生存確認を開始
"Node Ping Chekc Error Node Name = [192.168.1.2] Port [5554]"
=>生存確認時にエラーが発生
"java.net.SocketException: Connection reset"
=>発生したエラー内容
=>以下2回は同様の生存確認を繰り返し
"192.168.1.2:5554 Node Check Dead"
=>192.168.1.2:5554の停止を確認
"192.168.1.2:5554 Node Check End"
=>192.168.1.2:5554の生存確認を完了

以上のような内容の監視ログが常に出力されていますので、このファイルをトレースすることでDataNodeの状態を知ることが可能です。そしてこのログファイルで障害が確認できた場合は、該当DataNodeを再起動します。その際レプリケーション先が設定されている場合はデータのリカバリが行われます。図4がリカバリ処理の経過を示したログになります。

図4:KeyNodeWatchHelper.log

復旧処理を行っている経過は上から順に以下のようになります。

"192.168.1.2:5554 Node Check Start"
=>192.168.1.2:5554として設定されているDataNodeを生存を確認
"Node Name [192.168.1.2:5554] Reboot"
=>192.168.1.2:5554として設定されているDataNodeが再起動したことを確認
"Node Name [192.168.1.2:5554] Use Wait 1-1 Start"
=>データリカバリの準備を開始
"192.168.1.2:5554 - Recover Start"
=>データリカバリを開始
"Data Recover Schedule [192.168.1.3:5554 => 192.168.1.2:5554]"
=>192.168.1.3:5554として設定されているDataNodeからデータをリカバリすることを決定
"Recover Step - 1"
=>リカバリの経過を表示
=>"Recover Step - 18"まで到達するとリカバリ完了
"192.168.1.2:5554 - Recover Success"
=>リカバリが成功。なんだかの理由により失敗した場合はエラーの表記が出力されます。
"192.168.1.2:5554 - Recover End"
=>リカバリ処理が終了
"192.168.1.2:5554 Node Check End"
=>生存確認が終了

以上がリカバリ処理の経過となります。

株式会社神戸デジタル・ラボ

2006年神戸デジタル・ラボに入社。企業内業務アプリケーション開発に従事。
2008年末から大規模ECサイトのアプリケーション、インフラ周りの運用に従事。
2009年末に分散Key-Value Store”okuyama”をオープンソースとして公開。
2010年から各都道府県で開催されるオープンソースカンファレンスへの出展やセミナー登壇、「NOSQL afternoon in Japan」や、「JavaCloud Meeting Kansai」での登壇といった”okuyama”の普及活動の傍ら、”okuyama”を使ったアプリケーション開発などに従事し、現在に至る。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています