ホームページ  >  記事  >  運用・保守  >  キープアライブはどのように機能しますか?

キープアライブはどのように機能しますか?

醉折花枝作酒筹
醉折花枝作酒筹オリジナル
2021-06-24 11:08:293592ブラウズ

キープアライブの動作原理は、TCP/IP 参照モデルの第 3、第 4、および第 5 層のスイッチング メカニズムに基づいて各サービス ノードのステータスを検出することです。サーバー ノードに異常または障害が発生した場合、Keepalived は障害が発生したサーバノードが検出され、クラスタシステムから削除されます。

キープアライブはどのように機能しますか?

#このチュートリアルの動作環境: centos7 システム、thinkpad t480 コンピューター。

Keepalived の概要

Keepalived は、Linux 向けの次の軽量レベルの高可用性ソリューションです。高可用性: 広義にはシステム全体の高可用性を指し、狭義にはホストの冗長化と引き継ぎを指します。

HeartBeat と同様の機能を実装しており、どちらもサービスやネットワークの高可用性を実現できますが、いくつかの違いがあります。HeartBeat は、HA ソフトウェアの基本要件を提供する、プロフェッショナルで完全に機能する高可用性ソフトウェアです。ハートビートの検出、リソースの引き継ぎ、クラスター内のサービスの検出、クラスター ノード上の共有 IP アドレスの所有者の転送などの機能。

HeartBeat は強力ですが、導入と使用が比較的面倒です。HeartBeat と比較して、Keepalived は主に仮想ルーティング冗長化による高可用性機能を実装しています。HeartBeat ほど強力ではありませんが、Keepalived は導入と使用が非常に簡単です非常にシンプルで、すべての構成に必要な構成ファイルは 1 つだけです。

キープアライブとは何ですか?

Keepalived はもともと LVS 用に設計されており、特にクラスター システム内の各サービス ノードのステータスを監視するために使用され、TCP/IP の第 3、第 4、および第 5 層スイッチング メカニズムに基づいています。参照モデル 各サービスノードのステータスを検出します サーバーノードが異常または作業に失敗した場合、Keepalivedがそれを検出し、障害が発生したサーバーノードをクラスタシステムから削除します これらのタスクはすべて自動的に完了し、手動介入は必要ありません手動作業は障害が発生したサービス ノードを修復する場合にのみ行われます。

その後、Keepalived により VRRP 機能が追加されました VRRP (VritrualRouterRedundancyProtocol、仮想ルーティング冗長化プロトコル) の目的は、スタティック ルーティングにおける単一障害点の問題を解決することです。VRRP はネットワークの中断のない安定した動作を実現するため、 Keepalvied は、サーバーの状態検出と障害切り分け機能を備えている一方で、HAcluster 機能も備えています。

ヘルス チェックとフェイルオーバーは、keepalived の 2 つの中心的な機能です。いわゆるヘルスチェックでは、TCP スリーウェイ ハンドシェイク、ICMP リクエスト、HTTP リクエスト、UDP エコー リクエストなどを使用して、ロード バランサの背後にある実際のサーバー (通常は実際のビジネスを実行するサーバー) を存続させますが、スイッチングに失敗した場合は、主にアプリケーション アクティブモードとスタンバイモードで構成されたロードバランサの場合、VRRPはアクティブロードバランサとスタンバイロードバランサのハートビートを維持するために使用されます アクティブロードバランサに問題が発生した場合、スタンバイロードバランサが対応する業務を実行することでトラフィックを最小限に抑えますサービスの安定性を提供します。

VRRP プロトコルと動作原理

実際のネットワーク環境。ホスト間の通信はスタティックルーティングまたは(デフォルトゲートウェイ)を設定することで完結しますが、ホスト間のルータに障害が発生すると通信ができなくなるため、この通信方式ではルータが単一点のボトルネックとなります。 VRRPプロトコルが導入されました。

VRRP プロトコルは、フォールト トレラントなマスター バックアップ モード プロトコルであり、ホストのネクストホップ ルートに障害が発生した場合に、別のルーターが障害が発生したルーターを置き換えることを保証します。障害が発生した場合、ホスト間のデータ通信に影響を与えることなく、デバイスの切り替えが透過的に実行されます。

キープアライブはどのように機能しますか?

仮想ルーター: 仮想ルーターは、VRRP バックアップ グループ内のすべてのルーターの集合です。これは論理的な概念であり、実際には存在しません。バックアップ グループの外側からバックアップ グループ内のルーターを見ると、グループ内のすべてのルーターが同じであるように感じられます。これは、グループ内であると理解できます: メイン ルーター、すべてのバックアップ ルーター = 仮想ルーター。

仮想ルーターには、仮想 IP アドレスと MAC アドレスがあります。ホストは仮想ルーターをデフォルト ゲートウェイとして使用します。仮想 MAC アドレスの形式は 00-00-5E-00-01-{VRID} です。通常、仮想ルーターは ARP 要求に対して仮想 MAC アドレスを使用しますが、仮想ルーターが特別に設定されている場合にのみ、インターフェイスの実際の MAC アドレスに応答します。

