Keepalived超过20个虚拟地址

我已经在两台Debian计算机上设置了keepalived以实现高可用性,但是我已经遇到了可以分配给我的vrrp_instance的最大数量的虚拟IP。 我将如何去configuration和失败20多个虚拟IP?

这是非常简单的设置:

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

每台机器还运行Apache(后来的Nginx)绑定在虚拟IPs 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 } 

备份机器上有相同的configuration,并且工作正常,但只能达到第20个IP。

我发现一个HOWTO讨论这个问题。 基本上,他们build议只有一个VIP,通过这个IP路由所有的stream量,“一切都会好的”。 这是一个好方法吗? 我在机器前面运行pfSense防火墙。

从上面的链接引用:

 ip route add $VNET/N via $VIP or route add $VNET netmask wxyz 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 

我也确保我的主机上启用了数据包转发function:

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

我做错了吗? 我也从keepalived.conf中删除了所有VIP,所以只能超过10.200.85.100。

最简单的解决scheme,而不改变你当前的架构是利用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会在服务器上打开和closures的IP地址列表,但是它们不包含在VRRP数据包本身中,所以它们不计入20的IP地址限制。

在我的configuration中,我喜欢专门为virtual_ipaddress分配一个IP。 即包含在VRRP数据包中的数据,并将其他数据放在virtual_ipaddress_excluded中 。 这是一个好主意,因为你不想因为顾客离开而改变主IP。