LVS负载均衡集群
一、集群概述
1. 什么是集群
Cluster:集群,同一个业务系统,部署在多台服务器上。集群中,每台服务器实现功能无差别,数据和代码都是一样的。
2. 为什么要使用集群
2.1 原因
互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠性等要求越来越高,单台服务器已经无法满足负载均衡及高可用的要求。
2.2 解决方法
- 使用价格昂贵的小型机、大型机。(纵向扩容)
- 使用多台相对廉价的普通服务器构建服务群集。(横向扩容)
2.3 LVS集群技术
- 在企业中常用的一种群集技术一LVS (Linux Virtual Server, Linux虚拟服务器)
- 通过整合多台服务器,使用LVS来达到服务器的高可用和负载均衡,并以同一个IP地址对外提供相同的服务。
3. 集群的优点
- 提高性能:计算密集应用。如天气预报,核试验模拟。
- 降低成本:相对百万美元的超级计算机,价格便宜。
- 提高可扩展性:只要增加集群节点即可。
- 增强可靠性:多个节点完成相同功能,避免单点失败。
二、企业集群分类
根据群集所针对的目标差异,可分为三种类型:
- 负载均衡群集
- 高可用群集
- 高性能运算群集
1. 负载均衡群集(LB Cluster)
- 提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、负载(LB)的整体性能;
- LB的负载分配依赖于主节点的分流算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载压力。例如,“DNS轮询”、“反向代理” 等。
2. 高可用集群(HA Cluster)
- 提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA) 的容错效果。
- HA的工作方式包括双工和主从两种模式,双工即所有节点同时在线;主从则只有主节点在线,但当出现故障时从节点能自动切换为主节点。例如,“故障切换” 、“双机热备” 等。
- 以提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力。
- 高性能依赖于"分布式运算”、 “并行计算”,通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力。例如,'云计算”、 “网格计算”等。
1. 负载均衡集群架构
- 负载调度器 (负载均衡层)
访问整个群集系统的唯一入口,对外使用所有服务器共有的VIP地址,也称为群集 IP地址。通常会配置主、备两台调度器实现热备份,当主调度器失效以后能够平滑 替换至备用调度器,确保高可用性。
- 服务器池 (WEB应用层)
群集所提供的应用服务、由服务器池承担,其中每个节点具有独立的RIP地址(真 实IP),只处理调度器分发过来的客户机请求。当某个节点暂时失效时,负载调度 器的容错机制会将其隔离,等待错误排除以后再重新纳入服务器池。
- 共享存储 (确保多台服务器使用的是相同的资源)
为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个群集的统一性 共享存储可以使用NAS设备,或者提供NFS共享服务的专用服务器。
(因为节点服务器的资源都是由NAS或NFS提供,所以NAS或NFS需要做主备、或分布式,从而实现高可用。)
2. LVS功能
负载均衡的应用场景为高访问量的业务,提高应用程序的可用性和可靠性。
2.1 应用于高访问量
如果您的应用访问量很高,可以通过配置监听规则将流量分发到不同的云服务器 ECS(Elastic Compute Service 弹性计算服务)实例上。此外,可以使用会话保持功能将同一客户端的请求转发到同一台后端ECS
2.2 扩展应用程序
可以根据业务发展的需要,随时添加和移除ECS实例来扩展应用系统的服务能力,适用于各种Web服务器和App服务器。
2.3 消除单点故障
可以在负载均衡实例下添加多台ECS实例。当其中一部分ECS实例发生故障后,负载均衡会自动屏蔽故障的ECS实例,将请求分发给正常运行的ECS实例,保证应用系统仍能正常工作
2.4 同城容灾
为了提供更加稳定可靠的负载均衡服务,阿里云负载均衡已在各地域部署了多可用区以实现同地域容灾。当主可用区出现机房故障或不可用时,负载均衡仍然有能力在非常短的时间内(如:大约30s中断)切换到另外一个备可用区恢复服务能力;当主可用区恢复时,负载均衡同样会自动切换到主可用区提供服务。使用负载均衡时,您可以将负载均衡实例部署在支持多可用区的地域以实现同城容灾。此外,建议您结合自身的应用需要,综合考虑后端服务器的部署。如果您的每个可用区均至少添加了一台ECS实例,那么此种部署模式下的负载均衡服务的效率是最高的。
3. LVS负载均衡集群的工应用于作模式
负载均衡群集是目前企业用得最多的群集类型。
LVS集群的工作模式:
-
-
lvs-dr:操纵封装新的MAC地址(直接路由)
-
通常使用 NAT和DR,使用最多的是DR模式。
3.1 LVS的NAT模式(地址转换)
lvs-nat:本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某处的RS的RIP和
- Network Address Translation,简称NAT模式
- 类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机 的访问入口,也是各节点回应客户机的访问出口。
- 服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两 种方式。
- 缺点:由于NAT的负载均衡器既作为用户的访问请求入口,也作为节点服务器响应请求的出口,承载两个方向的压力,调度器的性能会成为整个集群的瓶颈。
3.2 TUN模式(隧IP Tunnel ,简称TUN模式。
- 采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器。承载的压力比NAT小。
- 服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信。
- 缺点:成本很高。
- 这种模式一般应用于特殊场景,比如将节点服务器分布在全国各地,防止被物理攻击(如地震、战争等),做灾备。
- Direct Routing,简称DR模式。
- 采用半开放式的网络结构,与TUN模式的结构类似,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器。承载的压力比NAT小。
- 但各节点并不是分散在各地,而是与调度器位于同一个物理网络。
- 负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道。
4. LVS调度算法
RR:轮询,每个服务器分配一次反复轮询。
WRR:加权轮询,根据管理员给每个服务器添加的weight权重分配用户请求任务,默认全部是1。
LC:最小连接数轮询,查看那个服务器处理的请求最少则处理,以此类推。
SH:session或者源地址hash分配,通过用户来源地址hash算法将分配给固定的服务器处理。
DH:模板地址hash,通过用户访问目的地址hash算法将,分配给固定的服务器处理。
WLC:加权最小连接数
5. ipvsadm工具
ipvsadm是LVS负载均衡的真实服务名称。
-A:添加虚拟服务器
-D:删除整个虚拟服务器
-s: 指定负载调度算法(轮询: rr、加权轮询: wrr、最少连接: lc、加权最少连接: wlc)
-a: 添加真实服务器(节点服务器)
-d: 删除某一个节点
-t: 指定VIP地址及TCP端口
-r: 指定RIP地址及TCP端口
-m: 表示使用NAT群集模式
-g: 表示使用DR模式
-i: 表示使用TUN模式
-w: 设置权重(权重为0时表示暂停节点)
-p 60: 表示保持长连接60秒
-l: 列表查看 LVS虚拟服务器(默认为查看所有)
-n: 以数字形式显示地址、端口等信息,常与"-l“选项组合使用。ipvsadm -ln