メインルーター (MASTER): 仮想ルーターは仮想 IP を通じて外部にサービスを提供します。仮想ルーター内では、同時に外部にサービスを提供する物理ルーターは 1 台だけです。サービスを提供するこの物理ルーターをマスタールーターと呼びます。通常、マスターは選出アルゴリズムによって生成され、外部サービス用の仮想 IP を持ち、ARP リクエスト、ICMP データ転送などのさまざまなネットワーク機能を提供します。

バックアップ ルーター (BACKUP): 仮想ルーター内の他の物理ルーターは、外部仮想 IP を持たず、外部ネットワーク機能も提供せず、MASTER の VRRP ステータス通知情報のみを受け取ります。これらのルーターはバックアップ ルーターと呼ばれます。メイン ルーターに障害が発生すると、BACKUP ロールのバックアップ ルーターが再選択され、新しいメイン ルーターが生成され、MASTER ロールに入り、外部サービスの提供を継続します。スイッチ全体はユーザーに対して完全に透過的です。

VRRP 選択メカニズム

VRRP ルーターには動作中に 3 つの状態があります:

1. 初期化状態: システムが起動すると、初期化に入ります。この状態では、ルーターは VRRP パケットを処理しません;

2. マスター状態;

3. バックアップ状態;

通常、メイン ルーターはマスター状態にあります。バックアップ ルータはバックアップ状態にあります。

VRRP は選出メカニズムを使用してルーターのステータスを決定します。優先選出:

1. VRRP グループ内の IP 所有者。仮想 IP アドレスが VRRP グループ内の VRRP ルーターの IP アドレスと同じである場合、このルーターが IP アドレスの所有者となり、このルーターがマスタールーターとして位置付けられます。

2. 優先順位を比較します。 IP アドレスの所有者がいない場合は、ルーターの優先順位を比較します。優先順位の範囲は 0 ~ 255 です。優先順位の高いルーターがメイン ルーターとして使用されます。

3. IP アドレスを比較します。 IP アドレスの所有者が存在せず、優先度が同じ場合は、IP アドレスの大きい方がメインルーターとして機能します。

下図に示すように、仮想 IP は 10.1.1.254 です。VRRP グループには IP アドレス所有者が存在しません。その後、優先度を比較してください。明らかに、RB と RA の優先度が RC よりも高いことがわかります。 RA と RB を比較すると、RB の方が IP アドレスが大きくなります。したがって、RB はグループ内のメインルーターです。

キープアライブはどのように機能しますか?

作業プロセス

ルータは VRRP 機能を使用した後、優先度に基づいてバックアップ グループ内での役割を決定します。優先度の高いルータがマスター ルータとなり、優先度の低いルータがバックアップ ルータになります。マスターは外部サービス用の仮想 IP を持ち、さまざまなネットワーク機能を提供し、定期的に VRRP メッセージを送信してバックアップ グループ内の他のデバイスに正常に動作していることを通知します。バックアップ ルーターは、マスターから送信されたメッセージ情報のみを受信して​​、デバイスの動作を監視します。マスター状態。マスターに障害が発生すると、バックアップ ルーターが選択され、優先度の高いバックアップが新しいマスターになります。

プリエンプション モードでは、バックアップ ルーターが VRRP メッセージを受信すると、自身の優先順位とメッセージ内の優先順位を比較します。アドバタイズメント メッセージ内の優先度よりも高い場合、マスター ルーターになります。そうでない場合は、バックアップ状態のままになります。

非プリエンプション モードでは、マスター ルーターに障害が発生しない限り、バックアップ グループ内のルーターは常にマスターまたはバックアップのステータスのままであり、バックアップ ルーターは後でより高い優先順位が設定されてもマスター ルーターにはなりません;

バックアップ ルーターが VRRP を受信しない場合タイマーが切れた後にマスター ルーターが送信したメッセージは、マスター ルーターが正常に動作していないと見なされ、バックアップ ルーターは自分がマスター ルーターであると認識し、VRRP パケットを外部に送信します。バックアップ グループ内のルーターは、優先順位に基づいてマスター ルーターを選択し、パケット転送機能を引き継ぎます。

Keepalvied の動作原理

サーバー実行ステータスと障害分離に関する Keepalvied の動作原理:

Keepalvied は、TCP/IP リファレンスの第 3 フェーズで動作します。モデル層、4、および 5 (物理層、リンク層):

ネットワーク層 (3): Keepalived は、ICMP プロトコルを通じてサーバー クラスター内の各ノードに ICMP パケットを送信します (Ping 機能に似ています)。 、ノードが応答パケットを返さない場合、ノードに障害が発生したと見なされ、Keepalived はノードの障害を報告し、障害が発生したノードをサーバー クラスターから削除します。

