集群(cluster):单台服务器无法满足生产,其中包括容量,可用,性能等,就要组合多台服务器来协同处理,对外部环境来说,集群作为一个整体
一、集群的常见类型:
1、LB:Load Balancing 负载均衡集群
LB利用一个集群中的多台服务器完成工作,作用就是将用户的请求,选择分配给当时负载最小,且能提供最好的服务的服务器来处理。
LB主要应用于访问请求很大的web和在线网游场景
2、HA:High Availability 高可用集群
HA是利用集群中系统冗余,时刻以特定的方式对正在工作的服务器进行检测,当某台服务器发生故障时,备用服务器会替代它工作,最大限度保证服务的可用性。
HA主要应用关键型业务场景,例如银行,电信等
3、HP:High Performance 高性能集群
HP利用一个集群中多台服务器共同完成一件任务,大大提高运行速度和可靠性,弥补了单机性能的不足。
HP主要应用于大数据计算场景,例如天气预报,搜索引擎等。
说明:生产环境中,集群是混合使用的。如金融类网站,面对海量的访问,首先要由负载均衡平衡大访问,而重要数据又要保证可用性,为了提高访问速度又要提高性能。
二、负载均衡集群
负载均衡集群分为硬件和软件,硬件的性能较好,但价格较高,有F5、Citix、IBM等众多商家的相关产品,一般并发处理数500W以上。软件有LVS、Haproxy、nginx、apache等
软件负载均衡:LVS
LVS是一个开源的软件,可以实现linux平台下简单负载均衡。LVS是linux virtual server的缩写,意思为linux虚拟服务
LVS采用三层结构:负载调度器,服务器池,共享存储。
负载调度器(Director)工作在TCP/IP协议的四层,转发协议由内核模块完成,转发规则由管理员定义,所以,LVS是两段式的架构设计,在内核空间中工作的是ipvs,而在用户空间中工作的,用来让管理员定义集群服务规则的是ipvsadm。这跟iptables的工作原理几乎一样,只是运行路线不同。
iptables如下图:
lvs如下图:
lvs中各IP的说明,如图:
CIP:外网IP,客户端的请求IP
VIP:Director(负载调度器)用来向客户端提供服务的IP
DIP:Director用来和RIP通信的IP
RIP:集群节点(提供服务的服务器)的IP
LVS的四种转发模型:
1、LVS-NAT:网络地址转换 Network Address Translation
其实上图就是一个LVS-NAT模型,Director要处理请求和响应报文,因此压力山大,在实际生产环境中,很少用此模型,数据包地址转换过程如下:
S:CIP D:VIP-->Director-->S:CIP D:RIP-->Real server-->S:RIP D:CIP-->Director-->S:VIP D:CIP
此模型有以下特点:
(1)RS使用私有地址,RS的网关指向DIP
(2)请求和响应都由Director转发,Director易成为瓶颈
(3)支持端口映射
(4)RS可使用任意OS
(5)RS的RIP必须与Director的DIP在同一网络
2、LVS-DR:直接路由 Direct routing
此模型中Director仅处理客户端请求报文,而响应不经由Director。数据包地址转换过程如下:
S:CIP D:VIP[路由器MAC Director MAC]-->Director-->S:CIP D:VIP[Drector MAC Real server MAC]-->Real server-->S:VIP D:CIP
此模型有以下特点:
(1)保证前端路由器将目标地址为VIP的请求通过ARP解析后送往Director
解决方案:
静态绑定:在前端路由将VIP对应的MAC静态配置为Director的MAC
arptables:在各RS上,通过arptables规则拒绝其响应对VIP的ARP广播请求
内核参数:在RS上修改内核参数,并结合地址配置方式实现拒绝响应对VIP的ARP广播请求
(2)RS的RIP可以使用私有地址,也可用公网,通过公网对RS管理
(3)请求报文必须经由Directo调度,响应不经由
(4)各RIP必须与DIP在同一个物理网络
(5)不支持端口映射
(6)RS可使用多数OS
(7)RS的网关一定不能指向Director
3、LVS-TUN:IP隧道 IP tunneling
不修改请求报文IP首部,而是通过IP隧道机制在原有的IP报文之外再封装IP首部,经由互联网把请求报文交给选定的RS
架构特性
(1)RIP,DIP,VIP都是公网地址
(2)RS的网关不能指向DIP
(3)请求报文由Director分发,由RS响应Client
(4)不支持端口映射
(5)RS的OS要支持隧道功能
4、lvs-fulnat:通过修改源地址和目标地址实现,请求修改为DIP-RIP,响应修改为VIP-CIP
架构特性
(1)RIP,DIP可以使用私有地址
(2)RIP和DIP可以不在同一个网络,RIP的网关不必指向DIP
(3)支持端口映射
(4)RS的OS可使用任意
(5)请求和响应报文都经由Director
三、LVS的调度方法
调度方法,就是Director(调度器)在接收到用户请求后,根据算法把请求发给服务器池中的哪个服务器。其中调度方法又分为静态方法和动态方法。
1、静态调度方法 fixed scheduling
不关心当前连接的活动和非活动状态,不检查RS的连接状态,相应算法如下:
(1)RR:Round Robin 轮调
把请求依次分配给服务器池中的服务器,无需记录当前所有连接的状态,是一种无状态调度。其实最早的DNS的资源记录给1个域名,多个IP的负载均衡就是种算法。
(2)WRR:Weighted Round Robin 加权轮调
管理员可以根据后端服务器的处理性能,分配不同的权重比例,处理能力的大的分配大的权重。
(3)SH:Source Hashing 源地址哈希
源地址唯一性,用hash算法的表来记录CIP和RIP,根据请求的源IP地址进行判定,保证响应地址和进来的地址,从同一个防火墙通过
(4)DH:Destination Hashing 目标地址哈希
目标地址唯一性,此算法会产生一个hash算法的表来记录客户的这次请求所用的CIP和建立连接RIP,根据首次为其分配的RIP,在hash表缓存时间内,使其每次的新请求,都定向访问到这个RIP
2、动态调度方法 dynamic scheduling
由于静态调度算法不考虑RS的当前状态,因此对于动态网站,动态调度算法才合适,因为其能够给予后台服务器当前的活动连接数进行请求分配,避免了一台服务器负载太多,而其它则闲置
两种标准:
活动状态的连接(active)
非活动状态的连接(inactive)
例如:ssh,telnet均是基于状态的连接,需要实时进行检查连接的状态,而http则是无状态的连接
相应的算法:
(1)LC:Least Connections 最少连接调度
把请求分给当前负载最小的服务器,负载判断值为overhead,overhead=active*256+inactive,当active都为0时,则分发请求由上而下进行。
(2)WLC:weight LC 加权重的最少连接
考虑服务器池的每台服务器性能不统一,也就意味着,活动连接数大并不表示性能差,因此为其加上权重,判断值为:overhead=(active*256+inactive)/weight
(3)SED:Shortest Expected Delay 最短的期望延迟
不计算非活动连接,如果两个性能不同,但是计算后权重一样的服务器,则选择性能好的服务器来处理新请求,计算方法:overhead=(active+1)*256/weight
(4)NQ:Never Queue 永不排队
不计算非活动连接,不论权重,只要没有活动连接,就依次分配给RS一个请求,如果所有服务器都忙,则按overhead计算。
(5)LBLC:Locality-Based Least Connection 基于本地的最少连接
如果客户请求之前连接过并产生缓存未失效,则直接将请求发给之前连接过的RS,否则,以LC算法调度。
(6)LBLCR:Locality-Based Least Connection with Replication 带复制的基于本地的最少连接
假设两台RS,由于缓存的缘故,一个非常忙,一个非常闲,为了负载均衡将忙的RS的缓存发送给不忙的RS,然后使用LC调度算法重新负载均衡即可,此算法要求RS之间要配置缓存共享。
SED和NQ不计算非活动连接,所以大多情况LC和WLC最常用。
WLC和LBLC用的比较多,WLC用于正常的服务场景,LBLC用于带缓存的请求。
四、LVS的共享存储(shared storage)
共享存储实际上也是物理磁盘等存储介质,命名只是应用环境的特殊性。
共享存储为服务器池提供一个共享的存储区,使得服务器池有相同的内容,提供相同的服务。
共享存储通常是数据库、网络文件系统或者分布式文件系统。服务器结点需要动态更新的数据一般存储在数据库系统中,还需保证并发访问时数据的一致性。静态的数据可以存储在网络文件系统(如NFS/CIFS)中,但网络文件系统的伸缩能力有限,一般来说,NFS/CIFS只支持3~6个繁忙的服务器结点。对于规模较大的集群系统,使用分布式文件系统,如AFS、GFS、coda和Intermezzo等。分布式文件系统的分布式锁管理器(Distributed Lock Manager)是保证数据一致性的有效手段。
共享存储的简单分类:
1、DAS:Direct Attached Storage
直接连接到主机的存储设备,一般需要PCI总线的支持,速度比较快。直连式存储的数据量越大,备份和恢复越慢,对服务器硬件的依赖性越大。此类设备的一般接口为IDE,SCSI,USB,SATA
2、NAS:Network Attached Storage 网络附加存储
NAS是一种通过网络介质实现数据存储的机制。优点:适用于共享存储,有文件锁,易于部署,跨平台等。实现方式一般为NFS,SAMBA,WIN共享等,缺点是传输和响应速度慢。
3、SAN:Storage Area Network 存储网络
SAN一般是局域网磁盘阵列,具有磁盘阵列的所有特征:大容量,高效能,可靠。易于安装,维护,良好的扩展,响应快。缺点:由于其工作更底层,因此没有文件管理系统,两个请求同时对一个文件操作,会导致文件系统崩溃,因此需要软件级别的高可用集群实现分布式文件锁