三废的日常——什么是负载均衡

一天晚饭后。。

小废:上次听你们讲了正向代理和反向代理,还说反向代理可以用作负载均衡,那具体是怎么实现的呀?

二废:这我了解过,很多企业都会有自己的负载均衡策略,像我们这不就用的自己实现的软负载嘛,有些地方还会用到F5做网络的负载均衡。

小废:那负载均衡有什么策略,软负载和F5负载有什么区别了?

二废:啊。。这。。我只知道,负载均衡(Load Balance)是一种服务器或网络设备的集群技术。负载均衡将特定的业务分担给多个服务器或网络设备,从而提高业务处理能力。

大废:害,这还不简单,常见的软负载均衡的策略有轮询(默认)、加权轮询、源地址哈希法、最小连接数法、随机法和加权随机法这几种。软负载可以看作是应用层面的负载均衡,用户请求已经到了服务器的应用端,然后通过软负载的不同策略去调用不同的应用服务器,以达到负载均衡的效果。硬件负载均衡常用的设备有F5,硬件负载是直接在服务器和外部网络间安装负载均衡设备。

二废:对了,我还记得领导说过一台F5价格可贵了,一般我们应用都用不上。

大废:对的,F5设备成本很高,配置也很复杂冗余,一般都是网络部门的同事去负责配置。硬件负载均衡器的特点是独立于操作系统,处理大访问量,费用高。从功能上来说支持多链路,多服务器,多防火墙的负载均衡,在可用性和安全性上也有良好的表现,直接作用于交换机,硬件负载均衡只专注网络判断,不考虑业务系统与应用的实际使用情况。

三废的日常——什么是负载均衡_第1张图片

 

大废:用Nginx做软负载的话基本是没有什么成本的,安装配置都比较简单,还可以做正向代理和反向代理。和F5不同的是,Nginx工作在七层网络之上,属于应用层的负载。

三废的日常——什么是负载均衡_第2张图片

 

小废:那Nginx该怎么配置呀,有什么应用场景呢?

大废:今天不早了,先下班了,改天我再给你们讲讲负载均衡的配置及应用场景,及我们当前微服务用到的负载均衡。

三废的日常——什么是负载均衡_第3张图片

 

小废:好呀。

总结:

轮询:每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

加权轮询:weight代表权重默认为1,权重越高被分配的客户端越多。指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

源地址哈希法:每个请求访问按照访问IP的hash结果分配,同一个IP客户端固定访问一个后端服务器。可以保证来自同一个IP的请求被打到固定的机器上,可以解决session问题。

最小连接数法:最小连接数算法比较灵活和智能,由于后端服务器的配置不尽相同,对于请求的处理有快有慢,它是根据后端服务器当前的连接情况,动态的选择其中当前积压连接数最少的一台服务器来处理当前请求,尽可能地提高后端服务的利用效率,将负责合理地分流到每一台服务器。

随机法:其实际效果越来越接近于平均分配调用量到后端的每一台服务器,也就是轮询的结果

加权随机法:与加权轮询法一样,加权随机法也根据后端机器的配置,系统的负载分配不同的权重。不同的是,它是按照权重随机请求后端服务器,而非顺序。

F5负载均衡:

优点:能够直接通过智能交换机实现,处理能力更强,而且与系统无关,负载性能强,更适用于一大堆设备、大访问量、简单应用。

缺点:成本高,除设备价格高昂,而且配置冗余,很难想象后面服务器做一个集群,但最关键的负载均衡设备却是单点配置,无法有效掌握服务器及应用状态。

硬件负载均衡,一般都不管实际系统与应用的状态,而只是从网络层来判断,所以有时候系统处理能力已经不行了,但网络可能还来得及反应(这种情况非常典型,比如应用服务器后面内存已经占用很多,但还没有彻底不行,如果网络传输量不大就未必在网络层能反映出来)

Nginx软负载:

优点:基于系统与应用的负载均衡,能够更好地根据系统与应用的状况来分配负载。这对于复杂应用是很重要的,性价比高,实际上如果几台服务器,用F5之类的硬件产品显得有些浪费,而用软件就要合算得多,因为服务器同时还可以跑应用、做集群等。

缺点:负载能力受服务器本身性能的影响,性能越好,负载能力越大。

你可能感兴趣的:(Java,nginx,负载均衡,服务器,运维)