负载均衡服务介绍:
一.F5 BIG-IP相关介绍:
1.F5 BIG-IP用作HTTP负载均衡器的主要功能
1)F5 BIG-IP提供12种灵活的算法将所有流量均衡的分配到各个服务器,而面对用户,只是一台虚拟服务器。
2)F5 BIG-IP可以确认应用程序能否对请求返回对应的数据。假如F5 BIG-IP后面的某一台服务器发生服务停止、死机等故障,F5会检查出来并将该服务器标识为宕机,从而不将用户的访问请求传送到该台发生故障的服务器上。这样,只要其它的服务器正常,用户的访问就不会受到影响。宕机一旦修复,F5 BIG-IP就会自动查证应用保证对客户的请求作出正确响应并恢复向该服务器传送。
3)F5 BIG-IP具有动态Session的会话保持功能,笔者也是在网站中使用的F5将用户IP与Session通过F5进行的绑定,使其Session保持一致。
4)F5 BIG-IP的iRules功能可以做HTTP内容过滤,根据不同的域名、URL,将访问请求传送到不同的服务器。
2.F5负载均衡架构图:
3.F5优缺点:
优点:能够直接通过智能交换机实现,处理能力更强,而且与系统无关,负载性能强,更适用于一大堆设备、大访问量、简单应用。
缺点:成本高,除设备价格高昂,而且配置冗余,很难想象后面服务器做一个集群,但最关键的负载均衡设备却是单点配置,无法有效掌握服务器及应用状态。
硬件负载均衡,一般都不管实际系统与应用的状态,而只是从网络层来判断,所以有时候系统处理能力已经不行了,但网络可能还来得及反应(这种情况非常典型,比如应用服务器后面内存已经占用很多,但还没有彻底不行,如果网络传输量不大就未必在网络层能反映出来)
4.Citrix 的 NetScaler介绍:
5.Array:
二.nginx ------------> web服务器-----应用层基础上的负载均衡
1.Nginx的简单介绍:
nginx是高性能的 HTTP和反向代理服务器,同时支持作为IMAP/POP3/SMTP代理服务器。目前被很多网站应用为其HTTP软负载均衡器。高效的性能、良好的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗正逐渐被大型互联网公司所青睐。
2.ngixn负载均衡的工作原理:
1)负载均衡的工作原理:Nginx采用的是反向代理技术,代理服务器(192.168.222.130)来接受internet上的连接请求,然后将请求转发给内部网络上的服务器(web1或着web2),并将从服务器(web1或者web2)上得到的结果返回给internet上请求连接的客户端,此时代理服务器(192.168.222.130)对外就表现为一个服务器。反向代理/负载均衡技术是把将来自internet上的连接请求以反向代理的方式动态地转发给内部网络上的多台服务器进行处理,从而达到负载均衡的目的。
2)nginx工作过程:
Nginx启动后,其工作进程(一旦NGINX服务起来,仅有工作进程在忙,每个工作进程采用非阻塞地方式处理多个连接,降低上下文切换的次数)是由配置文件对其进行初始化的,主进程(master process)处理配置文件中的读取、端口绑定等特权操作,之后创建一小组子进程(work process),由这些子进程进行请求的处理,同时缓存加载器加载硬盘中缓存到内存中,接着退出,保证资源开销始终保持着较低的状态。创建的子进程其实在负责所有的工作,处理网络连接、硬盘读写操作、以及上游服务器通信。
3.nginx负载均衡的优缺点:
优点:
1)工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构。
2)Nginx对网络稳定性的依赖非常小,理论上能ping通就就能进行负载功能,这个也是它的优势之一
3)Nginx安装和配置比较简单,测试起来比较方便,它基本能把错误用日志打印出来。
4)可以承担高负载压力且稳定,在硬件不差的情况下一般能支撑几万次的并发量
5)Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点,不过其中缺点就是不支持url来检测。比如用户正在上传一个文件,而处理该上传的节点刚好在上传过程中出现故障,Nginx会把上传切到另一台服务器重新处理.
6)Nginx不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的Web应用服务器
7)Nginx对请求的异步处理可以帮助节点服务器减轻负载;假如使用apache直接对外服务,那么出现很多的窄带链接【将网络接入速度为64Kbps(最大下载速度为8KB/S)及其以下的网络接入方式】时apache服务器将会占用大 量内存而不能释放,使用多一个Nginx做apache代理的话,这些窄带链接会被Nginx挡住,apache上就不会堆积过多的请求,这样就减少了相当多的资源占用。
8)基于系统与应用的负载均衡,能够更好地根据系统与应用的状况来分配负载。
缺点:
1)对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测。不支持Session的直接保持,但能通过ip_hash来解决。
2)负载能力受服务器本身性能的影响,性能越好,负载能力越大。
三.lvs负载均衡
1.lvs简单介绍:
官网地址:http://www.linuxvirtualserver.org
LVS是Linux Virtual Server的简写,意为Linux虚拟服务器,是虚拟的服务器集群系统,其使用Linux内核集群实现一个高性能、高可用的负载均衡服务器,它具有很好的可伸缩性(Scalability)、可靠性(Reliability)和可管理性(Manageability)。
2.lvs负载均衡原理:
3.lvs负载均衡优缺点:
优点:
1)抗负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生,这点保证了均衡器IO的性能不会收到大流量的影响。这个特点也决定了它在负载均衡软件里的性能最强的,对内存和cpu资源消耗比较低。
2)配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率。
3)工作稳定,因为其本身抗负载能力很强,自身有完整的双机热备方案,如LVS+Keepalived
4)应用范围比较广,因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、在线聊天室等等。
缺点:
1)软件本身不支持正则表达式处理,不能做动静分离;
2)LVS的配置、测试就要花比较长的时间了,LVS对网络依赖比较大。
3)比如用户正在上传一个文件,而处理该上传的节点刚好在上传过程中出现故障,LVS就直接断掉。
四.HAProxy负载均衡:
1.haproxy简单介绍:
1)haproxy提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。
2)haproxy特别适用于那些负载特别大的web站点,这些站点通常又需要会话保持或七层处理
3)haproxy完全可以支持数以万计的并发连接,并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。
4)haproxy实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。
事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space)实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以使每个CPU时间片(Cycle)做更多的工作。
2.haproxy原理图:
现在要求如下:
2.1、域名跳转
客户端访问http://dg.test.com时,要把请求分发到192.168.5.171:8080、192.168.5.174:8080、192.168.5.178:8080,这三台服务器上。
客户端访问http://ilanni.test.com时,要把请求分发到ilanni.com,这台服务器上。
2.2、IP地址跳转
客户端访问http://192.168.5.171时,要把请求分发到192.168.5.174:80、192.168.5.178:80这两台服务器上。同时还要求客户端每一次访问,都跳转到不同的服务器上。
2.3、端口跳转
客户端访问http://dg.test.com:8090和http://ilanni.test.com:8090这两个地址时,要把请求分发到192.168.5.174:8090、192.168.5.178:8090,这两台服务器上。
2.4、默认跳转
如果客户端访问的不是dg.test.com与192.168.5.171,这两个地址的话,要把请求全部分发到192.168.5.178:8080上。
2.5、多ACL匹配
如果客户端的IP是192.168.5.140,同时访问的是http://192.168.5.171时,要把请求分发到www.ilanni.com上。
3.haproxy负载均衡优缺点:
优点:
1)HAProxy也是支持虚拟主机的。
2)HAProxy的优点能够补充Nginx的一些缺点,比如支持Session的保持,Cookie的引导;同时支持通过获取指定的url来检测后端服务器的状态。
3)HAProxy跟LVS类似,本身就只是一款负载均衡软件;单纯从效率上来讲HAProxy会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。
4)HAProxy支持TCP协议的负载均衡转发,可以对MySQL读进行负载均衡。
缺点:
1)不支持POP/SMTP协议, 不支持SPDY协议
2)不支持HTTP cache功能。现在不少开源的lb项目,都或多或少具备HTTP cache功能。
3)重载配置的功能需要重启进程,虽然也是soft restart,但没有Nginx的reaload更为平滑和友好。
4 ) 多进程模式支持不够好
五.现在对网络负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术:
第一阶段:利用Nginx或HAProxy进行单点的负载均衡,这一阶段服务器规模刚脱离开单服务器、单数据库的模式,需要一定的负载均衡,但是仍然规模较小没有专业的维护团队来进行维护,也没有需要进行大规模的网站部署。这样利用Nginx或HAproxy就是第一选择,此时这些东西上手快, 配置容易,在七层之上利用HTTP协议就可以。这时是第一选择。
第二阶段:随着网络服务进一步扩大,这时单点的Nginx已经不能满足,这时使用LVS或者商用Array或者F5就是首要选择,Nginx此时就作为LVS或者Array或者F5的节点来使用,具体LVS或Array或者F5的是选择是根据公司规模和预算来选择,Array的应用交付功能非常强大,性价比也远高于F5,商用首选!但是一般来说这阶段相关人才跟不上业务的提升,所以购买商业负载均衡已经成为了必经之路。
第三阶段:这时网络服务已经成为主流产品,此时随着公司知名度也进一步扩展,相关人才的能力以及数量也随之提升,这时无论从开发适合自身产品的定制,以及降低成本来讲开源的LVS,已经成为首选,这时LVS会成为主流。
最终形成比较理想的基本架构为:
F5/Array/LVS — Nginx/Haproxy — Squid/Varnish — AppServer。