整个子网的负载平衡

整个子网的负载平衡

是否可以配置 HaProxy 来平衡整个子网的流量。我尝试了 192.168.50.0/24,但 HaProxy 出错了。这是针对云环境的,因此如果我的服务器横向扩展,我不需要手动重新配置 HaProxy 并重新启动服务。

我的配置:

listen Cluster_3300
    bind *:3300
    mode tcp
    timeout client  10800s
    timeout server  10800s
    balance leastconn
    option httpchk
    option allbackups
    default-server port 9200 inter 2s downinter 5s rise 3 fall 2 slowstart 60s maxconn 1424 maxqueue 10000 weight 100
    server app1 192.168.51.11:3306 check
    server app2 192.168.51.13:3306 check
    server app3 192.168.51.12:3306 check

所以最后三行是硬编码的,是否可以包含所有子网虚拟机?

答案1

轮询整个网络来查看服务器是否存在或响应是不可能的,而且也没有多大意义。

您可以使用 IP 或主机名,但它们将在启动时解析。

您应该向您的云规模添加一些逻辑,以将新服务器添加到您的 haproxy 负载均衡器。

来自HAProxy 文档

server <name> <address>[:[port]] [param*]
Declare a server in a backend

是分配给此服务器的内部名称。此名称将出现在日志和警报中。如果设置了“http-send-name-header”,它将被添加到发送到服务器的请求标头中。

是服务器的 IPv4 或 IPv6 地址。或者,支持可解析的主机名,但此名称将在启动期间解析。地址“0.0.0.0”或“*”具有特殊含义。它表示连接将转发到与客户端连接相同的 IP 地址。这在透明代理架构中很有用,在透明代理架构中,客户端的连接被拦截,haproxy 必须转发到原始目标地址。这或多或少就是“transparent”关键字的作用,只是使用服务器可以限制并发并报告统计信息。可选地,可以在地址之前使用地址系列前缀来强制使用系列,而不管地址格式如何,这在指定没有斜杠(“/”)的 unix 套接字的路径时很有用。当前支持的前缀为: - 'ipv4@' -> 地址始终为 IPv4 - 'ipv6@' -> 地址始终为 IPv6 - 'unix@' -> 地址是本地 unix 套接字的路径 - 'abns@' -> 地址位于抽象命名空间中(仅限 Linux) 您可能希望在地址参数中引用一些环境变量,请参阅有关环境变量的 2.3 节。 “init-addr”设置可用于修改启动时解析 IP 地址的方式。

是可选的端口规范。如果设置,所有连接都将发送到此端口。如果未设置,将使用客户端连接的相同端口。端口也可以以“+”或“-”为前缀。在这种情况下,服务器的端口将通过将此值添加到客户端的端口来确定。

是此服务器的参数列表。“server”关键字接受大量选项,并有一个完整的部分专门介绍它。请参阅第 5 节了解更多详细信息。

例子 :

服务器第一个 10.1.1.1:1080 cookie 第一个检查 inter 1000 服务器第二个 10.1.1.2:1080 cookie 第二个检查 inter 1000 服务器 transp ipv4@ 服务器备份 "${SRV_BACKUP}:1080" 备份服务器 www1_dc1 "${LAN_DC1}.101:80" 服务器 www1_dc2 "${LAN_DC2}.101:80"

相关内容