load-balancing - 如何创建 float IP 并使用它来配置 HAProxy

标签 load-balancing haproxy floating-ip

我最近尝试使用 HAProxy 对我的应用程序进行负载平衡,并且成功地做到了。后来遇到了一个叫做Floating IP的概念,它可以和keepalived一起使用,使负载均衡器高可用。我无法理解如何创建 float Ip。如何创建 float IP 并使用它来配置 HAProxy?
谢谢。

最佳答案

假设:

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

  • 步骤:
  • 为keepalived添加防火墙规则#224.0.0.18为keepalived组播地址
  • sudo ufw allow in from 198.51.100.20 to 224.0.0.18 # 在 198.51.100.10
  • sudo ufw allow in from 198.51.100.10 to 224.0.0.18 # 在 198.51.100.20

  • 允许访问共享 IP 地址
  • 编辑 /etc/sysctl.conf
  • 套装net.ipv4.ip_nonlocal_bind=1
  • sudo sysctl -p # 重新加载配置更改

  • 安装keepalived
  • sudo apt-get install keepalived

  • 在两台服务器上配置keepalived
  • 编辑/创建 /etc/keepalived/keepalived.conf
  • 请参阅下面的示例文件 # 主服务器和辅助服务器上的优先级必须不同!

  • 重启keepalived
  • sudo 服务 keepalived 重启

  • 监听共享 IP 地址
  • 编辑 /etc/haproxy/haproxy.cfg
  • bind 198.51.100.50:80

  • 重新启动 haproxy(在两个 haproxy 服务器上)
  • sudo service haproxy restart

  • 验证正确的故障转移
  • 主要:sudo ip addr show | grep eth0 # 应该列出共享 IP
  • 二级:sudo ip addr show | grep eth0 # 不应列出共享 IP
  • 主要:sudo service haproxy stop
  • 主要:sudo ip addr show | grep eth0 # 不应列出共享 IP
  • 二级:sudo ip addr show | grep eth0 # 应该列出共享 IP
  • 主要:sudo service haproxy start
  • 主要:sudo ip addr show | grep eth0 # 应该列出共享 IP
  • 二级: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
           }
         }
    

    关于load-balancing - 如何创建 float IP 并使用它来配置 HAProxy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35482083/

    相关文章:

    ssl - GKE - 如何通过 L7 负载均衡器提供 HTTPS?

    docker - 集群Docker Swarm主机

    load-balancing - OPTIONS 中的请求正文出现问题,或者使用 Google 负载均衡器删除请求

    java - 如何集群和负载平衡 Spring + OSGi 应用程序

    http - 在 HAProxy 上重定向

    ssl-certificate - HAproxy:如何安装中间 SSL 证书

    load-balancing - 使用 HAProxy for Postgresql 9.4 的负载平衡

    cloud - 分配 openstack float IP,同时确保它不会从其他服务器中删除