如何创建浮动 IP 并使用它来配置 HAProxy



我最近尝试使用 HAProxy 对我的应用程序进行负载平衡,并且能够成功做到这一点。后来,我遇到了一个名为浮动 IP 的概念,它可以与 keepalive 一起使用,以使负载均衡器高度可用。不过,我无法理解如何创建浮动 Ip。如何创建浮动 IP 并使用它来配置 HAProxy?谢谢。

假设:

  • 这适用于 Ubuntu 14.04
  • 代理主 IP:198.51.100.10
  • 代理辅助 IP:198.51.100.20
  • 共享 IP:198.51.100.50
  • 任何 DNS 规则都应指向共享 IP (198.51.100.50)

步骤:

  1. 为保持活动添加防火墙规则 # 224.0.0.18 是保持活动多播地址
    1. sudo ufw allow in from 198.51.100.20 to 224.0.0.18 # 在 198.51.100.10 上
    2. sudo ufw allow in from 198.51.100.10 to 224.0.0.18 # 在 198.51.100.20 上
  2. 允许访问共享 IP 地址
    1. 编辑/etc/sysctl.conf
    2. 设置net.ipv4.ip_nonlocal_bind=1
    3. sudo sysctl -p # 重新加载配置更改
  3. 安装保持活动状态
    1. sudo apt-get install keepalived
  4. 在两台服务器上配置保持活动状态
    1. 编辑/创建/etc/keepalived/keepalived.conf
    2. 请参阅下面的示例文件 # 主服务器和辅助服务器上的优先级必须不同!
  5. 重新启动保持活动状态
    1. sudo 服务保持活动状态重新启动
  6. 侦听共享 IP 地址
    1. 编辑/etc/haproxy/haproxy.cfg
    2. bind 198.51.100.50:80
  7. 重新启动 haproxy (在两个 haproxy 服务器上)
    1. sudo service haproxy restart
  8. 验证故障转移是否正确
    1. 主:sudo ip addr show | grep eth0# 应列出共享 IP
    2. 辅助:sudo ip addr show | grep eth0# 不应列出共享 IP
    3. 主要:sudo service haproxy stop
    4. 主:sudo ip addr show | grep eth0# 不应列出共享 IP
    5. 辅助:sudo ip addr show | grep eth0# 应列出共享 IP
    6. 主要:sudo service haproxy start
    7. 主:sudo ip addr show | grep eth0# 应列出共享 IP
    8. 辅助:sudo ip addr show | grep eth0 # 不应列出共享 IP
/etc/keepalived

/keepalived.conf

     vrrp_script chk_haproxy {      # Requires keepalived-1.1.13
       script "killall -0 haproxy"  # cheaper than pidof
       interval 2 # check every 2 seconds
       weight 2 # add 2 points of priority if OK
     }
     vrrp_instance VI_1 {
       interface eth0
       state MASTER
       virtual_router_id 51
       priority 101 # 101 on primary, 100 on secondary
       virtual_ipaddress {
         198.51.100.50
       }
       track_script {
         chk_haproxy
       }
     }

Matt Rice 的回答非常好,但请注意,如果您在 Red Hat EL 7 上运行 SELinux 强制执行,则需要

sudo setsebool haproxy_connect_any on

。或者 haproxy 将无法在当前没有虚拟 IP 地址的系统上启动,并抱怨它无法绑定。

最新更新