参考:http://www.cnblogs.com/lovingprince/archive/2008/11/13/2166350.htmlhtml
http://www.cnblogs.com/lovingprince/archive/2008/11/13/2166349.htmlweb
http://news.cnblogs.com/n/208124/ 算法
http://network.51cto.com/art/201108/281452.htm数据库
负载均衡的概念 后端
这是目前运用最为普遍的双节点双应用的Active/Active模式。缓存
支撑用户业务的应用程序在正常状态下分别在两台节点上运行,各自有本身的资源,好比IP地址、磁盘阵列上的卷或者文件系统。当某一方的系统或者资源出现故障时,就会将应用和相关资源切换到对方的节点上。安全
这种模式的最大优势是不会有服务器的“闲置”,两台服务器在正常状况下都在工做。但若是有故障发生致使切换,应用将放在同一台服务器上运行,因为服务器的处理能力有可能不能同时知足数据库和应用程序的峰值要求,这将会出现处理能力不够的状况,下降业务响应水平。服务器
两节点的Active/Standby模式是HA中最简单的一种,两台服务器经过双心跳线路组成一个集群。应用Application联合各个可选的系统组件如:外置共享的磁盘阵列、文件系统和浮动IP地址等组成业务运行环境。网络
PCL为此环境提供了彻底冗余的服务器配置。这种模式的优缺点:架构
前面已经说过负载均衡的做用是在多个节点之间按照必定的策略(算法)分发网络或计算处理负载。负载均衡能够采用软件和硬件来实现。通常的框架结构能够参考下图。
支持负载均衡的地址转换网关,能够将一个外部IP地址映射为多个内部IP地址,对每次TCP链接请求动态使用其中一个内部地址,达到负载均衡的目的。不少 硬件厂商将这种技术集成在他们的交换机中,做为他们第四层交换的一种功能来实现,通常采用随机选择、根据服务器的链接数量或者响应时间进行选择的负载均衡 策略来分配负载。因为地址转换相对来说比较接近网络的低层,所以就有可能将它集成在硬件设备中,一般这样的硬件设备是局域网交换机。
负载均衡软实现
目前比较流行的就三类软件负载均衡,LVS、Nginx和HAProxy。用的最多的仍是LVS和Nginx这两种。
◆LVS
平时咱们说的LVS是Linux Virtual Server。这固然是基于Linux的开源软件了,这就意味着它是免费的。它基本上能支持全部应用,由于lvs工做在4层,因此它能够对几乎全部应用作负载均衡,包括http、数据库、聊天室等等。同时,若跟硬件负载均衡相比它的缺点也不容忽视,LVS要求技术水平很高,操做上也比较复杂,配置也很繁琐,没有赖以保障的服务支持,稳定性来讲也相对较低(人为和网络环境因素更多一些)。
◆Nginx
在这里,咱们介绍Nginx就须要跟LVS来对比了。LVS是工做在第四层,对网络的依赖性相对较大。然而Nginx是工做在第七层,对于网络的依赖性就小的多。与LVS相比,Nginx的安装和配置也相对简单一些,另外测试方面也更简单,主要仍是由于对网络依赖性小的缘故。Nginx有一点很差的就是应用要比LVS少。通常咱们作软件负载均衡的时候,一般会先考虑LVS,可是遇到比较复杂的网络环境时,用LVS可能会遇到不少麻烦,不妨就考虑尝试一下Nginx。
◆HAProxy
使用HAProxy的人很是少,对其了解的也很少。经过官方的了解,HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速而且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点一般又须要会话保持或七层处理。(听说是能够工做在4-7层的。)而且它的运行模式使得它能够很简单安全的整合进您当前的架构中,同时能够保护你的web服务器不被暴露到网络上。
3、软负载——LVS
LVS 是四层负载均衡,也就是说创建在 OSI 模型的第四层——传输层之上,传输层上有咱们熟悉的 TCP/UDP,LVS 支持 TCP/UDP 的负载均衡。
LVS 的转发主要经过修改 IP 地址(NAT 模式,分为源地址修改 SNAT 和目标地址修改 DNAT)、修改目标 MAC(DR 模式)来实现。
那么为何 LVS 是在第四层作负载均衡?
首先 LVS 不像 HAProxy 等七层软负载面向的是 HTTP 包,因此七层负载能够作的 URL 解析等工做,LVS 没法完成。其次,某次用户访问是与服务端创建链接后交换数据包实现的,若是在第三层网络层作负载均衡,那么将失去「链接」的语义。软负载面向的对象应该是一个已经创建链接的用户,而不是一个孤零零的 IP 包。后面会看到,实际上 LVS 的机器代替真实的服务器与用户经过 TCP 三次握手创建了链接,因此 LVS 是须要关心「链接」级别的状态的。
LVS 的工做模式主要有 4 种:
DR
NAT
TUNNEL
Full-NAT
这里挑选经常使用的 DR、NAT、Full-NAT 来简单介绍一下。
一、DR
请求由 LVS 接受,由真实提供服务的服务器(RealServer, RS)直接返回给用户,返回的时候不通过 LVS。
DR 模式下须要 LVS 和绑定同一个 VIP(RS 经过将 VIP 绑定在 loopback 实现)。
一个请求过来时,LVS 只须要将网络帧的 MAC 地址修改成某一台 RS 的 MAC,该包就会被转发到相应的 RS 处理,注意此时的源 IP 和目标 IP 都没变,LVS 只是作了一下移花接木。
RS 收到 LVS 转发来的包,链路层发现 MAC 是本身的,到上面的网络层,发现 IP 也是本身的,因而这个包被合法地接受,RS 感知不到前面有 LVS 的存在。
而当 RS 返回响应时,只要直接向源 IP(即用户的 IP)返回便可,再也不通过 LVS。
DR 模式是性能最好的一种模式。
二、NAT
NAT(Network Address Translation)是一种外网和内网地址映射的技术。
NAT 模式下,网络报的进出都要通过 LVS 的处理。LVS 须要做为 RS 的网关。
当包到达 LVS 时,LVS 作目标地址转换(DNAT),将目标 IP 改成 RS 的 IP。RS 接收到包之后,仿佛是客户端直接发给它的同样。
RS 处理完,返回响应时,源 IP 是 RS IP,目标 IP 是客户端的 IP。
这时 RS 的包经过网关(LVS)中转,LVS 会作源地址转换(SNAT),将包的源地址改成 VIP,这样,这个包对客户端看起来就仿佛是 LVS 直接返回给它的。客户端没法感知到后端 RS 的存在。
三、Full-NAT
不管是 DR 仍是 NAT 模式,不可避免的都有一个问题:LVS 和 RS 必须在同一个 VLAN 下,不然 LVS 没法做为 RS 的网关。
这引起的两个问题是:
一、同一个 VLAN 的限制致使运维不方便,跨 VLAN 的 RS 没法接入。
二、LVS 的水平扩展受到制约。当 RS 水平扩容时,总有一天其上的单点 LVS 会成为瓶颈。
Full-NAT 由此而生,解决的是 LVS 和 RS 跨 VLAN 的问题,而跨 VLAN 问题解决后,LVS 和 RS 再也不存在 VLAN 上的从属关系,能够作到多个 LVS 对应多个 RS,解决水平扩容的问题。
Full-NAT 相比 NAT 的主要改进是,在 SNAT/DNAT 的基础上,加上另外一种转换,转换过程以下:
在包从 LVS 转到 RS 的过程当中,源地址从客户端 IP 被替换成了 LVS 的内网 IP。
内网 IP 之间能够经过多个交换机跨 VLAN 通讯。
当 RS 处理完接受到的包,返回时,会将这个包返回给 LVS 的内网 IP,这一步也不受限于 VLAN。
LVS 收到包后,在 NAT 模式修改源地址的基础上,再把 RS 发来的包中的目标地址从 LVS 内网 IP 改成客户端的 IP。
Full-NAT 主要的思想是把网关和其下机器的通讯,改成了普通的网络通讯,从而解决了跨 VLAN 的问题。采用这种方式,LVS 和 RS 的部署在 VLAN 上将再也不有任何限制,大大提升了运维部署的便利性。
四、Session
客户端与服务端的通讯,一次请求可能包含多个 TCP 包,LVS 必须保证同一链接的 TCP 包,必须被转发到同一台 RS,不然就乱套了。为了确保这一点,LVS 内部维护着一个 Session 的 Hash 表,经过客户端的某些信息能够找到应该转发到哪一台 RS 上。
五、LVS 集群化
采用 Full-NAT 模式后,能够搭建 LVS 的集群,拓扑结构以下图:
六、容灾
容灾分为 RS 的容灾和 LVS 的容灾。
RS 的容灾能够经过 LVS 按期健康检测实现,若是某台 RS 失去心跳,则认为其已经下线,不会在转发到该 RS 上。
LVS 的容灾能够经过主备+心跳的方式实现。主 LVS 失去心跳后,备 LVS 能够做为热备当即替换。
容灾主要是靠 KeepAlived 来作的。
硬件负载均衡
硬件负载均衡在国外比较流行。硬件负载均衡解决方案是直接在服务器和外部网络间安装负载均衡设备,这种设备咱们一般称之为负载均衡器,因为专门的设备完成专门的任务,独立于操做系统,总体性能获得大量提升,加上多样化的负载均衡策略,智能化的流量管理,可达到最佳的负载均衡需求。
下面就来了解一下市场中,比较主流的几类产品。
◆F5 BIG-IP负载均衡器(LTM)
BIG-IP系列产品受到了用户的普遍承认,使用的人也不少。它的强大之处是基于简单的Web管理界面,包括其余F5设备也是如此。同时,这个负载均衡器还能够处理SSL证书。F5的主要特色之一是其广域网优化管理器,具有高可用的加密通道,同时具备广域网传输速度,优化与数据中心的传输道路。根据这一优点,几乎是自动地就产生了一个简单的基于广域网的灾难恢复解决方案。
F5 BIG-IP LTM的官方名称叫作本地流量管理器,能够作4-7层负载均衡,具备负载均衡、应用交换、会话交换、状态监控、智能网络地址转换、通用持续性、响应错误处理、IPv6网关、高级路由、智能端口镜像、SSL加速、智能HTTP压缩、TCP优化、第7层速率整形、内容缓冲、内容转换、链接加速、高速缓存、Cookie加密、选择性内容加密、应用攻击过滤、拒绝服务(DoS)攻击和SYN Flood保护、防火墙-包过滤、包消毒等功能。
◆思科
思科几乎每一个IOS路由器都具备负载均衡功能。这是很是使人激动的,由于咱们没必要去添加额外的硬件产品,基于现有设备,只须要添加负载均衡规则就能够了。思科是路由器领域的老大,固然负载均衡功能只是其缘由中的一个。
思科的IOS包括不少负载均衡功能,好比端口绑定,会话交换,TCP优化,NAT和服务器负载均衡器算法,等等。
思科的服务很是到位,在国外,很多技术人员都说,若是你购买了思科的产品就永远不会被公司解雇。
◆Radware的AppDirector系列
Radware的AppDirector (AD)在服务器负载均衡应用方面能够作到本地的服务器负载均衡(AD)和广域的全局服务器负载均衡(AD -Global)。它的单价比较便宜,并具备高扩展性和智能化服务。同时也拥有网络监控和检测功能,全局负载均衡和缓解必定的DDoS攻击等。
另外,Radware设备还有一些特色是比较容易更新和升级,可以感知应用服务,智能化是其宣传的理念之一,也是这个产品的一大特点。
◆梭子鱼负载均衡
梭子鱼的负载均衡器的最大特色是包含了网络安全功能。它具备入侵防护功能,而不是单单检测入侵。这可以更全面地保护你的网络,即便你错过了一个关键的更新和漏洞的修补,梭子鱼的更新服务也能让你的系统自动地更新起来。
此外,梭子鱼的负载均衡也是Web界面操做的,全局负载以及内容缓存也是它的显著特色。