我正在AWS上部署NodeJS应用程序。目前的结构是
ELB< ===> 1 HAProxy实例< ===> 2个运行NodeJS应用程序的EC2实例
Single HA Proxy实例确保ELB始终将会话路由到HAProxy实例,而HAProxy实例可以使用自己的粘性策略来确保粘性会话。
我的问题是如何在此架构中添加更多HAProxy实例。我找不到有关HAProxy群集的任何信息,以及它们如何工作以及如何在HAProxy的文档中进行配置。 HAProxy支持群集吗?
答案 0 :(得分:1)
根据我的理解,haproxy将通过其对等连接提供棒表同步,但不支持连接计数统计同步。
如果后端的服务器群集具有有限数量的线程(puma / rails),则在主动 - 主动模式下运行haproxy时,必须调整min-max后端连接。
两个haproxy服务器,每个都有1000个连接,你实际需要2000个连接(100个美洲狮工人,20个线程),
所以,为简单起见,我只是在主动 - 热备用模式下运行两个haproxies。每个配置为支持相同的后端线程池。
在c4.xlarge上运行haproxy足以处理1000个后端连接,在完全泛洪测试中有2000个同时前端连接,有150,000个用户。
哦,你的ELB是多余的。拿出来。您为HAPE支付200 /月,为ELB支付25 /月。
他们做同样的事情。使用其中一个。不是都。如果你想要ELB,那么你将需要WAF来获得haproxy给你的相同功能。
顺便说一句,我的haproxy也有一个nodeJS应用程序作为后端。我根据节点服务器的负载测试性能指标设置了min-max连接。
哦,不要尝试使用ELB为您的节点应用程序提供服务。您需要http模式请求缓冲来为您的节点应用程序提供服务。 Haproxy给你了。
我使用ELK监控集群来监控haproxy。如果失败,我会收到通知。但是,我不移动IP地址。具有故障转移功能的Route53将自动从DNS池中删除失败的haproxy失败(在60秒内...不理想)。如果您需要固定IP,故事就不同了。如果您每10秒轮询一次,则可以在15秒内将监视服务器上的服务移动IP地址。
享受
答案 1 :(得分:0)
您可以尝试将多个HAProxy实例与keepalived服务配对,这将在它们之间提供VRRP。作为入门级描述,您可以按照
答案 2 :(得分:0)
HAProxy没有集群概念。但是,您可以将多个HAproxy服务器与Keepalived服务一起使用。 Keepalived处理主从概念并跟踪HAproxy服务器检查。一旦主服务器关闭,它就会改变到从服务器的路由。