一个网站在创建初期,一般来说都是只有一台服务器对用户提供服务。

从图里可以看出,用户经过互联网直接连接了后端服务器,如果这台服务器什么时候突然 GG 了,用户将无法访问这个网站(单点故障)。
另外业务上升,用户增加,单台服务性能和稳定性都会受到很大的挑战。

那么要怎么办呢?加机器!扩容!不差钱!
既然一台服务器不够用,那么就两台,如果还不行,就三台。

这样我们就有了很多台机器了,足够应付用户的请求了。
在这里,我们把用户的访问流量称为负载,而根据转发策略(rules)将负载(访问流量)分配给后端机器的服务便是负载均衡

现在我们研究下怎么『均衡』地给服务器分配访问流量了

DNS 负载均衡通过用户 IP 进行判断,可以按规则返回一个离用户位置最近的一台服务器作为解析结果,一定程序上保证了服务的速度。所以,CDN 服务一般会使用这个作为第一层调度,保证用户请求的缓存节点一定是最近的。
BUT! 由于 DNS 服务一般是由第三方服务商提供,虽说我们可以配置规则,但我们实际上并不能获知用户拿到的 DNS 解析结果是否符合预期;而我们在增减服务器的时候,需要变更 DNS 配置,各级 DNS 服务器缓存及更新策略并不能达到及时变更的效果。

用户通过 DNS 查询得到 VIP 地址,将请求发送给 VIP, 流量就这么到了 LVS 集群0, 再根据 IP+Port 规则将流量打给对应的 RS。
上图中的 LVS 集群1 为 LVS 集群0 的灾备,在集群0故障的情况下,可以通过改变 VIP 映射将流量打到 集群1。

七层负载均衡和四层还有个重要区别是,因为需要得到数据报文的应用层信息,所以负载均衡设备需要和客户端建立连接,拿到规则需要的应用层信息后,再与后端真实机器建立连接,再进行请求。所以四层是只有一个独立连接,而七层是两个独立连接。
对于大公司而言,单一的负载均衡方案已经满足不了需要了,基本都是通过DNS + 四层 + 七层三个全都要!

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537575/viewspace-3161032/ ,如需转载,请注明出处,否则将追究法律责任。