コンピュータサイエンスにおいて、ハートビートとは、ハードウェアまたはソフトウェアによって生成される周期的な信号であり、正常な動作を示すため、またはコンピュータシステムの他の部分を同期させるために使用される。[1] [2]ハートビートメカニズムは、ミッションクリティカルなシステムにおける一般的な技術の1つであり、ネットワークサービスの高可用性とフォールトトレランスを提供する。これは、マスターサーバーによって管理されるネットワーククラスターに属するノードまたはデーモンのネットワークまたはシステム障害を検出し、クラスター上の残りの冗長ノードを使用して障害が発生したノードの負荷を引き継いで、システムの自動適応と再バランスを目的としている。[3] [1]通常、ハートビートは、数秒のオーダーの定期的な間隔でマシン間で送信されます。これをハートビートメッセージと呼びます。[4]エンドポイントが一定時間(通常は数回のハートビート間隔)ハートビートを受信しない場合、ハートビートを送信するはずだったマシンに障害が発生したと見なされます。[5]ハートビートメッセージは通常、発信元の起動から発信元のシャットダウンまで定期的または繰り返してノンストップで送信されます。宛先は、予測される到着期間中にハートビート メッセージがないことを検出すると、発信元に障害が発生したか、シャットダウンしたか、または通常は利用できなくなったと判断する場合があります。
ハートビートプロトコル
ハートビートプロトコルは一般に、フローティングIPアドレスなどのリソースの可用性をネゴシエートおよび監視するために使用され、その手順では、ネットワークパケットをクラスター内のすべてのノードに送信して、その到達可能性を確認します。[3]通常、ハートビートがマシンで開始されると、ハートビートネットワーク上の他のマシンと選出プロセスが実行され、どのマシンがリソースを所有しているかが決定されます。 3台以上のマシンからなるハートビートネットワークでは、パーティショニングを考慮することが重要です。パーティショニングでは、ネットワークの2つの半分が機能していても、互いに通信できない可能性があります。このような状況では、リソースが各パーティションの1台のマシンではなく、1台のマシンによってのみ所有されることが重要です。
ハートビートはマシンの健全性を示すために使われるため、ハートビート プロトコルとそれが実行されるトランスポートが可能な限り信頼できることが重要です。リソースによっては、誤報によるフェイルオーバーが発生することは非常に望ましくない場合があります。実際の障害に迅速に対応することも重要であり、ハートビートメッセージの信頼性をさらに高めます。このため、ハートビートを複数のトランスポート (たとえば、UDP / IP を使用するEthernetセグメントとシリアル リンク) で実行することが望ましい場合がよくあります。
ノードの「クラスタメンバーシップ」は、ネットワーク到達可能性のプロパティです。マスターがノードと通信できる場合、そのノードはクラスタのメンバーとみなされ、そうでない場合は「デッド」とみなされます。[6]ハートビートプログラムは全体として、さまざまなサブシステムで構成されています。[7]
- ハートビート サブシステム(HS): 一連のキープアライブまたは「ハートビート メッセージ」を通じてクラスター内のノードの存在を監視するサブシステム。
- クラスター マネージャー(CM): クラスター内のサブシステム (通常はマスター サーバー) で、「クラスター メンバー」を追跡し、どのリソースがどのノードにあるかを記録します。
- クラスター遷移(CT): ノードがクラスターに参加したりクラスターから離脱したりすると、このサブシステムは、負荷を分散するためにマスターを再バランスおよび再構成するイベントをトリガーする目的で、そのような発生を追跡する役割を担います。
ハートビート メッセージは、大規模なクラスターではブロードキャストやマルチキャストなどの技術を使用して定期的に送信されます。 [6] CM はクラスター全体でトランザクションを実行するため、最も一般的なパターンは、すべてのノードにハートビート メッセージを送信し、非ブロッキング方式で応答を「待機」することです。[8]ハートビート メッセージまたはキープアライブメッセージは、アプリケーションに関連しないクラスター制御メッセージの圧倒的多数を占め、クラスターのすべてのメンバーにも送信されるため、主要な重要なシステムには、ハートビートを配信するためのシリアル ポートなどの非IPプロトコルも含まれています。[9]
設計と実装
マスター サーバー上のすべての CM は、管理する各ノードに対して、ダウン、初期化、およびアライブの 3 つの状態を持つ有限状態マシンを維持します。 [10]新しいノードが参加するたびに、CM はノードの状態をダウンから初期化に変更し、「ブートアップ メッセージ」をブロードキャストします。ノードはこれを受信し、一連の起動手順を実行します。次に、確認応答メッセージで応答し、CM はノードをクラスターのメンバーとして含め、ノードの状態を初期化からアライブに遷移させます。アライブ状態のすべてのノードは、HS サブシステムから定期的にブロードキャスト ハートビート メッセージを受信し、タイムアウト範囲内で確認応答メッセージが返されることを期待します。CM が確認応答ハートビート メッセージを受信しなかった場合、ノードは使用不可と見なされ、CM によってそのノードの状態がアライブからダウンに遷移します。[11]実行する手順またはスクリプト、および各状態遷移間で行われるアクションは、システムの 実装の詳細です。
ハートビートネットワーク
ハートビートネットワークは、クラスター内のノードによってのみ共有され、クラスターの外部からはアクセスできないプライベートネットワークです。これは、クラスターノードによって、各ノードの状態を監視し、クラスターの動作を維持するために必要なメッセージを相互に通信するために使用されます。ハートビート方式では、ネットワークを介して送信される信号のFIFO特性を使用します。すべてのメッセージが受信されたことを確認することで、システムはイベントが適切に順序付けされることを保証します。[12]
この通信プロトコルでは、各ノードが指定された間隔、たとえばデルタでメッセージを送り返し、事実上、ノードが生きていてハートビートがあることを確認します。これらのメッセージは、ネットワークに遅延メッセージが含まれていないことを判断するのに役立つ制御メッセージと見なされます。「同期」と呼ばれる受信ノードは、受信メッセージの順序付きリストを維持します。指定されたマークされた時間よりも後のタイムスタンプを持つメッセージが各ノードから受信されると、システムはすべてのメッセージが受信されたと判断します。FIFOプロパティにより、メッセージが順序付けられていることが保証されます。[13]
一般的に、すべてのアプリケーションに最適なデルタを選択することは困難です。デルタが小さすぎるとオーバーヘッドが大きくなりすぎ、大きすぎるとすべてが次のハートビート信号を待つためパフォーマンスが低下します。[14]
参照
- ウォッチドッグタイマー、コンピュータの故障を検出して回復するために使用される電子タイマー
- Heartbleed脆弱性
注記
- ^ Hou & Huang 2003、p.1より。
- ^ 「心拍の定義」。pcmag.com百科事典。 2020年10月7日閲覧。
- ^ ロバートソン 2000、p. 1より。
- ^ US 4710926、Donald W. Brown、James W. Leth、James E. Vandendorpe、「分散処理システムにおける障害回復」、1987 年 12 月 1 日発行
- ^ Kawazoe Aguilera, Marcos; Chen, Wei; Toueg, Sam (1997). 「Heartbeat: 休止状態で信頼性の高い通信を実現するタイムアウトのない障害検出器」(PDF) .分散アルゴリズム. ベルリン、ハイデルベルク: Springer Berlin Heidelberg. pp. 126–140. doi :10.1007/bfb0030680. hdl :1813/7286. ISBN 978-3-540-63575-8. ISSN 0302-9743.
- ^ ロバートソン 2000、p. 2より。
- ^ ロバートソン 2000、p.1-2。
- ^ ロバートソン 2000、2-3ページ。
- ^ ロバートソン 2000、5ページ。
- ^ Li, Yu & Wu 2009、p.2。
- ^ Li, Yu & Wu 2009、p.2-3。
- ^ ニコレットセアス 2011、304ページ。
- ^ ニコレシーズ 2011、p. 304-305。
- ^ ニコレットセアス 2011、306ページ。
参考文献
- Nikoletseas, Sotiris; Rolim, José DP 編 (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 ハートビート システム設計(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。
