ハートビート(コンピューティング)

コンピュータサイエンスにおいて、ハートビートとは、ハードウェアまたはソフトウェアによって生成される定期的な信号で、正常な動作を示すため、またはコンピュータシステムの他の部分を同期させるために使用される。[ 1 ] [ 2 ]ハートビートメカニズムは、ミッションクリティカルなシステムにおける一般的手法の1つであり、マスターサーバーによって管理されるネットワーククラスターに属するノードまたはデーモンネットワークまたはシステム障害を検出することにより、ネットワークサービスの高可用性とフォールトトレランスを提供する。その目的は、クラスターの残りの冗長ノードを使用して障害が発生したノードの負荷を引き継ぎ、一定のサービスを提供することで、システムの自動適応と再バランスを実現することである。 [ 3 ] [ 1 ]通常、ハートビートは、数秒のオーダーで定期的にマシン間で送信されます。これをハートビートメッセージといいます。[ 4 ] [ 5 ]ハートビートメッセージは通常、発信元の起動からシャットダウンまで、定期的または繰り返してノンストップで送信されます。宛先は、予想される到着期間内にハートビートメッセージが届かないことを検知した場合、発信元に障害が発生したか、シャットダウンしたか、あるいは一般的に利用できなくなったと判断する場合があります。

ハートビートプロトコル

ハートビートプロトコルは一般に、フローティングIPアドレスなどのリソースの可用性をネゴシエートおよび監視するために使用されます。この手順では、クラスター内のすべてのノードにネットワークパケットを送信して、到達可能性を確認します。[ 3 ]通常、ハートビートがマシンで開始されると、ハートビートネットワーク上の他のマシンと選出プロセスが実行され、どのマシンがリソースを所有しているかが決定されます。 3台以上のマシンからなるハートビートネットワークでは、パーティショニングを考慮することが重要です。パーティショニングでは、ネットワークの2つの半分が機能していても、互いに通信できない可能性があります。このような状況では、リソースが各パーティションの1台のマシンではなく、1台のマシンによってのみ所有されることが重要です。

ハートビートはマシンの健全性を示すために使用されるため、ハートビートプロトコルとそれが実行されるトランスポートは可能な限り信頼性が高いことが重要です。誤報によるフェイルオーバーは、リソースによっては極めて望ましくない状況となる可能性があります。また、実際の障害に迅速に対応することも重要であり、ハートビートメッセージの信頼性をさらに高めます。このため、ハートビートを複数のトランスポート、例えばUDP / IPを使用するイーサネットセグメントとシリアルリンク上で実行することが多くの場合望ましいです。

ノードの「クラスタメンバーシップ」は、ネットワークの到達可能性の特性です。マスターがノードと通信できる場合、そのノードはクラスタのメンバーとみなされ、そうでない場合は「デッド」とみなされます。[ 6 ]ハートビートプログラム全体は、さまざまなサブシステムで構成されています。[ 7 ]

  • ハートビート サブシステム(HS): 一連のキープアライブまたは「ハートビート メッセージ」を通じてクラスター内のノードの存在を監視するサブシステム。
  • クラスター マネージャー(CM): クラスター内のサブシステム (通常はマスター サーバー) で、「クラスター メンバー」を追跡し、どのリソースがどのノードにあるかを記録します。
  • クラスター遷移(CT): ノードがクラスターに参加したり、クラスターから離脱したりすると、このサブシステムは、負荷を分散するためにマスターの再バランス調整と再構成を行うイベントをトリガーする目的で、そのような発生を追跡する役割を担います。

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

設計と実装

マスターサーバー上のすべてのCMは、管理する各ノードについて、ダウン、初期化、アライブの3つの状態を持つ有限状態マシンを維持しています。 [ 10 ]新しいノードが参加するたびに、CMはノードの状態をダウンから初期化に変更し、「ブートアップメッセージ」をブロードキャストします。ノードはこれを受信し、一連の起動手順を実行します。その後、確認応答メッセージで応答し、CMはそのノードをクラスタのメンバーとして追加し、ノードの状態を初期化からアライブに遷移させます。アライブ状態にあるすべてのノードは、HSサブシステムから定期的にブロードキャストハートビートメッセージを受信し、タイムアウト範囲内で確認応答メッセージが返されるのを待ちます。CMが確認応答ハートビートメッセージを受信しなかった場合、そのノードは利用不可とみなされ、CMによってそのノードの状態がアライブからダウンに遷移します。[ 11 ]各状態遷移の間に実行される手順またはスクリプト、および実行されるアクションは、システムの 実装の詳細です。

ハートビートネットワーク

ハートビートネットワークは、クラスタ内のノードのみが共有するプライベートネットワークであり、クラスタ外部からはアクセスできません。クラスタノードは、各ノードの状態を監視し、クラスタの動作維持に必要なメッセージを相互に通信するためにハートビートネットワークを使用します。ハートビート方式は、ネットワークを介して送信される信号のFIFO特性を利用します。すべてのメッセージが受信されたことを確認することで、システムはイベントが適切に順序付けされることを保証します。[ 12 ]

この通信プロトコルでは、各ノードは指定された間隔(例えばdelta )でメッセージを送信し、実質的にはノードが生存しハートビートを持っていることを確認します。これらのメッセージは、ネットワークに遅延メッセージが含まれていないことを判断するのに役立つ制御メッセージと見なされます。「同期」と呼ばれる受信ノードは、受信メッセージの順序付きリストを管理します。指定されたマーク時刻よりも後のタイムスタンプを持つメッセージがすべてのノードから受信されると、システムはすべてのメッセージが受信されたと判断されます。これは、FIFO特性によってメッセージが順序付けられていることが保証されるためです。[ 13 ]

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

参照

注記

  1. ^ a b Hou & Huang 2003、p. 1.
  2. ^ 「心拍の定義」pcmag.com百科事典2020年10月7日閲覧
  3. ^ a bロバートソン 2000、p. 1。
  4. ^ US 4710926、ドナルド・W・ブラウン、ジェームズ・W・レス、ジェームズ・E・ヴァンデンドルペ、「分散処理システムにおける障害回復」、1987年12月1日公開 
  5. ^ 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 .
  6. ^ a bロバートソン 2000、p.2。
  7. ^ロバートソン 2000、p.1-2。
  8. ^ロバートソン 2000、2-3ページ。
  9. ^ロバートソン 2000、5ページ。
  10. ^リー、ユウ、ウー 2009、p. 2.
  11. ^リー、ユウ、ウー 2009、p. 2-3.
  12. ^ニコレチアス 2011、304頁。
  13. ^ニコレシーズ 2011、p. 304-305。
  14. ^ニコレチアス 2011、306頁。

参考文献