大型网站负载均衡技术和算法

由于大型网站的高并发量对高可用性的要求很强烈,为了避免单台服务器无法处理大量请求或出现服务器故障而导致网站不可用的情况,很多网站采用了负载均衡来保障网站的性能。本节介绍负载均衡的几种技术和实现负载均衡的算法。

负载均衡技术

在大型网站的实际应用中,主要有DNS域名解析负载均衡、反向代理负载均衡、IP负载均衡和数据链路层负载均衡。

1.DNS域名解析负载均衡

DNS域名解析负载均衡利用一个域名可以解析多个A记录的特性来实现负载均衡。比如DNS服务器可将域名leiman.eduplus.site解析到110.122.22.01和110.122.22.02,当用户通过浏览器请求域名leiman.eduplus.site时,DNS服务器会根据A记录和负载均衡算法计算得到一个IP地址返回给浏览器,浏览器根据该IP访问真实的物理服务器。DNS支持基于地理位置和网络运营商的域名解析,当用户访问域名的时候,DNS可以返回离用户最近的物理服务器IP,或根据用户所在的网络区段,比如在国内可根据用户由移动网络、联通网络或电信网络提供的服务分别解析到不同的运营商所提供的机房里的某台真实的物理服务器IP,这样可以避免有时在运营商某些节点之间网络不通的情况。

2.反向代理负载均衡

反向代理服务器通过将请求转发给后端可以提供真实服务的服务器实现负载均衡,作用在HTTP协议层面,属于应用层的负载均衡。当反向代理服务器收到请求后,会根据负载均衡算法计算得到一台真实的服务器IP,并将请求转发给该服务器,该服务器收到请求后将请求响应返回给反向代理服务器,反向代理服务器再将响应返回给用户。使用反向代理负载均衡的网站,用户的每次请求和网站的每次响应都会经过反向代理服务器,所以要选择合适的反向代理服务器,避免这里成为网站的瓶颈。

3.IP负载均衡

IP负载均衡是通过在网络层修改请求IP地址来实现的,即地址转换,属于网络层负载均衡。当用户请求到达负载均衡服务器后,负载均衡服务器会将请求的目的地址修改为后端的某台真实的Web服务器,真实的Web服务器将处理完的响应发回给负载均衡服务器,负载均衡服务器再将响应包的源地址修改为自身的IP地址发送给用户。

4.数据链路层负载均衡

数据链路层负载均衡是通过在数据链路层修改MAC地址来实现的。采用数据链路层负载均衡的系统需要配置负载均衡服务器和Web服务器相同的IP地址,Web服务器可通过虚拟IP实现和负载均衡服务器相同的IP。这样当用户的请求到达负载均衡服务器时,负载均衡服务器通过修改目的地址的MAC地址,将请求转发给某台Web服务器,Web服务器处理完后,将响应通过网管服务器直接发送给用户浏览器。在这个过程中只通过负载均衡服务器修改了用户请求的目的地址的MAC地址,而不修改IP地址,只有用户的请求会经过负载均衡服务器,而服务器响应不需要经过负载均衡服务器。目前常用的基于数据链路层的负载均衡产品是LVS(Linux Virtual Server)。

负载均衡算法

所有的负载均衡本质上都要依赖负载均衡算法来实现,负载均衡算法实现的逻辑是在负载均衡服务器中,常用的负载均衡算法有以下几种。

1.轮询

将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载,适合服务器硬件相似的情况。

2.加权轮询

不同的后端服务器可能机器的配置和当前系统的负载并不相同,因此它们的抗压能力也不相同。给配置高、负载低的机器配置更高的权重,让其处理更多的请求;而对于配置低、负载高的机器,给其分配较低的权重,降低其系统负载,加权轮询能很好地处理这一问题,并将请求顺序按照权重分配到后端。

3.随机

通过系统的随机算法,根据后端服务器的列表来随机选取其中的一台服务器进行访问。由概率统计理论可以得知,随着客户端调用服务端的次数增多,其实际效果越来越接近于平均分配调用。

4.最少连接

由于后端服务器的配置不尽相同,对于请求的处理有快有慢,它是根据后端服务器当前的连接情况来将请求分发到不同的服务器上的,这种方法可以记录每个服务器正在处理的连接数,将新到的请求转发给当前最少连接的服务器,实现合理的分流,有效地提高服务器的利用效率。同样最少连接也可以实现加权最少连接。

5.源地址哈希

源地址哈希的思想是根据请求客户端的IP地址,通过哈希函数计算得到一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是客户端要访问服务器的序号。采用源地址哈希法进行负载均衡,同一IP地址的客户端,当后端服务器列表不变时,它每次都会映射到同一台后端服务器进行访问。这样来自同一个IP地址的请求总是到达同一台服务器上,该请求的上下文可以保存在这台服务器上,从而可以在一个会话周期内实现会话黏滞。

吐槽 (1)
  • 版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容, 欢迎发送邮件至 postmaster@zzyzan.com 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
  • 本作品是由 小乖乖资源共享网 会员 张泽 的投递作品。
  • 欢迎转载,但请务必注明来源地址:http://www.zzyzan.com/skill/jiagou/11979.html
转贴到:

- 评论

  • 加载中,请稍候…
我要吐槽