キープアライブの動作原理は、TCP/IP 参照モデルの第 3、第 4、および第 5 層のスイッチング メカニズムに基づいて各サービス ノードのステータスを検出することです。サーバー ノードに異常または障害が発生した場合、Keepalived は障害が発生したサーバノードが検出され、クラスタシステムから削除されます。
#このチュートリアルの動作環境: centos7 システム、thinkpad t480 コンピューター。
バックアップ ルーター (BACKUP): 仮想ルーター内の他の物理ルーターは、外部仮想 IP を持たず、外部ネットワーク機能も提供せず、MASTER の VRRP ステータス通知情報のみを受け取ります。これらのルーターはバックアップ ルーターと呼ばれます。メイン ルーターに障害が発生すると、BACKUP ロールのバックアップ ルーターが再選択され、新しいメイン ルーターが生成され、MASTER ロールに入り、外部サービスの提供を継続します。スイッチ全体はユーザーに対して完全に透過的です。
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 は、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 はもともと 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 が開始されます。
- check: ヘルスチェックを担当します
- vrrp: vrrp プロトコルの実装に使用されます
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 サイトの他の関連記事を参照してください。