LVS

1.LVS简介

Linux Virtual Server (lvs) 是Linux内核自带的负载均衡器,也是目前性能最好的软件负载均衡器之一
作用
LVS是一个虚拟的服务器集群系统。工作在传输层之上,是四层负载均衡(通过报文中的目标地址和端口),支持TCP/UDP的负载均衡,可以实现高性能,是一种高可用的服务器集群技术
优点

  • 高并发连接:

LVS基于内核网络层面工作,有超强的承载能力和并发处理能力。单台LVS负载服务器,可支持上万的并发连接。

  • 抗负载能力强

是工作在传输层上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的,对内存和 cpu 资源消耗比较低。

  • 廉价

可以将许多低性能的服务器组合在一起形成一个超级服务器

  • 易用

配置非常简单,且有多种负载均衡的方法。

  • 稳定可靠

即使在集群的服务器中某台服务器无法正常工作,也不影响整体效果。自身还有完整的双机热备方案,另外可扩展性也非常好。

  • 无流量

LVS 仅仅分发请求,而流量并不从它本身出去,所以可以利用它这点来做一些线路分流之用。没有流量同时也保住了均衡器的 IO 性能不会受到大流量的影响

  • 应用范围广

因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、DNS、ftp服务等等

  • 缺点

本身不支持正则表达式处理,不能做动静 分离

2. lvs集群中的核心组件和专业术语

  • 2.1 核心组件

LVS的管理工具和内核模块是 ipvsadm/ipvs
ipvsadm:用户空间的命令行工具,用于管理集群服务及集群服务上的RS等。
ipvs:工作在内核上的netfilter INPUT钩子之上 的程序,可根据用户定义的集群实现请求转发

  • 2.2 专业术语

VS:vs(virtual server)、Director Server(DS)、调度器、Load Balancer
RS:Real Server(lvs),upstream server(nginx)\backend server(haproxy)
CIP:Client IP
VIP : Virtual serve IP VS外网的IP(负载均衡器虚拟IP)
DIP : Director IP VS内网的IP
RIP : Real server IP
访问流程:CIP <–> VIP == DIP <–>RIP

3. LVS基础原理

LVS 是基于 netfilter 框架,主要工作于 INPUT 链上,在 INPUT 上注册ip_vs_in HOOK 函数,进行 IPVS 主流程,大概原理如图所示
在这里插入图片描述

举例

  • 1.当用户访问 www…com.cn 时,用户数据通过层层网络,最后通过交换机进入 LVS 服务器网卡,并进入内核网络层。
  • 2.进入 PREROUTING 后经过路由查找,确定访问的目的 VIP 是本机 IP 地址,所以数据包进入到 INPUT 链上
  • 3.LVS 是工作在 INPUT 链上,会根据访问的 IP:Port 判断请求是否是 LVS 服务,如果是则进行 LVS 主流程,强行修改数据包的相关数据,并将数据包发往 POSTROUTING 链上。
  • 4.POSTROUTING 上收到数据包后,根据目标 IP 地址(后端真实服务器),通过路由选路,将数据包最终发往后端的服务器上。
    LVS工作原理
  • LVS的IP负载均衡技术是通过 IPVS模块来实现的 IPVS是LVS集群系统的核心软件,它安装在 Director
    server上,同时在 director server
    上虚拟出一个IP地址,用户必须通过这个虚拟的IP地址访问服务器。(这个虚拟的IP一般称为LVS的VIP,即Virtual IP)
  • 访问的请求首先经过VIP到达负载调度器,然后由负载调度器通过调度算法选取一个real server来处理响应用户的请求。
    简单概括:用户对虚拟IP的请求,会先到Director
    Server上,然后调度器会把用户的请求根据相应的调度算法发给后端某一个real服务器,由它进行处理和响应。从而对用户的请求达到负载均衡的效果。

4.lVS组成

在这里插入图片描述

  • 1.Load Balancer:

LVS的核心部分,该层由一台或者几台Director Server组成。类似网站MVC模型的Controller。负责将客户端请求按照一定的算法分发到下一层不同的服务器进行处理,自己本身不做具体业务的处理。
同时还可以监控下一层的状态,如果下一层的某台服务器不能正常工作了,它会自动把其剔除,恢复后又可用加上。

  • 2.Server Array:

该层负责具体业务。可有WEB Server、mail Server、FTP Server、DNS Server等组成。注意,其实上层的Director Server也可以当Real server用的。

  • 3.Shared Storage:

主要是提高上一层数据和为上一层保持数据一致。

5.三种工作模式

1.lVS/NAT(网络地址转换技术实现虚拟服务器)在这里插入图片描述

原理
是通过数据报头的修改,修改数据包的源和目的IP地址。
具体:
Director将请求数据包的目的地址(虚拟IP)和端口号改为Real Server的端口,然后把报文发给Real Server。Real Server处理完数据后,需要把报文返回给Diretor Server,然后Diretor server将数据包中的源地址和源端口改成VIP的地址和端口,最后把数据发送出去。
优点
节点服务器使用私有IP地址,与负载调度器位于同一个物理网络,安全性比DR模式和TUN模式要高。
缺点
扩展性有限,用户的请求和响应都要经过Diretor Server,如果数据过多,Diretor Server(负载均衡器)会成为整个系统的瓶颈。
要点:

  • 支持端口映射
  • RIP和DIP应在同一个IP网络,且应使用私网地址;Director Server必须作为Real Server的网关
  • VS必须是Linux系统,RS可以是任意OS系统
