想实现高可用?先搞定负载均衡原理( 二 )


而单个防火墙上看不到完成用户会话的信息,就会认为数据非法因此抛弃数据 。
所以在每个防火墙的两端要架设四层交换机,可以在作流量分发的同时,维持用户会话的完整性,使同一用户的会话由一个防火墙来处理 。而这种场景就需要 F5 负载均衡器协助才能完成转发 。
有趣的是,F5 协调上述方案的配置和实现后,会把“交换机”,“防火墙”,“交换机”夹在了一起好像三明治一样 。

想实现高可用?先搞定负载均衡原理

文章插图
 
防火墙“三明治”
③服务器负载均衡
在硬件负载均衡器挂接多个应用服务器时,需要为这些服务做负载均衡,根据规则,让请求发送到服务器上去:
  • 对于服务器的负载均衡的前提是,服务器都提供同样的服务,也就是同样的业务同时部署在多个服务器上 。
  • 对于应用服务器可以在 F5 上配置并且实现负载均衡,F5 可以检查服务器的健康状态,如果发现故障,将其从负载均衡组中移除 。
  • F5 对于外网而言有一个真实的 IP,对于内网的每个服务器都生成一个虚拟 IP,进行负载均衡和管理工作 。因此,它能够为大量的基于 TCP/IP 的网络应用提供服务器负载均衡服务 。
  • 根据服务类型不同定义不同的服务器群组 。
  • 根据不同服务端口将流量导向对应的服务器 。甚至可以对 VIP 用户的请求进行特殊的处理,把这类请求导入到高性能的服务器使 VIP 客户得到最好的服务响应 。
  • 根据用户访问内容的不同将流量导向指定服务器 。
优缺点总结
聊完了硬件负载均衡器的特点和功能以后,让我们来总结一下它的优缺点:
  • 优点:直接连接交换机,处理网络请求能力强,与系统无关,负载性能强 。可以应用于大量设施,适应大访问量、使用简单 。
  • 缺点:成本高,配置冗余 。即使网络请求分发到服务器集群,负载均衡设施却是单点配置;无法有效掌握服务器及应使用状态 。
软件负载均衡
说完硬件负载均衡,再来谈谈软件负载均衡 。软件负载均衡是指在一台或多台服务器的操作系统上安装一个或多个软件来实现负载均衡 。
它的优点是基于特定环境,配置简单,使用灵活,成本低廉,可以满足一般的负载均衡需求 。
代理层通常起到承上启下的作用,上连“接入层”,下接应用服务器(上游服务器),可以做反向代理,缓存,数据验证,限流 。本文会一一为各位介绍 。
目前市面上比较流行的软件负载均衡有 LVS,HAProxy,Ngnix 。由于篇幅有限我们通过应用广泛的 Nginx 为切入点,给大家讲解,之后会把上面三类软件进行一个对比 。
功能描述和原理分析
对于程序员来说,接触最多的就是软件负载均衡 。不仅要知道如何使用,同时也要了解背后的原理,下面列举了其最常用到的 4 大功能 。
①反向代理与负载均衡
第一个功能是反向代理与负载均衡,如下图:
想实现高可用?先搞定负载均衡原理

文章插图
 
客户端是如何把请求发送到应用服务器的
客户端把请求发送到应用服务器有如下几个步骤:
  • 客户端请求 URL 给 DNS 。
  • DNS 将 URL 转化成对应的 IP 。
  • 通过 IP 找到服务器 。
  • 服务器接受到请求的报文,转交给接入层处理,接入层由于采用了硬件负载均衡器,所以能够扛住大数据量 。
  • 接入层把报文再次转交给代理层(并发 5W),代理层的 Nginx 收到报文再根据反向代理的策略发送给上游服务器(应用服务器) 。
负载均衡的算法/策略
实际上负载均衡的算法是很多的,这里以 Nginx 为例,介绍五种算法: