全部博文(68)
分类: LINUX
2012-12-30 22:50:42
一.什么是负载均衡和高可用
负载均衡,据《构建高可用服务器》一书所讲,指的是建立在现有网络架构下,提供了一种廉价、有效、透明的方法来扩大网络设备和服务器带宽、增加吞吐量、加强网络数据处理能力,以及提高网络灵活性和可用性的一种手段。通过负载均衡器,可以实现N台廉价的服务器的并行处理,从而达到小型机或大型机的计算能力。
高可用,广义来讲指的是整个系统不用因为其中一台或几台主机崩溃而出现停止服务的现象。狭义来讲指的是主机的接管,如一台主机崩溃由另一台主机接管其工作。
二.常用的负载均衡器(Director)和高可用(HA)软件
负载均衡器通常称为四层交换机或七层交换机。四层交换机主要分析IP层及TCP/UDP层,实现四层流量负载均衡。七层交换机除了支持四层负载均衡以外,还有分析应用层的信息,如HTTP协议URI或Cookie信息。常用的负载均衡器如下:
1.F5 BIG-IP
作为负载均衡器的硬件主要有F5 BIG-IP和Citrix NetScaler。F5的官方名称叫做本地流量管理器,可以做4~7层的负载均衡。
2.LVS
LVS是一个负载均衡/高可用性集群,主要面对大业务量的网络应用,如网银,电子商务等。它建立在一个主控服务器(通常是双机)和若干真实服务器所组成的集群之上。集群结构对于用户是透明的,客户端只与单个IP(集群系统的虚拟IP)通信。
LVS集群的体系结构:
A.负载调度器
集群对外的前端机,负责将用户的请求发送到一组服务器上执行,而用户认为服务是来自一个IP地址上的。它是集群系统的唯一入口,可以采用IP负载均衡技术和内容分发技术,或者两者结合。
B.服务器池
一组真正执行客户请求的服务器,执行的服务有DNS,WEB,MAIL,FTP等。服务器节点数是可变的。每台服务器提供相同的服务内容。
C.共享存储
为服务器池提供一个共享的存储区,使得服务器池拥有相同的内容,提供相同的服务。通常是数据库、网络文件系统或分布文件系统。服务器节点动态更新的数据可以放在数据库系统中,同时数据库会保证并发访问数据的一致性。静态数据可以放在网络文件系统中(如NFS,CIFS),但网络文件系统可伸缩性能力有限,一般可支持3~6个繁忙节点。规模较大的集群可以考虑分布文件系统,如AFS,GFS,Code和intermezzo等。
三种实现虚拟服务器的方法:
A.VS/NAT(网络地址转换)
即用NAT的方法将不同IP地址的并行网络服务变成一个在同一个IP地址上的虚拟服务。NAT(网络地址转换),将内部地址转换成一个统一的外部地址,这样客户认为连接的是同一个IP地址,而不同内部IP的服务器组也认为他们是与客户直接连接的。
VS/NAT的优点是服务器可以运行在任何支持TCP/IP的操作系统,只需要一个IP地址配置在调度器上,服务器组可以使用私有的内部IP地址。缺点是伸缩能力有限,当服务器节点数增加到20时,调度器本身有可能成为系统新的瓶颈。这样的解决方法可以是若干个VS/NAT混合使用,或采用VS/TUN,VS/DR。
B.VS/TUN(IP隧道)
大多数internet服务都有这样的特点:请求报文较短但响应数据报文往往包含大量数据。如果能将请求和响应分开的话,即负载调度器只负责调度请求,而响应直接返回给客户,这将极大的提高整个集群系统的吞吐量。IP隧道是将一个IP报文封装到另一个报文中的技术,这样使得一个IP地址的数据报文能被封装和转发到另一个IP地址。IP隧道技术主要应用在移动主机和虚拟私有网络,在其中隧道都是静态建立的,隧道一端有一个IP地址,另一端也有一个唯一的IP地址。
VS/TUN的优点是负载调度器只负责将请求调度到不同的服务器上,后台服务器组将应答直接返回给用户 ,这样调度器可以处理大量的用户请求,调度大量服务器而不会成为系统的瓶颈。但这个方法对服务器有要求,即所有服务器必须支持IP隧道或IP encapsulation协议。
C.VS/DR(直接路由)
调度器和服务器组都在物理上有一个网卡通过局域网相连,如高速交换机或HUB相连。VIP地址被调度器和服务器组共享,调度器配置的VIP地址是对外可见的,用于接收虚拟服务的请求的报文。所有的服务器把VIP地址配置在各自的Non-ARP网络设置上,它对外是不可见的,只是用于处理目标地址为VIP的网络请求。
VS/DR具有VS/TUN一样的优点,但没有IP隧道的开销,但要求负载调度器与实际服务器都有一块网卡连在同一个物理网段上,服务器网络设备不作ARP响应,或者能将报文重定向到本地的SOCKET端口上。
3.Nginx
Nginx即可以作为负载均衡器也可作为反向代理服务,可以按轮询,IP_hash,URL_hash,权重等多种方法对报务器执行负载均衡操作,同时还支持对后端服务器的健康检查。另外,比起LVS的一个优势:由于它是基于第7层的负载均衡,是根据报头内的信息来执行负载均衡的,所以对网络的依赖性比较小,理论上只要ping得通就能实现负载均衡。同时也是一款高并发环境的WEB应用软件。
Nginx的优点有:
A.配置文件简单,通俗易懂;
B.开源软件,开本低;
C.支持Rewrite重写规则。能够根据域名的URL的不同将HTTP请求分发到不同的后端服务器群上;
D.内置的健康检查功能;
E.节省带宽。支持GZIP压缩,可以添加浏览器本地缓存的Header头;
F.稳定性高。
缺点是:目前只支持HTTP和Mail的负载均衡。不过可以取长补短,利用其支持将其支持Rewrite重写规则和稳定性高的特点,应用于大型网站的中间级别的负载均衡。
4.HAproxy
HAproxy是一款基于TCP(第四层)和HTTP(第七层)应用的代理软件,也可以作为负载均衡器且免费。它的优点是性能突出,特别适用于负载大的WEB站点,这些站点通常需要具备会话保持或七层处理功能。完全可以支持数以万计的并发连接。
A.免费开源,稳定性好;
B.支持并发连接数大;
C.支持连接拒绝,有效防止蠕虫攻击,这是其他负载均衡不具备的;
D.支持全透明代理。这使得为某特殊服务器处理部分流量的同时又不修改服务器的地址。
E.多用于线上的MySQL集群环境,常用作MySQL(读)负载均衡。
F.支持虚拟主机。
高可用常用的有:
1.高可用软件Keepalived
它的主要功能是实现真实机的故障隔离及负载均衡器间的失败切换。它会检测WEB服务器的状态,并将故障的WEB服务器从系统中剔除,或将故障恢复的服务器加入到服务器群中。这一系列都是自动完成的。
2.高可用软件Heartbeat
它提供了所有HA软件所需要的基本功能,但配置流程复杂。
3.高可用块设备DRBD
DRBD是一个块设备,可用于高可用之中,其工作原理如下:当将数据写入本地文件系统时,数据还将发送到网络中的另一台主机上,并以相同的形式记录在同一个文件系统中,本地(主节点)与远程主机(备节点)的数据可以保持同步。当本地系统出现故障时,远程主机上还保留着一份相同的数据,可以继续使用。在高可用中使用DRBD可能代替一个共享盘阵。实际中可以采用DRBD+Heartbeat+NFS组成高可用的文件系统。