小白成长之路-LVS
文章目录
- 1、集群概述
- 1.1、集群介绍
- 1.2、集群类型
- 1.3、负载均衡技术类型
- 1.4、负载均衡实现方式
- 2、LVS介绍
- 3、LVS和nginx区别
- 4、LVS相关术语
- 5、LVS负载均衡算法
- 5.1、静态负载均衡
- 5.2、动态负载均衡
- 二、基于nat的负载均衡
- 三、lvs负载均衡基于DR的配置
- 总结
1、集群概述
1.1、集群介绍
集群是一组相互独立的、通过高速计算机网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。
计算机集群简称集群是一种计算机系统, 它通过一组松散集成的计算机软件/硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。集群计算机通常用来改进单个计算机的计算速度和/或可靠性。一般情况下集群计算机比单个计算机,比如工作站或超级计算机性能价格比要高得多。
计算机集群Cluster,可以把多台计算机 连接在一起使用,平分资源或互为保障。其好处不言而喻,群集中的每个计算机被称为一个节点,节点可添加可减少,在这些节点之上虚拟出一台计算机供用户使用;从使用用户的角度看始终是使用一台计算机,无所谓多少节点。
特点:
1.高性能
一些国家重要的计算密集型应用(如天气预报,核试验模拟等),需要计算机有很强的运算处理能力
2.高性价比
通常一套系统集群架构,只需要几台或数十台服务器主机即可,与动则上百万的专用超级计算机相比具有更高的性价比
3.可扩展性
集群的性能不限于单一的服务实体,新的服务实体可以动态的加入到集群,从而增强集群的性能
4.高可用性
当一台节点服务器发生故障的时候,这台服务器上所运行的应用程序将在另一节点服务器上被自动接管。整个系统的服务可以是7*24小时可用的,消除单点故障对于增强数据可用性、可达性和可靠性是非常重要的
5.负载均衡
负载均衡能把任务比较均匀的分布到集群环境下的计算和网络资源,以便提高数据吞吐量
6.错误恢复
如果集群中的某一台服务器由于故障或者维护需要而无法使用,资源和应用程序将转移到可用的集群节点上
7.透明性
多个独立计算机组成的松耦合集群系统构成一个虚拟服务器。用户或客户端程序访问集群系统时,就像访问一台高性能,高可用的服务器一样,集群中一部分服务器的上线,下线不会中断整个系统服务,这对用户也是透明的
8.可管理性
整个系统可能在物理上很大,但是集群系统易管理,就像管理一个单一映像系统一样。在理想状况下,软硬件模块的插入能做到即插即用
9.可编程性
在集群系统上,容易开发及修改各类应用程序
1.2、集群类型
- 负载均衡集群(Load Balance Cluster)
负载均衡系统:集群中所有的节点都处于活动状态,它们分摊系统的工作负载。一般Web服务器集群、数据库集群和应用服务器集群都属于这种类型。
负载均衡集群一般用于相应网络请求的网页服务器,数据库服务器。这种集群可以在接到请求时,检查接受请求较少,不繁忙的服务器,并把请求转到这些服务器上。从检查其他服务器状态这一点上看,负载均衡和容错集群很接近,不同之处是数量上更多。
Load Balancing负载均衡,不同节点之间相互独立,不共享任何资源;通过一定算法将客户端的访问请求平分到群集的各个节点上,充分利用每个节点的资源。负载均衡扩展了网络设备和服务器带宽,增加吞吐量,加强网络数据处理能。
每个节点的性能和配置可能不同,根据算法,可以分配不同的权重到不同节点上,以实现不同节点的资源利用。如下图所示网络访问通过负载均衡器,将请求分布到不同节点上。
- 高可用集群(High Availability Cluster)
常见的就是2个节点做成的HA集群,有很多通俗的不科学的名称,比如”双机热备”, “双机互备”, “双机”。
高可用集群解决的是保障用户的应用程序持续对外提供服务的能力。 (请注意高可用集群既不是用来保护业务数据的,保护的是用户的业务程序对外不间断提供服务,把因软件/硬件/人为造成的故障对业务的影响降低到最小程度)。
High availability Cluster高可用群集,简称HAC ;主要用于高可用解决方案的实现,节点间以主备形式,实现容灾;在大型故障(宕机,服务器故障)的情况下实现快速恢复,快速提供服务。如下图所示:当前节点在Node01,所有业务在Node01上运行,若发生故障服务和资源会转移到Node02上。高可用集群的另外一个特点是共享资源,多个节点服务器共享一个存储资源,该存储可在不同节点之间转移。
高可用群集可实现以下三种方式:
- 主从方式:主机工作,备机监控。此方式不能有效的利用服务器资源
- 互为主从:两服务器同时在线,一台服务器故障可切换到另一台上。此 方式有效的利用服务器资源,但当服务器故障时候,将导致一台服务器上运行多个业务。
- 多台服务器主从:大部分服务器在线使用,小部分监控;若有部分服务器故障,可切换到指定的小部分服务器上。此方式为前两种方式的综合。然后多台服务器群集,也增加了管理的复杂度
- 科学计算集群(High Performance Computing Cluster)
高性能计算(High Perfermance Computing)集群,简称HPC集群。这类集群致力于提供单个计算机所不能提供的强大的计算能力。
并行计算或称平行计算是相对于串行计算来说的。并行计算的能力的目的是提高计算速度。
并行计算分为时间计算和空间计算:
- 时间计算既是流水线技术,一个处理器分为多个单元,每个单元负责不同任务,这些单元可并行计算。
- 空间计算利用多个处理器并发的执行计算。目前PC机的计算能力越来越强,将大量低廉的PC机互联起来,组成一个"大型计算机"以解决复杂的计算任务。Beowulf computers为最典型的空间并行计算。
高性能计算集群采用将计算任务分配到集群的不同计算节点儿提高计算能力,因而主要应用在科学计算领域。比较流行的HPC采用Linux操作系统和其它一些免费软件来完成并行运算。这一集群配置通常被称为Beowulf集群。这类集群通常运行特定的程序以发挥HPCcluster的并行能力。这类程序一般应用特定的运行库, 比如专为科学计算设计的MPI库。
HPC集群特别适合于在计算中各计算节点之间发生大量数据通讯的计算作业,比如一个节点的中间结果会影响到其它节点计算结果的情况。
1.3、负载均衡技术类型
四层负载均衡器: 也称为 4 层交换机,主要通过分析 IP 层及 TCP/UDP 层的流量实现基于 IP 加端口的负载均衡,如常见的 LVS、F5 等;
七层负载均衡器 :也称为 7 层交换机,位于 OSI 的最高层,即应用层,此负载均衡器支持多种协议,如HTTP、FTP、SMTP 等。7 层负载均衡器可根据报文内容,配合一定的负载均衡算法来选择后端服务器,即“内容交换器”。如常见的 HAProxy、Nginx。
1.4、负载均衡实现方式
硬件负载均衡产品:F5 、深信服 、Radware
软件负载均衡产品: LVS(Linux Virtual Server)、 Haproxy、Nginx、Ats(apache traffic server)
2、LVS介绍
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。在linux内存2.6中,它已经成为内核的一部分,在此之前的内核版本则需要重新编译内核。
为什么要用 LVS?
为了克服服务器的过载压力问题,有两种解决方案:
- 单服务器解决方案,即将服务器升级到性能更高的服务器,但是当请求增加时,将很快过载,因此必须再次对其进行升级,升级过程复杂且成本高;
- 多服务器解决方案,即在服务器集群上构建可扩展的网络服务系统。当负载增加时,可以简单地在群集中添加新服务器或更多服务器以满足不断增长的需求,而商用服务器具有最高的性能/成本比。因此,构建用于网络服务的服务器群集系统更具可伸缩性,并且更具成本效益。
3、LVS和nginx区别
- LVS比nginx具有更强的抗负载能力,性能更高,对内存和cpu资源消耗低。
- LVS工作在网络层,具体流量由操作系统内核进行处理,nginx工作在应用层,可针对http应用实施一些分流策略。
- LVS安装配置比较复杂点,网络依赖性较大,稳定性高,lvs不支持正则表达式,不能实现动静分离操作。
- LVS使用的协议范围广, Nginx 仅支持 HTTP、HTTPS、Email 协议,适用范围小。
4、LVS相关术语
-
DS:Director Server。指的是前端负载均衡器节点。
-
RS:Real Server。后端真实的工作服务器。
-
VIP:Virtual IP 向外部直接面向用户请求,作为用户请求的目标的IP地址。
-
DIP:Director Server IP,主要用于和内部主机通讯的IP地址。
-
RIP:Real Server IP,后端服务器的IP地址。
-
CIP:Client IP,访问客户端的IP地址。
5、LVS负载均衡算法
5.1、静态负载均衡
- rr(round robin,轮询 )
轮询是最简单的负载均衡方法,按照预定的顺序,轮流将请求分配给后端服务器。
- wrr(weight round robin,加权轮询)
类似于轮询,但是每个后端服务器可以设置一个权重,表示其处理能力。权重高的服务器将接收更多的请求。
- sh(source hashing,源地址散列算法(HASH))
根据请求的源IP地址,通过散列函数计算出一个槽位,将请求分发到对应的服务器。
- dh(destination hashing,目标地址 HASH)
与源地址散列算法相反,是根据请求的目标IP地址来进行散列分发的。
5.2、动态负载均衡
- lc(leash-connection,最少连接 )
简单算法:active * 256 + inactive (谁的小选谁)
哪个服务器当前的活跃连接数最少,就将新的请求分配给它。
- wlc(加权最少连接)
简单算法:(active * 256 + inactive) / weight(谁的小选谁)
谁的结果最小,就分配给谁。
- sed(最少期望延迟)
简单算法:(active + 1) * 256 / weight (谁的小选谁)
- nq(never queue,永不排队)
当没有服务器处于过载状态时,请求直接发送到空闲服务器。一旦服务器达到其容量限制,新的请求将被拒绝。
- LBLC(基于局部性的最少连接 )
不仅考虑全局的服务器负载,还考虑服务器所在局部的负载情况,从而实现更细致的负载均衡。
- LBLCR(基于局部性的带复制功能的最少连接)
在LBLC的基础上,当某个服务器过载时,可以选择复制流量到其他服务器,以平衡负载。
二、基于nat的负载均衡
提示:之前使用过cen7,roucky8,roucky9,今天开始使用open
1.准备工作:
使用三台虚拟机,一台server,两台web1,web2
手动配置静态ip(三台机子都需要手动配置,只有server开启路由功能)
进入 /etc/sysconfig/network-scripts/ens160
重新启动网卡
服务器端打开路由功能
进入/etc/sysctl.conf
服务器端添加一块新的网卡
web1:
、etc/sysconfig/network-manager/ens160
验证可以ping 通
web2:
验证:
2.访问web1和web2
web1:
echo web1 > /usr/share/nginx/html/index.html
web2:
echo web2 > /usr/share/nginx/html/index.html
3.添加服务器
添加虚拟服务器
添加真实服务器
4.验证负载均衡
三、lvs负载均衡基于DR的配置
1.负载调度器配置
移除主机的nat网卡
在/etc/sysctl.conf加入net.ipv4.conf.ens160.send_redirects = 0
2.配置虚拟ip地址
3.添加服务器
ipvsadm -A -t 192.168.100.101:80 -s rr
保存配置:
touch /etc/sysconfig/ipvsadm
ipvsadm-save >/etc/sysconfig/ipvsadm
4.web节点配置
web1和web2都需要配置
**调整ARP参数
**作用:防止VIP在同一网络产生IP地址冲突
/etc/sysctl.conf
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.default.arp_ignore=1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce=2
5.web端配置虚拟ip地址
6.添加回环路由
route add -host 192.168.144.101/32 dev lo:0
7.测试
总结
以上就是LVS相关介绍了,还有一种TUN模式的负载均衡,其他小伙伴们也可以试试哦