web-dev-qa-db-ja.com

20以上の仮想アドレスに対応

高可用性のために2台のDebianマシンでkeepalivedをセットアップしましたが、vrrp_instanceに割り当てることができる仮想IPの最大数に達しました。 20以上の仮想IPを構成してフェイルオーバーするにはどうすればよいですか?

これは、非常にシンプルなセットアップです。

LB01: 10.200.85.1
LB02: 10.200.85.2
Virtual IPs: 10.200.85.100 -  10.200.85.200

各マシンは、SSLクライアント証明書の終了とバックエンドWebサーバーへのプロキシのために、仮想IPでApache(後のNginx)バインディングも実行しています。私が非常に多くのVIPを必要とする理由は、HTTPSでVirtualHostを使用できないことです。

これは私のkeepalived.confです:

vrrp_script chk_Apache2 {
        script "killall -0 Apache2"
        interval 2
        weight 2
}

vrrp_instance VI_1 {
        interface eth0
        state MASTER
        virtual_router_id 51
        priority 101
        virtual_ipaddress {
            10.200.85.100
            .
            . all the way to
            .
            10.200.85.200
}

同じ構成がBACKUPマシン上にあり、正常に動作していますが、20番目のIPまでしかありません。

この問題について [〜#〜] howto [〜#〜] が見つかりました。基本的に、彼らはVIPを1つだけ持ち、この1つのIPを介してすべてのトラフィックをルーティングし、「すべてうまくいく」ことを示唆しています。これは良いアプローチですか?pfSenseファイアウォールを前面で実行していますマシンの。

上記のリンクからの引用:

ip route add $VNET/N via $VIP

or

route add $VNET netmask w.x.y.z gw $VIP

前もって感謝します。

編集:

@David Schwartzがルートを追加することは理にかなっていると言ったので、静的ルートをpfSenseファイアウォールに追加してみましたが、期待どおりに機能しませんでした。

pfSenseルート:

Interface:            LAN
Destination network:  10.200.85.200/32 (virtual IP)
Gateway:              10.200.85.100    (floating virtual IP)
Description:          Route to VIP .100

また、ホストでパケット転送が有効になっていることを確認しました。

$ cat /etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.ip_nonlocal_bind=1

私はこれを間違っていますか?また、keepalived.confからすべてのVIPを削除したため、10.200.85.100でのみ失敗します。

12
cvaldemar

現在のアーキテクチャを変更しない最も簡単な解決策は、virtual_ipaddress_excludedを使用することです。例えば

vrrp_instance VI_1 {
    interface eth0
    state MASTER
    virtual_router_id 51
    priority 101

    virtual_ipaddress {
        10.200.85.100
    }

    virtual_ipaddress_excluded {
        10.200.85.101
        . all the way to
        10.200.85.200
    }
}

virtual_ipaddress_excludedには、keepalivedがサーバーで起動および停止するIPアドレスのリストが含まれていますが、VRRPパケット自体には含まれていないため、20 IPアドレスの制限にはカウントされません。

私の構成では、特にvirtual_ipaddressにIPを割り当てたいと思います。つまり、VRRPパケットに含まれ、他のすべてをvirtual_ipaddress_excludedに入れるものです。これは、顧客が去ったからといってメインIPを変更したくないので、良い考えです。

14
johnf