如前所述,网站使用集群技术保证了服务器的高可用性。高可用性就是通过特殊构造设计,减少宕机时间,使服务保持在高可用性水平。就目前互联网网站服务器而言,单个节点服务的初始状态并非高可用,除非配置了特别高的服务器,而且服务的高可用不取决于单服务器硬件性能。现实生产环境中,服务对网络环境的依赖性很大,单节点服务难以保证高可用性。各企业要面对不同用户的网络使用环境。若本机服务负载不平衡,则采用单节点单线方式提供服务,根据不同的网络提供者,用户的网络访问速度无法达到理想的效果。无法在服务暂停和停止时提供可持续服务。并以单点结构为例进行说明。
一般负载均衡根据两个因素来决定将请求转发到哪个服务器。第一,确保所选的服务器能够对请求作出响应,然后根据预先配置的规则从正常服务器池(healthypool)中进行选择。
由于负载均衡应该只选择能够正常响应的后端服务器,所以需要有一种方法来判断后端服务器是否“健康”。运行状态检查服务将定期尝试使用转发规则定义的协议和端口连接后端服务器,以监视后台服务器的运行状况。若服务器无法通过健康检查,则将其从池中剔除,并保证在其再次通过健康检查之前,不将流量转发给该服务器。
负载均衡算法确定将选择后端的哪个正常服务器。一些通用算法:
RoundRobin(轮询):选择列表中的第一个服务器作为第一个请求,然后按顺序将列表下移直到结束,然后进行循环。
LeastConnecys(Minimum):优先选择连接数最少的服务器,建议在通用会话较长时使用。
源代码:根据请求源的IP哈希值(hash)选择要转发的服务器。这在一定程度上保证了特定用户能够连接到同一个服务器。
在应用需要处理状态时,请求用户连接到与之前相同的服务器。可通过Source算法根据客户的IP信息或使用粘滞会话(stickysessions)创建关联。
最终,为了解决负载均衡单点故障问题,可将第二个负载均衡连接到第一个负载均衡上,形成集群。在主负载均衡出现故障时,需要将用户请求转移到另一个负载均衡。由于discovery更改通常要花费很长时间才能生效,所以需要能够灵活地处理IP地址重新映射的方法,例如浮动IP(floatingIP)。通过这种方式,域名可以与同一个IP相关联,而IP本身可以在服务器间移动。