我一直在做这方面的大量的研究和实验,而且我正在碰壁:
我正在尝试将HAProxy设置为高可用性环境的反向代理。 所有进出这个环境的stream量都是SSLencryption的,所以原来的devise是让HAProxy做SSLterminal,并将stream量清空传递到飞地,然后以另一种方式回传。 到目前为止,这么好,有很多关于这方面的恒星文档。
问题是这样的:单个SSL终止HAProxy框需要处理大量的stream量,因此需要多个SSL终止反向代理。
好吧,我已经看到了很高的和低的,并发现许多文章,似乎是在正确的方向领先,但总是结束了1主要HAProxy和1备份,(例如,所有的心跳和keepalived解决scheme,如同这里和这里一样 ),或者完全忽略SSL终止,并且讨论DNS负载均衡器。
所以我想我真正想要的是多个haproxy ssl终止盒同时分担负载的能力。 有没有办法做到这一点的DNS圆知更鸟?
我想我以为会有一种方式可以共享同一个虚拟IP地址,并且在它们之间同时分配stream量,全部是集群式的。 如果一个盒子坏了,那么故障转移可以用上面的keepalived方法解决,或者其他的东西。 这似乎不是一个常见的用例…甚至有可能吗?
(当然,如何在HAProxy进程之间共享SSL会话是一个问题,但是如果不可行的话,偶尔重新build立一个新会话在这种情况下并不是一个杀手。
提前致谢!
两个haproxy实例可以通过使用两个虚拟IP来分担负载,其中每个实例都是其中一个虚拟IP。 循环法DNS在两个虚拟IP(因此在两个haproxy实例之间)大致平衡。 这种方法也适用于SSL。 这个主动 – 主动设置的三重思考的一个原因是,如果一个实例不能单独处理总stream量,那么如果任何一个实例出现故障,它将被重载。 从根本上说,这只能通过腾出空间来“容量”或接受临时性能来解决。
或者,您可以在您的SSL终止代理服务器的TCP模式下坚持haproxy平衡。 一个TCP会话将坚持到后端,所以你不必担心太多的重新谈判。