Questions tagged «load-balancing»

负载平衡处理涉及使用多个系统来处理高要求的技术,从而平衡多个系统之间的负载。是否使用专用硬件处理网络和服务器负载平衡问题。

2
持久性负载平衡最佳做法
我们运行一个Web应用程序,为越来越多的客户端提供Web API。首先,客户通常是家庭,办公室或其他无线网络,这些用户将分块的http上传文件提交到我们的API。现在,我们开始涉足更多的移动客户端。文件的大小从几千到几千个不等,分解成较小的块,然后在我们的API上重新组合。 当前的负载平衡是在两层上执行的,首先,我们使用轮询DNS来为api.company.com地址通告多个A记录。在每个IP上,我们都托管一个Linux LVS:http : //www.linuxvirtualserver.org/,负载均衡器查看请求的源IP地址,以确定将连接传递给哪个API服务器。此LVS盒配置有心跳信号,以相互接管外部VIP和内部网关IP。 最近,我们看到了两个新的错误情况。 第一个错误是客户端从一个LVS振荡或迁移到另一个中载。这进而导致我们的负载平衡器失去对持久连接的跟踪,并将流量发送到新的API服务器,从而破坏了两个或更多服务器之间的分块上传。我们的意图是使api.company.com(我们将其设置为1小时)的Round Robin DNS TTL值由下游缓存名称服务器,OS缓存层和客户端应用程序层使用。我们上载的大约15%会发生此错误。 我们看到的第二个错误要少得多。客户端将启动到LVS盒的流量,并路由到它后面的realserverA。此后,客户端将通过LVS框无法识别的新源IP地址进入,从而将正在进行的流量也路由到该LVS后面的realserverB。 鉴于上文所述的架构,我想知道人们在使用更好的方法后会遇到什么经验,该方法可以使我们更优雅地处理上述每种错误情况? 编辑5/3/2010: 这看起来像我们需要的。源IP地址上的加权GSLB哈希。 http://www.brocade.com/support/Product_Manuals/ServerIron_ADXGlobalServer_LoadBalancingGuide/gslb.2.11.html#271674

5
DNS轮询中IP地址的实际限制是多少?
我目前正在运行一个站点,该站点的流量现在分布在7个镜像服务器之间(使用DNS轮询)。但是考虑到流量的不断增长,不久之后将需要更多的镜像。 使用轮循DNS时,与给定域名关联的IP地址数量是否有实际建议的限制? 另外,当镜像数量很高(例如,超过10或20个镜像)时,您会建议哪种解决方案? 谢谢。

2
异常的Apache-> Tomcat缓存问题
现在,我在Tomcat前面有一个Apache设置来处理缓存。此设置已交给外部服务进行管理,并且自过渡以来,我注意到了奇怪的行为。具体来说,当我从Web服务器请求swf文件时,我命中了Apache缓存(很好),但是偶尔我会收到截断的文件。收到此截断的文件后,缓存将不会刷新,直到手动删除缓存并再次从tomcat下拉swf为止。 外部服务声称配置很好,但是除了配置不正确之外,我看不到任何其他可能的方式。现在,在负载平衡器下有两个Apache服务器和两个Tomcat服务器,偶尔一个apache缓存将中断,而另一个则不会(导致所有请求的50%变为错误的,被截断的数据)。 我应该从哪里开始调试此问题?是什么可能导致这种奇怪的行为? 编辑:检查日志,tomcat抛出此: java.io.IOException: Bad file number at java.io.FileInputStream.readBytes(Native Method) at java.io.FileInputStream.read(FileInputStream.java:199) at java.io.BufferedInputStream.read1(BufferedInputStream.java:256) at java.io.BufferedInputStream.read(BufferedInputStream.java:317) at java.io.FilterInputStream.read(FilterInputStream.java:90) at org.apache.catalina.servlets.DefaultServlet.copyRange(DefaultServlet.java:1968) at org.apache.catalina.servlets.DefaultServlet.copy(DefaultServlet.java:1714) at org.apache.catalina.servlets.DefaultServlet.serveResource(DefaultServlet.java:809) at org.apache.catalina.servlets.DefaultServlet.doGet(DefaultServlet.java:325) at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.ha.session.JvmRouteBinderValve.invoke(JvmRouteBinderValve.java:209) at …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.