我有一个 Web 应用程序目前在单个 LAMP 服务器上运行,我计划将其拆分到两个服务器,这样客户端请求到达其中一个服务器,然后从该服务器转发到第二个服务器,以防第一个服务器的负载过高。请求到达IP地址我当前的服务器(非域名).
我怎样才能实现这个目标?
我希望我的问题很清楚,如果需要更多细节,请发表评论。
谢谢
答案1
您可以使用哈普罗西。它可用于为基于TCP和HTTP的应用程序实现负载均衡和代理。它有许多负载均衡算法,例如:round-robin和least-conn。
答案2
Linux 虚拟服务器提供一个中间服务器(负载均衡器),它将简单地转发传入的 IP 数据包到其他服务器,然后这些服务器将其响应直接发送回请求客户端。
您可能还希望考虑使用反向代理 - Squid、Apache、nginx、lighttpd 都可以提供此功能 - 向您的反向代理发出完整的 Web 请求,然后该反向代理将该请求转发到后端 Web 服务器之一。与 LVS 相比,这是一种负载更重的方法,但初始配置要容易得多。
答案3
请注意您的应用程序是如何制作的,您有两种负载均衡器:
粘性负载平衡器:每个客户端都粘在一台服务器上(具有粘性会话),它适用于任何应用程序,但这不是“真正的”负载平衡,因为您的客户端粘在此服务器上,并且如果您的服务器停止工作,则粘在此服务器上的客户端将无法使用您的网站(暂时)
简单的负载平衡器:每个客户端在每次请求时随机(或根据服务器负载、请求量等参数)转到新服务器。这是最好的,但您的 Web 应用程序需要为此进行配置,您需要同步会话,如果可能的话,同步不同服务器之间的缓存(例如使用 memcached),它可以提供 HA(例如使用 HAProxy),它会检测停机服务器并自动停止向其发送客户端。