Linux

Keepalived 超過 20 個虛擬地址

  • December 3, 2011

我已經在兩台 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。

我找到了一個討論這個問題的HOWTO 。基本上,他們建議只有一個 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 上失敗。

在不改變目前架構的情況下,最簡單的解決方案是使用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。

引用自:https://serverfault.com/questions/334197