トランスポート層 (4): Keepalived は、トランスポート層の TCP プロトコルのポート接続およびスキャン技術を使用して、クラスター ノードのポートが正常かどうか (共通 WEB サーバーのポート 80 など) を判断します。または SSH サービス ポート 22。Keepalived は、トランスポート層でこれらのポート番号にデータ応答またはデータが返されていないことを検出すると、これらのポートが異常であると見なし、これらのポートに対応するノードをサーバー クラスターから強制的に削除します。

アプリケーション層 (5): Keepalived の動作モードもより包括的かつ複雑です。ユーザーは Keepalived の動作モードをカスタマイズできます。たとえば、プログラムまたはスクリプトを作成して Keepalived を実行できます。ユーザーが設定したパラメーターに従って、さまざまなプログラムやサービスが正常に機能するかどうかを検出します。Keepalived の検出結果がユーザーの設定と一致しない場合、Keepalived は対応するサーバーをサーバー クラスターから削除します。

Keepalived アーキテクチャ

Keepalived はもともと LVS 用に設計されており、Keepalived はクラスター ノードの状態を検出でき、IPVS は負荷分散機能を実現できるため、Keepalived はサードパーティのIPVS モジュールを使用すると、負荷分散システムを簡単に構築できます。 Keepalived の IPVS モジュールは構成可能であり、ロード バランシング機能が必要な場合は、Keepalived のコンパイル時にロード バランシング機能をオンにするか、コンパイル パラメータを通じてロード バランシング機能をオフにすることができます。

キープアライブはどのように機能しますか?

SchedulerI/OMultiplexer は、Keepalived のすべての内部タスク要求をロードする I/O 多重化分散スケジューラです。

Memory Mngt はメモリ管理メカニズムです。このフレームワークは、メモリにアクセスするための一般的な方法をいくつか提供します。

コントロール プレーンは、構成ファイルをコンパイルおよび解析できる keepalived のコントロール プレーンです。

コア コンポーネントこの部分には、主に 5 つの部分が含まれます。

  • Watchdog: これは、コンピューターの信頼性の分野における非常にシンプルかつ非常に効果的な検出ツールであり、Keepalived はチェッカーと VRRP プロセスを監視します。

  • チェッカ: これは Keepalived の最も基本的な機能であり、最も重要な機能であり、サーバーの実行状態を検出し、障害を切り分けることができます。

  • VRRP スタック: 後ほど引用する keepalived の VRRP 機能であり、HA クラスタでのフェイルオーバー機能を実現できます。ロード バランサー間のフェイルオーバー切り替えを担当します FailOver;

  • IPVS ラッパー: これは IPVS 機能の実装です。IPVSwarrper モジュールは、セットアップ可能なカーネル スペースを送信し、IPVS ルールを提供します。 IPVSモジュールは、ついにIPVSモジュールのロード機能を実現しました。

  • Netlink Reflector: 高可用性クラスターのフェールオーバー中に仮想 IP (VIP) の設定と切り替えを実装するために使用されます。実行すると、3 つのプロセス、つまり core (コア プロセス)、check、vrrp が開始されます。

  • - core: メイン プロセスのグローバル設定ファイルの起動、メンテナンス、ロードを担当します。

- check: ヘルスチェックを担当します

- vrrp: vrrp プロトコルの実装に使用されます

heartbeat/corosync との比較

3 つのクラスターHeartbeat、Corosync、Keepalived のコンポーネントどれを選択すればよいですか? Heartbeat と Corosync は同じタイプに属しますが、Keepalived、Heartbeat、Corosync はまったく同じタイプではありません。 Keepalived は、vrrp 仮想ルーティング冗長プロトコル方式を使用します。Heartbeat または Corosync は、ホストまたはネットワーク サービスに基づく高可用性方式です。簡単に言えば、Keepalived の目的は、ルーター、Heartbeat の高可用性をシミュレートすることです。または Corosync 目的は、サービスの高可用性を実現することです。

したがって、一般的に Keepalived はフロントエンドの高可用性を実現するために使用されます。フロントエンドの高可用性の一般的に使用される組み合わせには、一般的な LVS Keepalived、Nginx Keepalived、および HAproxy Keepalived が含まれます。 Heartbeat または Corosync は、サービスの高可用性を実現するために使用されます。一般的な組み合わせには、Web サーバーの高可用性を実現する Heartbeat v3 (Corosync) Pacemaker NFS Httpd と、MySQL サーバーの高可用性を実現する Heartbeat v3 (Corosync) Pacemaker NFS MySQL が含まれます。

要約すると、Keepalived は軽量の高可用性を実装しており、一般的にフロントエンドの高可用性のために使用され、共有ストレージを必要としません。通常、2 つのノードの高可用性のために使用されます。ハートビート (または Corosync) は通常、サービスの高可用性のために使用され、共有ストレージを必要とし、複数のノードの高可用性のために使用されます。

(推奨学習:

linux チュートリアル

)

以上がキープアライブはどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。