最佳的负载平衡可能非常昂贵且复杂。基本的负载平衡应仅确保每台服务器随时为大致相同的命中次数提供服务。
最简单的负载平衡方法是在DNS中提供多个A记录。默认情况下,将以循环方式配置IP地址。这将导致用户在服务器之间相对均匀地分布。这对于无状态站点非常有效。当您有状态的站点时,需要一种稍微复杂的方法。
要处理有状态的需求,可以使用重定向。给每个Web服务器一个备用地址,例如www1,www2,www3等。将初始www连接重定向到主机的备用地址。您可能最终会以这种方式遇到书签问题,但是它们应该均匀分布在服务器之间。
或者,使用不同的路径指示哪个服务器正在处理有状态会话,将允许将主机切换到原始服务器的代理会话。当故障服务器的会话到达从故障服务器接管的服务器时,这可能是一个问题。但是,禁止群集软件的状态无论如何都将丢失。由于使用浏览器缓存,因此更改服务器可能不会遇到很多会话。
可以通过将服务器配置为接管发生故障的服务器的IP地址来处理故障转移。如果服务器发生故障,这将最大程度地减少停机时间。没有群集软件,如果服务器发生故障,有状态会话将丢失。
如果没有故障转移,用户将经历一段时间的延迟,直到他们的浏览器故障转移到下一个IP地址为止。
使用Restful服务而不是有状态会话应消除前端的集群问题。存储方面的群集问题仍然适用。
即使将负载平衡器放在服务器前面,您也可能会在它们前面使用轮询DNS。这将确保您的所有负载均衡器得到利用。它们将为您的设计增加另一层,从而增加额外的复杂性和另一个故障点。但是,它们可以提供一些安全功能。
最佳解决方案将取决于相关要求。
实现图像服务器以提供诸如图像,CSS文件和其他静态内容之类的内容可以减轻应用程序服务器上的负载。