GNU/Linux >> Linux の 問題 >  >> Linux

クラスタ内の単純なフェイルオーバーを管理するためのKeepalivedの使用

「高可用性」という用語を聞くと、平均的なシステム管理者の手の届かない難解なテクノロジーを備えた大規模で複雑な環境を思い浮かべるでしょう。ただし、基本的なHAは複雑である必要はありません。このシリーズでは、Keepalivedを使用した基本的な高可用性サービスの実装について学習します。 。単純なフェイルオーバーの状況と、外部イベントに応答してフェイルオーバーをトリガーするために使用されるより複雑な構成について説明します。まず、Keepalivedの基本から始めます。 およびVirtual Router Redundancy Protocol (VRRP)。

この記事は、基本的なセットアップから高度なLinuxHAの概念まですべてをカバーする一連の3つの記事の最初の記事です。

KeepalivedとVRRPの基本

VRT Network Equipment Extension、CCBY-SA3.0を介して利用できる図のネットワーク記号。

Enable Sysadminネットワークの記事をいくつか読んだことがあれば、すべてのシステム管理者がネットワークの基礎をしっかりと理解することで恩恵を受けることができることをご存知でしょう。 Keepalivedの知識 違いはありません。 HAフェイルオーバーを支えるプロトコルは、Virtual Router Redundancy Protocolです。 (VRRP)、およびKeepalived このプロトコルのバージョン2とバージョン3の両方の実装を提供します。

サーバー上のルーター用に構築されたプロトコルを使用しているのは奇妙に聞こえるかもしれません。ネットワーク機器に冗長性を提供するために使用されるのと同じネットワークテクノロジーが、サーバー環境でも冗長性を提供できることがわかりました。多くの場合、ルーターはペアで展開され、1つのルーターがアクティブで、もう1つのルーターがスタンバイであり、アクティブなルーターに障害が発生した場合に備えて準備ができています。これらの同じ概念がサーバーに適用される場合があります。

VRRP 仮想IPアドレス(VIP)の概念を使用します。 1つ以上のホスト(ルーター、サーバーなど)が選挙に参加して、そのVIPを制御するホストを決定します。一度に1つのホスト(マスター)のみがVIPを制御します。マスターに障害が発生した場合、VRRP その障害を検出し、スタンバイホストにすばやくフェイルオーバーするためのメカニズムを提供します。上記のトポロジでは、server1がマスターであり、192.168.122.200のIPアドレスを担当します。 server1に障害が発生した場合、server2がこのIPを引き継ぎます。

Keepalivedにも注意する価値があります VRRP以上のものを提供します 実装。 Keepalived また、負荷分散のためにLinuxIP仮想サーバーを構成する機能もあります。 IPVSの構成はこのシリーズの範囲外ですが、Keepalivedを使用できることを知っておくとよいでしょう。 ご使用の環境に合わせてオールインワンの冗長ロードバランサーを構成します。

VRRPプロトコル操作

VRRP の動作は、RFC 3768(バージョン2)およびRFC 5798(バージョン3)で指定されています。このシリーズの記事ではバージョン2を使用します。 RFCを確認することはプロトコルの動作を完全に理解するための最良の方法ですが、Keepalivedの使用を開始するために専門家である必要はありません。 ご使用の環境でのの実装。ただし、VRRPの基本的な知識 の動作により、環境内での操作とトラブルシューティングをより適切に行うことができます。

VRRPの最初のステップ の操作は、どのサーバー(またはプロトコル仕様ではルーター)が共有IPアドレスを保持するかを決定するためのマスターの選択です。 VRRP サーバーは優先度の値で構成されます。これは重みのように考えることができます。優先度が最も高いサーバーがVRRPの所有者になります 住所。仕様では、マスターの優先度は255である必要があることが示されています 、255よりも小さい値のバックアップサーバー 。実際には、255の優先度 255.でなくても、プロトコルが最も優先度の高いサーバーを選択するため、厳密には必要ありません。

マスターが確立されると、他のすべてのサーバーは、マスターから送信される定期的なメッセージをリッスンして、マスターがまだ生きていることを示します。マスターはこれらのアドバタイズメントを定期的に送信します。マスターが生きている限り、マスターはVIPのトラフィックを処理し、アドバタイズメントを送信します。マスターが何らかの理由でオフラインになった場合、最も優先度の高いバックアップサーバーが引き継ぎます。同様に、プリエンプションと呼ばれる機能により、優先度の高いサーバーがオンラインになったときに自動的にマスターになることができます。

