Keepalived 超過 20 個虛擬位址

Keepalived 超過 20 個虛擬位址

我已經在兩台 Debian 機器上設定了 keepalived 以實現高可用性,但是我遇到了可以分配給我的vrrp_instance.我將如何配置 20 多個虛擬 IP 並對其進行故障排除?

這是非常簡單的設定:

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

每台電腦還在虛擬 IP 上執行 Apache(後來的 Nginx)綁定,用於 SSL 用戶端憑證終止和代理到後端 Web 伺服器。我需要這麼多 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。

我找到了一個如何討論這個問題。基本上,他們建議只擁有一個 VIP,並「通過」這一 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 上失敗。

答案1

在不改變目前架構的情況下,最簡單的解決方案是利用虛擬 IP 位址排除。例如

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
    }
}

虛擬 IP 位址排除包含 keepalived 將在伺服器上啟動和關閉的 IP 位址列表,但它們不包含在 VRRP 封包本身中,因此它們不計入 20 個 IP 位址限制。

在我的配置中,我喜歡專門分配一個IP虛擬IP位址。即包含在 VRRP 資料包中的資料包並將其他所有內容放入虛擬 IP 位址排除。這是一個好主意,因為您不想僅僅因為客戶離開就必須更改主 IP。

答案2

很抱歉回答這麼老的問題,但我認為這個限制不再存在 - 我在文件 關於虛擬 ip 的最大數量。有人可以支持我嗎?謝謝!

相關內容