web-dev-qa-db-ja.com

keepalivedフェイルオーバー仮想IPパラメーター

1つの仮想IPを持つ2つのサーバー(AマスターとBバックアップ)があります。

サーバーAに障害が発生した場合に備えて、仮想IPをサーバーBに割り当てる必要があります。このために、keepalivedを構成しようとしています。

サーバー仮想IPはeth0:1で構成されていますサーバーB仮想IPは現在eth0:1の他のIPアドレスに設定されています

Keealivedの設定方法がわかりません。両方のサーバーに同じ仮想IPを割り当てて、keepalivedを開始するか、サーバーAでのみ仮想IPを設定する必要がありますか?

1
ivcode

まず、ネットワークインターフェイスが単一の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にフリップフロップのテイクオーバーなしで何をする必要があるかを決定させることです。

2