高可用性について読んでいますが、次のことを理解できません。フェイルオーバー時にプライマリIPがバックアップサーバーに移行しますが、MACアドレスも移行する必要があります。
具体的には、すべてのマシンには、マシン内のすべてのインターフェイスで使用できる一意のアドレスMACがあることを読みました。この部分はわかりません。 MACはNICに属していませんか?この文のインターフェースとはどういう意味ですか?
また、フェイルオーバー時に、クライアントはIP/MACマッピングを更新する必要があり、その3つの方法を見つける必要があります。そのうちの1つは、カスタムMACを使用し、パブリックIPとともにプライマリからバックアップに移動することです。これはどのように可能ですか?高可用性ソフトウェアを実行します。ペースメーカーはこれを行いますか?どうやって?
この本は正しいですが、省略されている部分があります。
仮想MACアドレスに基づいてサービスを作成するためにソフトウェアをクラスタリングする手順は非常に簡単です。サービスが起動すると、特定のIPアドレスが仮想MACアドレスにあることを示すGratuitousArpパケットが提供されます。フェイルオーバーが発生すると、「ダウン」ノードはローカルIP/MACバインディングを削除し、新しいノードはその仮想MACアドレスとIPの組み合わせのリッスンを開始します。騒ぎも大騒ぎもありません。
クラスタリングソフトウェアで使用されるもう1つの方法は、仮想MACをまったく気にせず、GratuitousARPに完全に依存することです。このようなシステムの起動/フェイルオーバーシーケンスは次のようになります。
私の経験では、2番目の方法である純粋なG-ARPは、最近のほとんどのLinuxクラスタリングで使用されている方法です。ただし、どちらの方法も有効であり、使用されています。 G-ARP方式の利点は、仮想MACアドレスの割り当てについていじくり回す必要がないことです。純粋な仮想MAC方式の利点は、特定のサブネットで動作するG-ARPに依存しないことです。
これはあなたがかなり悪い読み物を見つけるように聞こえます。参照を投稿してもよろしいですか?
一般的に、OSI層モデルはこれらの問題のほとんどを解決し、一度に複数の層で作業する必要はほとんどありません。
MACアドレスは、イーサネットセグメントに1回だけ表示されます。物理マシンでは、これらはグローバルに一意であり、2回表示されることはありません(同じマシン上の複数のNICでも表示されません)。仮想マシンでは、ソフトウェアでMACを設定し、プライベートIP範囲と同様のプライベートMAC範囲の一部を使用する必要があります。
IPの高可用性を実現するには、別のホストでIPを構成するだけで十分です。レイヤー2のオペレーティングシステムとネットワークインフラストラクチャは、MAC/IPマッピングを自動的に更新します。
ただし、一部の機器は頑固であり、キャッシュを更新するように強制するために「無償の」ARP要求が必要です。
Linuxでは、「ucarp」と追加のスクリプトを使用して、これらの「クラスター」IPでマシンを自動的に構成します。
一部のHAシナリオでは、HAイベントで、IPアドレスのみがスタンバイノードによって取り戻されます。この場合、スタンバイノードは、同じイーサネットセグメント上のデバイスのARPテーブルを更新するために、一方的なARPパケットをブロードキャストする必要があります。未承諾のARPパケットを受信すると、デバイスは通常、ARPテーブルを直接更新しませんが(ネットワークを簡単にハッキングできるようになります)、対応するIPアドレスのARPエントリを無効にします。次回デバイスがHAサービスと通信する必要があるとき、デバイスはARP要求を実行して、IPアドレスに対応するMACを取得します。
他のいくつかのHAシナリオ(一部のルーターやファイアウォールなど)では、MACアドレスとIPアドレスの両方がスタンバイノードによって取り戻されます。これにより、同じイーサネットセグメント上のクライアントは、ARPテーブルをそのまま維持できますが、スタンバイノードがARPブロードキャスト(または他の形式のネットワークトラフィック)を保存できることを意味するわけではありません。この場合、トラフィックがデッドデバイスポートで終了しないように、スイッチのMAC-to-portテーブルを更新するためにARPブロードキャスト(または他のネットワークトラフィック)が必要です。
詳細については、これを読むことができます(スイッチの詳細な内部動作)[ ネットワークスニッフィングソフトウェアはスイッチ上でどのように動作しますか? 。