HAProxy动态配置

3
这是我的设置:
  • 我们有一个外部负载均衡器(AWS),附加到根域名mydomain.com
  • 外部负载均衡器将流量转发到HAProxy实例,haproxy必须进一步转发到两个内部负载均衡器之一
  • 我们有2个内部负载均衡器,第一个指向我们应用程序的最新版本,第二个指向上一个版本
  • 我们的每个客户端可以拥有1到多个子域名,例如sub1.mydomain.com,sub2.sub3
  • 某些子域名应重定向到旧版本,某些应重定向到新版本,因此同一客户端可以在子域名中具有旧版本和新版本
基本上:
 sub1.mydomain.com -> latest-load-balancer
 sub2.mydomain.com -> older-load-balancer

问题在于如何设置路由,我们不能为每个新的子域名停止/启动haproxy。而且未来可能会有超过10k个这样的子域名。

1个回答

4
  1. haproxy可以使用maps来根据域名决定使用哪个后端(内部负载均衡器)。
  2. haproxy在地图更改时可以进行重新加载而不是重新启动。
  3. 如果您甚至不希望重新加载,您可以将map命令传递给unix套接字,从而实时更改地图。

Ross,你给了我非常有趣的方向,谢谢。说实话,我已经用nginx+redis+lua找到了解决方法,但是你的方法似乎更自然,我会试一试。 - Andriy Kopachevskyy
你能详细解释第三步吗?特别是,“你可以将映射命令传递给Unix套接字”这句话,我不确定我理解的是什么意思。谢谢。 - Andriy Kopachevskyy
请看我的第三点中的链接(单词“map”是链接)。如果您telnet到统计套接字,则可以使用“add map”命令向地图添加条目。我相信还有另一个用于删除条目的命令。 - Ross Presser

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接