在Apache中, mod_proxy_balancer以最简单的方式支持负载平衡。
请参阅使用Apache的Easy HTTP负载平衡 。 当请求由worker(负载均衡节点)处理时,它是否到达负载平衡服务器,然后转到客户端,还是直接从工作人员处理?
例:
方法1: Web客户端 – >负载平衡器 – >工作者 – >负载平衡器 – > Web客户端
要么
方法2: Web客户端 – >负载平衡器 – >工作者 – > Web客户端
Apache负载均衡器中发生了什么?
即使在返回时,数据也必须通过代理服务器,因为它是持有客户端TCP连接的服务器,并且应该通过它发送答案。
没有代理服务器在后台path上工作的解决scheme确实存在,但是那些更难以正确实现(通常涉及脏的TCPIP / iptables技巧)。
编辑:没有代理服务器的好解决scheme:
“清洁解决scheme”,会奇迹般地转发TCP SYN,并将卸载负载平衡器中的所有其他内容,这可能是一个梦想,我不知道有任何这样的事情。
相反,有两种常用的方法:
– DNS负载均衡 :在多个可公开访问的IP地址上有更多的服务器,为您的网站指定更多的A条目,可能使您的DNS服务器随机添加答案。 在许多商业装置上完美工作。 优点:简单,缺点:“易碎”,你需要公共IP空间。
– 仅支持防火墙的负载均衡 :无论如何,最有可能的是单个路由器处理所有stream量,因此在其上添加一些防火墙规则通常不会损害实际性能。 你正在寻找的东西(在Linux上)是使用iptables的DNAT目标,以及某种“随机”或“哈希”匹配。 我个人使用这样的几个安装:
iptables -t nat -A PREROUTING -d 11.22.33.44 -p tcp --dport 80 -m random --average 50 -j DNAT --to 192.168.0.2 iptables -t nat -A PREROUTING -d 11.22.33.44 -p tcp --dport 80 -j DNAT --to 192.168.0.3
用您的公共IP地址replace11.22.33.44,用您的服务器replace192.168.xx。 不要忘记修改 – 平均值。
优点:整个解决scheme看起来像来自外部的单个服务器,通过DoSing单个服务器等,负载平衡是牢不可破的。缺点:您希望将路由器和所有服务器放在一个位置。