マスターが最初にオンラインになり、IPアドレスを引き継ぐとき、マスターは無償のARPをブロードキャストします。このメッセージは、ネットワーク上の他のサーバーにVIPに関連付けられたMACアドレスを通知し、レイヤー2でトラフィックを正しくアドレス指定できるようにします。また、VIPフェイルオーバーが高速になります。ホストは、ARPタイマーの期限が切れるのを待つ必要がなく、次のことができます。 VIPを所有するホストの正しいMACアドレスでARPテーブルを更新するだけです。

パケット形式

プロトコルの動作の理論的側面を掘り下げるのは少し退屈かもしれませんが、テクノロジーがどのように動作するかを理解するために(そしてそれが壊れたときのトラブルシューティングのために)重要です。 VRRPのパケット構造を見てみましょう Wiresharkを使用した広告では、いくつかのことがより明確になります。

まず、イーサネットとIPの宛先アドレスの両方がmulticastであることに気付くでしょう。 アドレス。マルチキャストトラフィックは、その名前が示すように、そのマルチキャストアドレスを「リッスン」しているネットワーク上の複数のホストに送信されます。ほとんどのネットワークは複雑なマルチキャスト構成を回避するため、VRRPのマルチキャストトラフィック ローカルネットワークセグメントのブロードキャストトラフィックになり、すべてのホストに送信されます。

VRRPも確認できます TCPでもUDPでもありません。 VRRP 動作にIPプロトコル番号112を使用します。 VRRPからのこのトラフィックを許可するようにホストファイアウォールを構成する必要がある場合があるため、このプロトコル番号を知ることは重要です。 環境内のサーバー。

VRRPを見始めたら パケットのセクションには、マスターを選出し、他のサーバーに現在のマスターを通知するために必要なすべての情報が含まれていることがわかります。

  • 仮想ルーターID(VRID)は、VRRPの一意の識別子です。 ネットワーク上のインスタンスとそのIPアドレス(複数存在する場合があります)。同じLANでVRIDを再利用することは避けてください。ただし、VRIDは異なるレイヤー2ネットワークで安全に再利用できます。
  • 優先度は、アドバタイズメントを送信するホストの優先度です。マスターが選出されると、これはマスターの定義された優先順位が何であれです。仕様を厳密に順守するには、255を使用する必要があります マスターの優先順位についてですが、多くの構成は異なる値を選択します。
  • 認証タイプと認証文字列には、VRRPのメンバーを認証するための簡単なテキストパスワードが含まれています 互いにグループ化します。
  • アドバタイズメント間隔は、マスターによってアドバタイズメントが送信される頻度を示します。この場合、マスターは毎秒広告を送信します。
  • IPアドレスには、マスターが担当する1つ以上のIPアドレスが含まれます。このシリーズは単一のIPアドレスのフェイルオーバーのみを対象としていますが、VRRPを使用することもできます。 複数のIPを管理します。

結論

この記事では、Keepalivedを支える基本的なプロトコルについて説明しました。 、VRRPのソフトウェア実装 Linuxの場合。プロトコルの詳細を確認するのはつまらないように見えるかもしれませんが、効果的に構成してトラブルシューティングできるように、環境で動作しているネットワークプロトコルを理解することが重要です。次の記事では、Keepalivedをインストールして構成する方法を学習します。 。

[Linuxシステム管理についてもっと知る必要がありますか? RedHatシステム管理コースの受講を検討してください。 ]


Linux
  1. 自動化のためのBashの使用

  2. ネットワークのトラブルシューティングにSSツールを使用する

  3. CentOS / RHEL :chage を使用したユーザーのパスワード エージングの管理 (実践例付き)

  1. cronを使用してタスクをスケジュールするためのLinuxのヒント

  2. Linux 用 SQLCMD での変数の使用

  3. KVM ゲストに virtio を使用していますか?

  1. Linuxパッケージ管理のためのAppImageの使用

  2. Linuxでの使い捨てcronジョブにatを使用する

  3. LinuxでAsciiDocを使用するための完全ガイド