负载均衡方案

负载均衡方案

1、负载均衡概念

一台普通服务器的处理能力是有限的,假如能达到每秒几万个到几十万个请求,但却无法在一秒钟内处理上百万个甚至更多的请求。但若能将多台这样的服务器组成一个系统,并通过软件技术将所有请求平均分配给所有服务器,那么这个系统就完全拥有每秒钟处理几百万个甚至更多请求的能力。这就是负载均衡最初的基本设计思想。
负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求按照某种策略分配到服务器集合的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。负载均衡解决了大量并发访问服务问题,其目的就是用最少的投资获得接近于大型主机的性能。

2、相关技术

2.1、基于DNS的负载均衡

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。
DNS负载均衡技术是最早的负载均衡解决方案,它是通过DNS服务中的随机名字解析来实现的,在DNS服务器中,可以为多个不同的地址配置同一个名字,而最终查询这个名字的客户机将在解析这个名字时得到其中的一个地址。因此,对于同一个名字,不同的客户机会得到不同的地址,它们也就访问不同地址上的Web服务器,从而达到负载均衡的目的。
如下图:

负载均衡方案_第1张图片

优点:实现简单、实施容易、成本低、适用于大多数TCP/IP应用;
缺点:
1、 负载分配不均匀,DNS服务器将Http请求平均地分配到后台的Web服务器上,而不考虑每个Web服务器当前的负载情况;如果后台的Web服务器的配置和处理能力不同,最慢的Web服务器将成为系统的瓶颈,处理能力强的服务器不能充分发挥作用;
2、可靠性低,如果后台的某台Web服务器出现故障,DNS服务器仍然会把DNS请求分配到这台故障服务器上,导致不能响应客户端。
3、变更生效时间长,如果更改NDS有可能造成相当一部分客户不能享受Web服务,并且由于DNS缓存的原因,所造成的后果要持续相当长一段时间(一般DNS的刷新周期约为24小时)。

2.2、基于四层交换技术的负载均衡

基于四层交换技术的负载均衡是通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器与请求客户端建立TCP连接,然后发送Client请求的数据。

如下图:

负载均衡方案_第2张图片

client发送请求至4层负载均衡器,4层负载均衡器根据负载策略把client发送的报文目标地址(原来是负载均衡设备的IP地址)修改为后端服务器(可以是web服务器、邮件服务等)IP地址,这样client就可以直接跟后端服务器建立TCP连接并发送数据。

具有代表意义的产品:LVS(开源软件),F5(硬件)

优点:性能高、支持各种网络协议

缺点:对网络依赖较大,负载智能化方面没有7层负载好(比如不支持对url个性化负载),F5硬件性能很高但成本也高需要人民币几十万,对于小公司就望而却步了。

2.3、基于七层交换技术的负载均衡

基于七层交换技术的负载均衡也称内容交换,也就是主要通过报文中的真正有意义的应用层内容,再加上负载均衡设备设置的服务器选择方式,决定最终选择的服务器。

如下图:

负载均衡方案_第3张图片

七层负载均衡服务器起了一个代理服务器的作用,client要访问webserver要先与七层负载设备进行三次握手后建立TCP连接,把要访问的报文信息发送给七层负载均衡;然后七层负载均衡再根据设置的均衡规则选择特定的webserver,然后通过三次握手与此台webserver建立TCP连接,然后webserver把需要的数据发送给七层负载均衡设备,负载均衡设备再把数据发送给client。

具有代表意义的产品:nginx(软件)、apache(软件)

优点:对网络依赖少,负载智能方案多(比如可根据不同的url进行负载)

缺点:网络协议有限,nginx和apache支持http负载,性能没有4层负载高

3、确定使用四层+七层负载结合方案

四层负载使用lvs软件或F5硬件实现。
七层负载使用nginx实现。

如下图是lvs+nginx的拓扑结构:

负载均衡方案_第4张图片
负载均衡方案_第5张图片

喜欢就点赞评论+关注吧

负载均衡方案_第6张图片

感谢阅读,希望能帮助到大家,谢谢大家的支持!

你可能感兴趣的:(常识)