centos 7でkeepalivedを使用してIPフェイルオーバーを試みると、仮想IPへの要求は転送されません。

centos 7でkeepalivedを使用してIPフェイルオーバーを試みると、仮想IPへの要求は転送されません。

Centos 7でkeepalivedを使用してIPフェイルオーバーをテストしようとしています。仮想マシンに3つのCentos 7インスタンスがインストールされています。だから3つのサーバーがあります。そのうちの2つでkeepalivedを実行しようとしていますが、3番目のセントは実際のサーバーとして機能し、要求はそのサーバーに転送されます。 Keepalivedの設定は最後に提供されます。 conf ファイルの 192.168.10.40 は物理サーバーの IP アドレスです。実際のサーバーでは、小さなNodejsサーバーを実行し、要求が送信されると成功として応答します。 192.168.10.40:3869 の nodejs サーバーに直接要求を送信するとき。応答は行われますが、仮想IP 192.168.10.100、ポート3869を使用して接続しようとすると応答がありません。 Keepalivedは両方のサーバーで正常に動作しますが。

メインサーバーから

Vrrp_instance_pi1 {
state MASTER
    interface enp0s8
    virtual_router_id 102
    priority 101
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    virtual_ipaddress {
        192.168.10.100/24
    }
}
virtual_server 192.168.10.100 3869 {
    delay_loop 10
    lb_algo rr
    lb_kind DR
    persistence_timeout 9600


    real_server 192.168.10.40 3869 {
        weight 1
        TCP_CHECK {
        connect_timeout 20
        connect_port    80
        }
    }
                                                                                         
}

バックアップサーバー上

Vrrp_instance_pi1 {
state BACKUP
    interface enp0s8
    virtual_router_id 102
    priority 99
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    virtual_ipaddress {
        192.168.10.100/24
    }
}
virtual_server 192.168.10.100 3869 {
    delay_loop 10
    lb_algo rr
    lb_kind DR
    persistence_timeout 9600


    real_server 192.168.10.40 3869 {
        weight 1
        TCP_CHECK {
        connect_timeout 20
        connect_port    80
        }
    }
                                                                                         
}

ベストアンサー1

NodeJSサーバーでフローティングIPを指すようにデフォルトパスを再定義します。192.168.10.100

$ sudo ip route del 0/0
$ sudo route add default gw 192.168.10.100

両方のルータでいくつかのNATルールを作成します。

$ sudo iptables -t nat -F
$ sudo iptables -t mangle -F
$ sudo iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to 192.168.10.100
$ sudo iptables -t nat -A PREROUTING -d 192.168.10.100 -p tcp --dport 3869 -j DNAT --to 192.168.10.40

おすすめ記事