假设我在 haproxy 后面有 6 个 Web 服务器。Web 服务器应该使用 apache 提供虚拟主机(apache 或 nginex 都无所谓)。我希望能够根据虚拟主机指定传入的 HTTP 请求(命中 haproxy)应该去往何处。例如
a.domain.com 请求应该转到 web1 和 web2 b.domain.com 请求应该转到 web1、web2 和 web3 c.domain.com 请求应该转到 web4 和 web5 d.domain.com 请求应该转到 web5 和 web6 e.domain.com 请求应该转到 web3、web4、web5 和 web6
这个想法是拥有一个高可用性、负载平衡的共享主机,用户可以选择在多少台服务器上运行,在本例中为 2 到 6 台。另一个重要的事情是,我想在某些服务器上(而不是所有服务器上)对站点进行负载平衡,这样我就可以水平扩展以接受更多客户。
有可能吗?如果不行,您有其他解决方案吗?
答案1
谷歌专区定义一堆 ACL 是可行的方法,如下所示:
frontend http
bind *:80
acl host_site_a hdr(host) -i a.domain.com
acl host_site_b hdr(host) -i b.domain.com
use_backend site_a if host_site_a
use_backend site_b if host_site_b
backend site_a
server web1 web1:80
server web2 web2:80
backend site_b
server web1 web1:80
server web2 web2:80
server web3 web3:80
等等。根据需要进行扩展和充实。