linux – Keepalived超过20个虚拟地址

前端之家收集整理的这篇文章主要介绍了linux – Keepalived超过20个虚拟地址前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经在两台Debian机器上设置了keepalived以获得高可用性,但我已经遇到了我可以分配给我的vrrp_instance的最大虚拟IP数量.我如何配置和失败超过20个虚拟IP?

这是非常简单的设置:

  1. LB01: 10.200.85.1
  2. LB02: 10.200.85.2
  3. Virtual IPs: 10.200.85.100 - 10.200.85.200

每台机器还在虚拟IP上运行Apache(后来的Nginx)绑定,以便终止SSL客户端证书并代理到后端Web服务器.我需要这么多VIP的原因是无法在HTTPS上使用VirtualHost.

这是我的keepalived.conf:

  1. vrrp_script chk_apache2 {
  2. script "killall -0 apache2"
  3. interval 2
  4. weight 2
  5. }
  6.  
  7. vrrp_instance VI_1 {
  8. interface eth0
  9. state MASTER
  10. virtual_router_id 51
  11. priority 101
  12. virtual_ipaddress {
  13. 10.200.85.100
  14. .
  15. . all the way to
  16. .
  17. 10.200.85.200
  18. }

在BACKUP机器上有一个相同的配置,它工作正常,但只能达到第20个IP.

我找到了HOWTO讨论这个问题.基本上,他们建议只有一个VIP并“通过”这一个IP路由所有流量,并且“一切都会好”.这是一个好方法吗?我正在机器前面运行pfSense防火墙.

从以上链接引用:

  1. ip route add $VNET/N via $VIP
  2.  
  3. or
  4.  
  5. route add $VNET netmask w.x.y.z gw $VIP

提前致谢.

编辑:

@David Schwartz表示添加路由是有意义的,所以我尝试添加静态路由到pfSense防火墙,但这并没有像我预期的那样工作.

pfSense路线:

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

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

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

我做错了吗?我还从keepalived.conf中删除了所有VIP,因此它只能通过10.200.85.100失败.

解决方法

最简单的解决方案是在不改变当前架构的情况下使用virtual_ipaddress_excluded.例如
  1. vrrp_instance VI_1 {
  2. interface eth0
  3. state MASTER
  4. virtual_router_id 51
  5. priority 101
  6.  
  7. virtual_ipaddress {
  8. 10.200.85.100
  9. }
  10.  
  11. virtual_ipaddress_excluded {
  12. 10.200.85.101
  13. . all the way to
  14. 10.200.85.200
  15. }
  16. }

virtual_ipaddress_excluded包含keepalived将在服务器上启动和关闭的IP地址列表,但它们不包含在VRRP数据包本身中,因此它们不计入20 IP地址限制.

在我的配置中,我喜欢专门为virtual_ipaddress分配一个IP.即包含在VRRP数据包中并将其他所有内容放入virtual_ipaddress_excluded中的数据包.这是一个好主意,因为您不希望仅仅因为客户离开而必须更改主IP.

猜你在找的Linux相关文章