ハートビート(コンピューティング) - 百科事典

コンピュータサイエンスにおいて、ハートビートはハードウェアやソフトウェアが定期的に生成する信号で、正常動作を示すか、コンピュータシステムの他の部分と同期するために使用されます。ハートビートメカニズムは、ネットワーククラスタ(マスターサーバーが管理)に属するノードやデーモンのネットワークまたはシステムの障害を検出して、高い可用性と耐障害性を提供するために使用されるミッションクリティカルシステムの一般的な技術の1つです。システムの自動適応と再バランスのために、クラスタ内の余剰ノードを使用して障害ノードの負荷を引き継ぎ、恒常的なサービスを提供するために、ハートビートメカニズムが使用されます。通常、ハートビートは秒単位で定期的に機器間で送信されます;ハートビートメッセージです。エンドポイントが一定期間(通常は数回のハートビートインターバル)ハートビートを受け取らなかった場合、ハートビートを送信すべき機器が障害していると仮定されます。ハートビートメッセージは、送信元の起動からシャットダウンまで、定期的または繰り返しの基準で非停止的に送信されます。予期される到着期間中に、目的地がハートビートメッセージの欠如を検出した場合、送信元が障害している、シャットダウンしている、または一般的に利用不可能であると判断することができます。

ハートビートプロトコル
ハートビートプロトコルは、一般的にリソース(例えば、浮動IPアドレス)の可用性を交渉および監視するために使用され、プロセスには、クラスタ内のすべてのノードにネットワークパケットを送信してその到達性を確認する手順が含まれます。通常、ハートビートがマシン上で開始された場合、他のハートビートネットワーク上のマシンと選挙プロセスを実行し、どのマシンがリソースを所有するかを決定します。2台以上のマシンを持つハートビートネットワークでは、ネットワークの2つの半分が機能しているが相互に通信できない「分断」を考慮することが重要です。このような状況では、リソースが各分断の1台のマシンにのみ所有されることが重要です。

ハートビートはマシンの健康状態を示すために使用されるため、ハートビートプロトコルとそれが実行するトランスポートはできるだけ信頼性が高いことが重要です。誤警報によるフェイルオーバーは、リソースによっては非常に望ましくありません。実際の障害に迅速に対処することも重要であり、ハートビートメッセージの信頼性をさらに示します。この理由から、ハートビートが複数のトランスポートを通じて実行されることが多く望ましいです;例えば、UDP/IPを使用するイーサネットセグメントとシリアルリンク。

ノードの「クラスタメンバー」はネットワーク到達性の性質であり、マスターがノードと通信できる場合、それがクラスタのメンバーと考えられ、「死亡」となります。ハートビートプログラム全体は、さまざまなサブシステムで構成されています:

ハートビートサブシステム(HS):ノードがクラスタ内に存在するかどうかを「keepalive」または「ハートビートメッセージ」のシリーズを通じて監視するサブシステム。

クラスタマネージャ(CM):クラスタ内のサブシステム(通常はマスターサーバー)で、「クラスタメンバー」を監視し、どのリソースがどのノードに配置されているかを記録します。

クラスタトランジション(CT):ノードがクラスタに参加したり離脱したりした場合、このサブシステムはそのような発生を監視し、システムの再バランスと再構成をトリガーするためにマスターを分散する責任があります。

ハートビートメッセージは、ブロードキャストやマルチキャストなどの技術を通じて、定期的に大規模なクラスタで送信されます。CMがクラスタ全体でトランザクションを実行するため、最も一般的なパターンはすべてのノードにハートビートメッセージを送信し、ブロッキングなしで応答を「待つ」ことです。ハートビートまたはkeepaliveメッセージは、すべてのクラスタメンバーに送信される非アプリケーション関連のクラスタ制御メッセージの圧倒的多数を占めるため、主要なクリティカルシステムでは、シリアルポートなどの非IPプロトコルをハートビートを提供するために使用されます。

= デザインと実装 =
マスターサーバー上のすべてのCMは、管理する各ノードに対して3つの状態(Down、Init、Alive)を持つ有限状態機械を維持します。新しいノードが参加するたびに、CMはノードの状態をDownからInitに変更し、「起動メッセージ」をブロードキャストします。ノードはそのメッセージを受け取り、起動手順を実行します。その後、認証メッセージで応答し、CMはノードをクラスタのメンバーとして含め、ノードの状態をInitからAliveに遷移させます。Alive状態のすべてのノードは、HSサブシステムから定期的にブロードキャストされたハートビートメッセージを受け取り、タイムアウト範囲内で応答メッセージを期待します。CMが応答ハートビートメッセージを受け取らなかった場合、ノードは利用不可能と考えられ、CMによってそのノードの状態がAliveからDownに遷移します。各状態遷移間の実行されるプロシージャやスクリプト、および行動は、システムの実装詳細です。

ハートビートネットワーク
ハートビートネットワークは、クラスタ内のノードのみが共有するプライベートネットワークであり、クラスタの外からアクセスできません。クラスタノードは、クラスタの操作を維持するために必要なメッセージを交換するために使用されます。ハートビートメソッドは、ネットワークを通じて送信されるシグナルのFIFO(先入先出)性を利用します。すべてのメッセージが受信されたことを確認することで、システムはイベントが適切に並べ替えられることを確保します。

この通信プロトコルでは、各ノードは指定された間隔、例えばdeltaでメッセージを送信し、生きているかどうかを確認します。これらのメッセージは、ネットワークに遅延メッセージがないことを決定する助けになる制御メッセージとして視覚化されます。受信ノード「sync」と呼ばれるノードは、受信メッセージの順序化リストを維持します。指定された時刻より後のタイムスタンプを持つメッセージがすべてのノードから受信された場合、システムはすべてのメッセージが受信されたと判断します。FIFO性がメッセージが順序化されていることを保証するためです。

一般的に、すべてのアプリケーションに対して最適なdeltaを選択することは難しいです。deltaが小さいとオーバーヘッドが大きくなり、大きすぎるとすべてが次のハートビートシグナルを待つためにパフォーマンスが低下します。

参考事項
監視タイマー、コンピュータの故障を検出し、回復するために使用される電子タイマー
ハートブルードバレンシティー

脚注
Nikoletseas, Sotiris; Rolim, José D.P., 編(2011)「センサネットワークにおける分散計算の理論的側面」モノグラフシリーズ、計算機科学の理論。EATCSシリーズ。ベルリン、ハイデルベルク:Springer Berlin Heidelberg。Bibcode:2011tadc.book.....N. doi:10.1007/978-3-642-14849-1. ISBN 978-3-642-14848-4. ISSN 1431-2654。
Hou, Zonghao; Huang, Yongxiang(2003年3月29日)「マルチマシン環境におけるハートビートの設計と実装」。第17回先進情報ネットワークおよびアプリケーション国際会議、2003年。AINA 2003。中国:IEEE Xplore。doi:10.1109/AINA.2003.1192949. ISBN 0-7695-1906-7。
Robertson, Alan(2000年)「Linux-HA Heartbeat System Design」(PDF)。USENIX年次技術会議。SUSE Labs。
Li, Fei-Fei; Yu, Xiang-Zhan; Wu, Gang(2009年7月11日)「多レベルハートビートプロトコルに基づく高可用性分散システムの設計と実装」。2009年第IITA国際会議、制御、自動化およびシステム工学(case 2009)。中国:IEEE。doi:10.1109/CASE.2009.115. ISBN 978-0-7695-3728-3。