本文转载自:一篇文章完全了解清楚什么是负载均衡web
负载均衡是高可用网络基础架构的的一个关键组成部分,有了负载均衡,咱们一般能够将咱们的应用服务器部署多台,而后经过负载均衡将用户的请求分发到不一样的服务器用来提升网站、应用、数据库或其余服务的性能以及可靠性。算法
为何要引入负载均衡数据库
先看一个没有负载均衡机制的web架构:后端
上图中的架构有什么缺陷了?首先,用户是经过网络直接和web服务器相连,想象一下,若是这个服务器挂了(这种状况随时均可能发生的),那么用户的请求就会得不到响应,将没法访问该网站,这就是著名的单点故障问题,这确定是不行的,通常而言,商业上的网站其可靠性须要达到至少4个9,也就是99.99&以上。服务器
其次,即便服务器是正常工做的状况,可是若是不少用户在同一时间内访问服务器,超过了服务器的处理能力,那么会出现响应速度慢甚至没法链接的状况,这也是用户没法接受的。网络
负载均衡的出现能够很好的解决上面两个问题,经过引入一个负载均衡器和至少两个web 服务器,能够有效的解决上面两个问题。注:一般状况下,全部的后端服务器会保证提供相同的内容,以便用户不管哪一个服务器响应,都能收到一致的内容。架构
如上图架构,如今,即便App 01即便挂了,负载均衡会将用户的请求转发到正常工做的App 02上,这解决了上面的第一个问题;其次,根据业务须要,负载均衡后端的App能够很方便的扩展,这样就能解决第上面的第二个问题。可是,如今单点故障问题转移到了负载均衡器,能够经过引入第二个负载均衡器来缓解,后面还会讲到。负载均衡
负载均衡如何选择要转发的后端服务器性能
负载均衡器通常根据两个因素来决定要将请求转发到哪一个服务器。网站
1:确保所选择的后端服务器是正常工做的,能给对用户的请求作出响应;
2:根据预先设置的负载均衡算法从健康服务器池中进行选择。
因为负载均衡器只应当选择能正常作出响应的后端服务器,所以就须要有一种机制能判断它所连的后端服务器是否正常工做。为了监视后台服务器的运行情况,运行状态检查服务会按期尝试使用转发规则定义的协议和端口去链接后端服务器。若是某个服务器没有经过健康检查,就会从健康池中剔除,保证流量不会被转发到该服务器,直到其再次经过健康检查为止。
负载均衡算法
负载均衡算法决定了后端的哪些健康服务器会被选中。下面是几个经常使用的算法,这里只是简单介绍,不具体研究其算法实现了,后面会专门用一篇文章来总结:
轮询:为第一个请求选择健康池中的第一个后端服务器,而后按顺序日后依次选择,直到最后一个,而后循环。
最小链接:优先选择链接数最少,也就是压力最小的后端服务器,在会话较长的状况下能够考虑采起这种方式。
散列:根据请求源的 IP 的散列(hash)来选择要转发的服务器。这种方式能够必定程度上保证特定用户能链接到相同的服务器。若是你的应用须要处理状态而要求用户能链接到和以前相同的服务器,能够考虑采起这种方式。
最后,想要解决负载均衡器的单点故障问题,能够将第二个负载均衡器链接到第一个上,从而造成一个集群。以下图所示:
当主负载均衡器发生了故障,就须要将用户请求转到第二个负载均衡器。因为 DNS 更改一般会在较长的时间才能生效,所以须要有一种能灵活解决 IP 地址从新映射的方法,好比浮动 IP(floating IP)。这样域名能够保持和相同的 IP 相关联,而 IP 自己则能在服务器之间移动。下面就是一个使用浮动 IP 的负载均衡架构动态示意图: