繁体   English   中英

跨服务器的负载平衡

[英]load balancing across servers

我有一个在3台服务器上运行的Web服务。 工作原理如下-服务器1收到用户请求,将其存储在本地db上并对其进行一些工作。 -服务器2和3是相同的,并且主要工作马匹,它们根据请求从Internet提取信息并返回。 -服务器1通过lan上的http请求调用服务器2/3。(服务器2&3上有一个php脚本,因此服务器1将其称为http://localip/script.php )-服务器1交替调用服务器2或3( (这样做是为了分配负载)服务器2/3上的每个查询大约需要8秒钟来处理。 现在,当我在所有服务器上安装监视工具时,发现server1的负载过多(它显示进程数>关键限制),这不是平衡负载的方法吗? 如何减少Server1中的负载?

服务器1正在响应用户的传入请求。 因此,如果您确定这是瓶颈,那么您需要集中精力。

如果服务器2和3仅执行对Internet的查询,那么它们可能不会在处理器/磁​​盘方面做太多工作。

如果您配置了2台服务器来完成一项相当容易的任务,并且您的主要面向用户的服务器正在过载,那么最好简单地将所有3台服务器作为面向用户的服务器运行。

根据您的描述,听起来服务器#1正在阻止来自服务器2和3的响应,这意味着它可能必须保持打开的许多连接。 如果由于服务器2和3的任务仅仅是Internet查询,实际上并没有那么多工作,那么最好将面向用户的服务器和查询引擎合并到一台服务器中,并在所有3台服务器上分配用户负载,从而更好地为您服务。

这样,每个服务器具有较少的开放用户连接。 而且查询引擎仍然没有占用资源(如果只是Web请求),因此不会对用户性能产生负面影响。

只是对您的一些想法。 如果不了解您的应用程序,就不可能完全确定。

附加评论

如评论中所述,您应该研究一个合适的负载平衡器,一个好的硬件负载平衡器是第一个建议。 您在哪里运行服务器? 如果它们位于Amazon EC2,Rackspace等云数据中心中,则可以轻松使用负载平衡服务。

您也可以使用软件负载平衡器。 Apache甚至提供了此功能:

http://httpd.apache.org/docs/current/mod/mod_proxy_balancer.html

即使使用当前配置,也可以将Apache置于其中一台服务器的前面,然后对其进行调整,以便具有Apache的服务器(进行负载平衡)获得较低的流量百分比,以抵消Apache的费用服务器。 在这种情况下,您无需更改硬件。 尽管您有一个明显的单点故障,尽管与现在的故障点没有什么不同,但是适当的负载平衡器通常可以缓解您的体系结构目前存在的单点故障问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM