使用HAProxy或Nginx在VPS之间加载平衡

我想负载平衡+故障转移备份多个vpsnetworking服务器托pipe在不同的供应商。

我听说HAProxy需要在同一个子网下有多台服务器,再加上负载均衡器之间的共享(虚拟)IP地址。

但在我的情况下是不可能的,因为每个VPS都在不同的节点/networking上。

  1. 有没有办法在这种设置中使用HAProxy? ( 请解释一下,我不想听到你的“是”的答案
  2. 那么NginX呢? 是否有可能达到与Nginx相同的结果? (当服务器位于不同的networking上时)

我知道Round Rubin DNS,但是它不提供真正的故障转移解决scheme,既不是服务器之间的负载平衡。

负载平衡和高可用性(HA)是两回事。
是的,您可以使用Nginx为两个或更多节点configuration负载平衡,无论它们位于何处。

对于负载平衡,您有:
DNS – >服务IP – >负载平衡器 – > AppSrv1,AppSrv2,…,AppSrvn – >一个或多个后端

对于高可用性(HA),您有:

  • 主动/被动:
    正常工作情况:
    DNS – >虚拟服务IP(在LB1上分配) – > AppSrv1,AppSrv2,…,AppSrvn – >一个或多个后端如果LoadBalancer1(LB1)
    Hartbeat将VirtualIP分配给LB2
    DNS – >虚拟服务IP(在LB2上分配) – > AppSrv1,AppSrv2,…,AppSrvn – >一个或多个后端
  • 主动/主动:
    DNS – > VirtIP1(LB1),VirtIP2(LB2),VirtIPn(LBn) – > AppSrv1,AppSrv2,…,AppSrvn – >一个或多个后端

基本上,Load Balancer基于客户端IP创build哈希值,并将所有具有该哈希值的stream量转发到相同的AppSrv(为了保留会话等)。 您可以configuration首选的AppSrv,故障转移AppSrv等

您可以在所有VPS上使用LB进行configuration,将stream量转发到本地AppSrv(同一个VPS),如果该AppSrv无法访问,则转发到“备份”VPS。 但是在如此多的层面上实现这样的问题…

HSRP / VRRP / LVS与HAProxy混淆。 虚拟IP部分完全独立于HAProxy。

如果你想要两个不同的VPS提供商之间的单一共享IP,你不能。 你可以做的最好的办法是从同一个提供者那里得到两个VPS,在两者上运行heartbeat + haproxy,然后他们可以在同一个子网内拥有IP。

你是指位于不同地区的不同农场?

然后,您将通过DNS将它们路由到HAProxy可以负载平衡的特定地理位置:

webfarm1 – > HAProxy – > appsrv ..

webfarm2 – > HAProxy – > appsrv ..

您也可以在跨越地理区域的vps之间进行负载平衡,但最终的结果不会那么好:这种设置服务器通常是静态内容,如CDN。