2.VS/TUN(IP隧道模式)在这里插入图片描述

原理
请求与响应数据分离,调度器仅处理数据请求,响应数据直接由Real server返回给客户端,不需要经过Diretor server,
IP隧道(IP tunning)是一种数据包封装技术,它可以将原始数据包封装并添加新的包头,从而将一个目标为调度器的VIP地址的数据包封装,并在其基础上添加目的地址为真实服务器的新的数据包头
在原有的IP报文外再次封装多一层IP首部,内部IP首部(源地址为CIP,目标IIP为VIP),外层IP首部(源地址为DIP,目标IP为RIP)
优点

  • 单臂模式,LVS负载压力小
  • 数据包修改小,信息完整性高
  • 可跨机房(适用于对转发要求较高且具有跨机房需求的场景)

缺点

  • 不支持端口映射
  • 需要在LVS调度器与真实服务器之间创建隧道连接,还是会增加服务器的负担。

要求

  • LVS(TUN)模式要求真实服务器可以直接与外部网络连接
  • Real Server需要在lo上配置vip,但不需要Director Server作为网关
    不支持端口映射
3.VS/DR(直接路由模式)

在这里插入图片描述
在这里插入图片描述

原理:

  • 客户端直接和real server进行数据的请求和应答。
  • 改写请求报文的MAC地址(源MAC是DIP所在的接口的MAC,目标MAC是它挑选出的RS的RIP所在接口的MAC地址;),将请求发送到Real
    Server,而Real Server将响应直接返回给客户,

优点

  • 响应数据不经过LVS,压力最小,性能最优,应用最广泛
  • 对数据包修改小,信息完整性好

缺点

  • 要求调度器LB与后端服务器RS必须在同一个局域网内(因为DR模式是通过MAC地址改写机制实现转发)
  • RS上绑定VIP(LVS外网IP,虚拟IP),风险大。

要点

  • 需要在Real
    Server的lo上配置vip,并配置arp_ignore和arp_announce忽略对vip的ARP解析请求(最终的真实服务器给客户端回应数据包时需要设置源IP为VIP地址,目标IP为客户端IP。这样客户端感觉不到后端服务器的存在)
  • Director Server和Real Server必须在同一个物理网络内,二层可达
  • RS和调度器都要配置VIP,且为相同,VIP配置在DR上的时候,应该是在eth0:0上,在RS上配置VIP的时候,就必须是lo:0了,否则达不到让RS不响应VIP的ARP通告的效果。
  • 请求报文都要经由Director,但响应不能经由Director,而是由RS通过网关直接发往Client;

6.十种LVS调度算法

静态方法
  • 轮询调度(Round-Robin Scheduling)
  • 加权轮询调度
  • 目标地址散列调度(Destination Hashing Scheduling)
  • 源地址散列调度(Source Hashing Scheduling)
动态方法
  • 最小连接调度(Least-Connection Scheduling)
    适用于长连接应用

  • 加权最小连接调度(Weighted Least-Connection Scheduling)
    默认调度算法

  • 基于局部性的最少链接(Locality-Based Least Connections Scheduling)

  • 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling)

  • 最短的期望延迟(SED)

  • 最少队列调度

7.三种模式的区别

  • 1.是否需要lvs VIP跟realserver在同一个网段

DR 模式因为只修改 package的 MAC地址通过ARP广播的形势找到realserver,所以 要求LVS 的VIP 和realserver的IP 必须在同一个网段内

  • 2.是否需要在realserver 绑定LVS vip 的IP 地址:

  • realserver 收到package后会判断dst ip 是否是自己的ip,如果不是就直接丢掉包;因为DR模式dst没有修改还是LVS的VIP;所以需要在realserver上面绑定VIP;IP TUNNEL 模式只是对package 重新包装一层,realserver解析后的IP包的DST 仍然是 LVS的VIP ;也需要在realserver上面绑定VIP;其他的都不需要

- 3.四种模式的性能比较:

模式的性能如下:DR --> IP TUNNEL —>NAT ----->FULL NAT

7.KeepAlived

介绍
keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。以VRRp协议为实现基础的
作用
检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉
keepalived主要有三个模块

  • core 模块为keepalived 的核心,负责主进程的启动
  • check 负责健康检查,包括常见的各种检查方式
  • vrrp 模块是来实现VRRP协议的

工作原理(Layer3,4,5工作在IP/TCP协议栈的IP层,TCP层,及应用层)

  • Layer3:Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包(既我们平时用的Ping程序),没有响应的话,Keepalived便报告这台服务器失效,并将它从服务器群中剔除
  • Layer4:主要以TCP端口的状态来决定服务器工作正常与否。如果Keepalived检测到80端口没有启动,就把它剔除

常见问题
脑裂(主备keepalived服务器同时出现了VIP;导致vip无法正常使用)
常见原因:防火墙配置所致导致多播心跳失败

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值