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。
我找到了一個討論這個問題的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。