1つの仮想IPを持つ2つのサーバー(AマスターとBバックアップ)があります。
サーバーAに障害が発生した場合に備えて、仮想IPをサーバーBに割り当てる必要があります。このために、keepalivedを構成しようとしています。
サーバー仮想IPはeth0:1で構成されていますサーバーB仮想IPは現在eth0:1の他のIPアドレスに設定されています
Keealivedの設定方法がわかりません。両方のサーバーに同じ仮想IPを割り当てて、keepalivedを開始するか、サーバーAでのみ仮想IPを設定する必要がありますか?
まず、ネットワークインターフェイスが単一のIPアドレスしかホストできなかった約15年前、eth0:1のようなエイリアスインターフェイスは重要でした。 10年以上の間、インターフェイスエイリアスを使用せずに、同じネットワークインターフェイスに複数のIPアドレスを追加できます。
/sbin/ip address add 192.0.2.123/32 dev eth0
/sbin/ip address add 192.0.2.124/32 dev eth0
/sbin/ip address add 192.0.2.125/32 dev eth0
/sbin/ip address list
/sbin/ip address del 192.0.2.124/32 dev eth0
/sbin/ip address list dev eth0
したがって、インターフェイスごとに1つのIPアドレスのみを持つという考えを検討した場合に備えて、忘れてください。そうする必要はあまりなく、keepalivedもその考えに従いません。
基本的に、個々のIPを各サーバーに手動で割り当て、keepalivedを構成して、サーバーインターフェイスの1つに追加の仮想IPのリストを追加または削除します。
vrrp_instance VRRP_1 {
state BACKUP
interface eth0
virtual_router_id 101
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass sometext
}
virtual_ipaddress {
192.0.2.123
}
}
これにより、両方のホストのキープアライブが定期的に(手動で構成されたIPを使用して)仮想IPの特定のリスト(最大20)をホストする準備ができていることを通知します。そのアナウンスには、優先度(8ビット)と認証トークン(最大8文字)も含まれています。
ホストの1つが、同じ認証を使用し、同じ最大リストの同じvirtual_router_idのアナウンスを表示しない場合。 20個のIPがあり、数秒以内にそれ自体よりも優先度が高くない場合、それらの余分なIPがホストのインターフェースに追加されます。それ以外の場合は、ホストのインターフェースからそれらが削除されます。
ホストが同じ優先度を使用している場合:アナウンスIPアドレスは、その仮想IPアドレスをホストするユーザーを決定するためにも使用されます。
また、keepalivedは、ネットワーク上の他の誰よりも同じvirtual_router_idを使用しているが、異なるIPリストまたは異なる認証トークンを使用している場合に警告します(他のアナウンスは無視します)。
keepalivedの「MASTER」および「BACKUP」状態は、起動時の初期化の前提として使用されます。「MASTER」状態で開始するシステムは、他のアナウンスが到着するのを待たずに、すぐに追加のIPアドレスの追加を開始しますが、BACKUPノードは追加のIPアドレスを追加するかどうかを決定する前に、いくつかの潜在的なアナウンスが通過するのを待ちます。
BACKUPノードがMASTERよりも高い優先度のIPアドレスをアナウンスしていないことを確認してください。それ以外の場合、MASTERノードはkeepalivedを開始した直後にIPアドレスを引き継ぎ、数秒後、BACKUPノードがそのIPアドレスを引き継ぎます。
私の個人的な好みは、「MASTER」を気にせず、すべてのノードを「BACKUP」に構成し、VRRPにフリップフロップのテイクオーバーなしで何をする必要があるかを決定させることです。