我保证看完这篇文章,面试时问到相关问题轻轻松松解决,本文末尾会结合全文教你该如何回答面试官的问题

1.什么是LVS?

LVS 是 Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的四层路由交换器集群系统,根据目标地址和目标端口实现用户请求转发。它是我们国家的章文嵩博士的一个开源项目。在linux内存2.6中,它已经成为内核的一部分,在此之前的内核版本则需要重新编译内核。

LVS主要用于多服务器的负载均衡。它工作在网络层,可以实现高性能,高可用的服务器集群技术。它廉价,可把许多低性能的服务器组合在一起形成一个超级服务器。它易用,配置非常简单,且有多种负载均衡的方法。它稳定可靠,即使在集群的服务器中某台服务器无法正常工作,也不影响整体效果。另外可扩展性也非常好。

几个专业名词介绍

DS Director Server,也可以称为调度器,LVS前端设备;
RS realserver,也称为真实内部服务器,是真正在提供服务的;
VIP 对外公布的IP,即客户请求进来的IP地址;
DIP 调度器和realserver之间通信的地址
RIP Real Server IP,后端服务器的IP地址。
CIP Client IP,访问客户端的IP地址。

2.LVS 集群结构

如上图,LVS集群三层结构

A、负载调度器(load balancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。

B、服务器池(server pool),是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等。

C、共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务

3. LVS负载均衡机制(画重点)

前面我们说了LVS是工作在网络层。相对于其它负载均衡的解决办法,比如DNS域名轮流解析、应用层负载的调度、客户端的调度等,它的效率是非常高的。

LVS的通过控制IP来实现负载均衡。 IPVS是其具体的实现模块。IPVS的主要作用:安装在Director Server上面,在Director Server虚拟一个对外访问的IP(VIP)。用户访问VIP,到达Director Server,Director Server根据一定的规则选择一个Real Server,处理完成后然后返回给客户端数据。这些步骤产生了一些具体的问题,比如如何选择具体的Real Server,Real Server如果返回给客户端数据等等。

IPVS为此有三种机制:

1)VS/NAT (Virtual Server via Network Address Translation)

即网络地址翻转技术实现虚拟服务器。当请求来到时,Diretor server上处理的程序将数据报文中的目标地址(即虚拟IP地址)改成具体的某台Real Server,端口也改成Real Server的端口,然后把报文发给Real Server。Real Server处理完数据后,需要返回给Diretor Server,然后Diretor server将数据包中的源地址和源端口改成VIP的地址和端口,最后把数据发送出去。由此可以看出,用户的请求和返回都要经过Diretor Server,如果数据过多,Diretor Server肯定会不堪重负。

数据传输过程

2)VS/TUN(Virtual Server via IP Tunneling)

即IP隧道技术实现虚拟服务器。它跟VS/NAT基本一样,但是Real server是直接返回数据给客户端,不需要经过Diretor server,这大大降低了Diretor server的压力。


数据传输过程


3)VS/DR(Virtual Server via Direct Routing)

即用直接路由技术实现虚拟服务器。跟前面两种方式,它的报文转发方法有所不同,VS/DR通过改写请求报文的MAC地址,将请求发送到Real Server,而Real Server将响应直接返回给客户,免去了VS/TUN中的IP隧道开销。这种方式是三种负载调度机制中性能最高最好的,但是必须要求Director Server与Real Server都有一块网卡连在同一物理网段上。五.负载调度算法前面我们都知道Director Server要选择不同的Real server,那么它具体的如果选择Real Server以达到负载均衡的呢,IPVS实现了八种调度方法,具体算法可以查看官网或者百度,这里就不一一列出了。


数据传输过程

4.LVS 与防火墙的关系

1)lvs附着于netfiler表

五个内置的钩子函数

PREROUTING ---> INPUT(流向内部)
PREROUTING----> FORWARD ---> POSTROUTING(转发)
OUTPUT---> POSTROUTING(流向外部)
  1. 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间
  2. PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链
  3. IPVS是工作在INPUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和自己已定义好的集群服务进行比对,如果用户请求的就是定义的集群服务,那么此时IPVS会强行修改数据包里的目标IP地址及端口,并将新的数据包发往POSTROUTING链
  4. POSTROUTING链接收数据包后发现目标IP地址刚好是自己的后端服务器,那么此时通过选路,将数据包最终发送给后端的服务器

强调:lvs工作于INPUT

PREROUTING ---> INPUT(lvs在此强行改变数据流向)--->POSTROUTING

2)lvs是由两部份组成的

ipvs(ip virrual server):一段代码(工作在内核)是真正生效实现调度的代码
ipvsadm(工作在用户空间,负责为ipvs内核框架编写规则)

ipvsadm(工作在用户空间的命令行工具 写具体的规则 用于管理集群服务)/ipvs(工作在内核中的netfilter input钩子函数上)


5.LVS调度算法

(在下一篇博客中具体配置时会用到相关参数,这里先列举出来)

相关参数或调度算法 详解
-s 指定服务采用的算法,常用的算法参数如下
rr 轮叫(Round Robin) 调度器通过”轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务 器,而不管服务器上实际的连接数和系统负载。
wrr 加权轮叫(Weighted Round Robin) 调度器通过”加权轮叫”调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
lc 最少链接(Least Connections) 调度器通过”最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用”最小连接”调度算法可以较好地均衡负载。
wlc 加权最少链接(Weighted Least Connections) 在集群系统中的服务器性能差异较大的情况下,调度器采用”加权最少链接”调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
lblc 基于局部性的最少链接(Locality-Based Least Connections) “基于局部性的最少链接”调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用”最少链接” 的原则选出一个可用的服务器,将请求发送到该服务器。
lblcr 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication) ”带复制的基于局部性最少链接”调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不同之处是它要维护从一个目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按”最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器,若服务器超载;则按”最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。
dh 目标地址散列(Destination Hashing) “目标地址散列”调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。
sh 源地址散列(Source Hashing) “源地址散列”调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

6.LVS 高可用相关

1)keepalived是什么?

keepalived是集群管理中保证集群高可用的一个服务软件(防止单点故障)

它能够保证当个别节点宕机时,整个网络可以不间断地运行,所以,Keepalived 一方面具有配置管理LVS的功能,同时还具有对LVS下面节点进行健康检查的功能,另一方面也可实现系统网络服务的高可用功能

2)keepalived工作原理

keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了

3)Keepalived高可用故障切换转移原理

Keepalived高可用服务对之间的故障切换转移,是通过 VRRP (Virtual Router Redundancy Protocol ,虚拟路由器冗余协议)来实现的。

在 Keepalived服务正常工作时,主 Master节点会不断地向备节点发送(多播的方式)心跳消息,用以告诉备Backup节点自己还活看,当主 Master节点发生故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主 Master节点的心跳了,于是调用自身的接管程序,接管主Master节点的 IP资源及服务。而当主 Master节点恢复时,备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色。
  
  那么,什么是VRRP呢?
  VRRP ,全 称 Virtual Router Redundancy Protocol ,中文名为虚拟路由冗余协议 ,VRRP的出现就是为了解决静态踣甶的单点故障问题,VRRP是通过一种竞选机制来将路由的任务交给某台VRRP路由器的

4)面试中的文字表述(画重点)

问:Keepalived的工作原理是什么?

答:
  Keepalived高可用对之间是通过VRRP通信的,因此,我们从 VRRP开始了解起:
    1) VRRP,全称 Virtual Router Redundancy Protocol,中文名为虚拟路由冗余协议,VRRP的出现是为了解决静态路由的单点故障。
    2) VRRP是通过一种竟选协议机制来将路由任务交给某台 VRRP路由器的。
    3) VRRP用 IP多播的方式(默认多播地址(224.0_0.18))实现高可用对之间通信。
    4) 工作时主节点发包,备节点接包,当备节点接收不到主节点发的数据包的时候,就启动接管程序接管主节点的开源。备节点可以有多个,通过优先级竞选,但一般 Keepalived系统运维工作中都是一对。
    5) VRRP使用了加密协议加密数据,但Keepalived官方目前还是推荐用明文的方式配置认证类型和密码。

介绍完 VRRP,接下来我再介绍一下 Keepalived服务的工作原理:
  Keepalived高可用对之间是通过 VRRP进行通信的, VRRP是遑过竞选机制来确定主备的,主的优先级高于备,因此,工作时主会优先获得所有的资源,备节点处于等待状态,当主挂了的时候,备节点就会接管主节点的资源,然后顶替主节点对外提供服务。
  在 Keepalived服务对之间,只有作为主的服务器会一直发送 VRRP广播包,告诉备它还活着,此时备不会枪占主,当主不可用时,即备监听不到主发送的广播包时,就会启动相关服务接管资源,保证业务的连续性.接管速度最快可以小于1秒。

运维企业专题(4)LVS高可用与负载均衡前篇——先学原理,再学配置相关推荐

  1. 运维企业专题(8)LVS高可用与负载均衡后篇——LVS健康检查与高可用详解

    实验准备 1.下面的实验使用的是rhel6系列(rhel6.5)的虚拟机,因此你需要有对应的镜像和yum源 2.准备三台虚拟机,为了区分主机名与IP分别为 server1 172.25.6.1 ser ...

  2. 运维企业专题——LVS高可用与负载均衡之原理篇

    我保证看完这篇文章,面试时问到相关问题轻轻松松解决,本文末尾会结合全文教你该如何回答面试官的问题 1.什么是LVS? LVS 是 Linux Virtual Server的简写,意即Linux虚拟服务 ...

  3. 运维企业专题(5)LVS高可用与负载均衡中篇——VS/DR模式配置详解

    实验准备 1.下面的实验使用的是rhel6系列(rhel6.5)的虚拟机,因此你需要有对应的镜像和yum源 2.准备三台虚拟机,为了区分主机名与IP分别为 server1 172.25.6.1 ser ...

  4. keepalived实现lvs高可用并负载均衡lamp

    一.安装lamp 1.安装httpd(172.16.23.211) [root@cs1 ~]# yum install -y httpd 2.安装php(172.16.23.211) [root@cs ...

  5. 运维企业专题(7)LVS高可用与负载均衡中篇——VS/NAT模式配置详解

    VS/NAT 在一组服务器前有一个调度器,它们是通过 Switch/HUB 相连接的.这些服务器提供相同的网络服 务.相同的内容,即不管请求被发送到哪一台服务器,执 行结果是一样的.服务的内容可以复制 ...

  6. 运维企业专题(6)LVS高可用与负载均衡中篇——VS/TUN模式配置详解

    VS/TUN隧道模式(原理就是将传输报头加一个IP进行封装),DR和NAT模式都不能跨网络,IP隧道可以,但是弊端是:IP报文进行传递时不能跨过MTU传输单元 实验准备 1.下面的实验使用的是rhel ...

  7. LVS+keepalived 实现高可用与负载均衡实施方案

    LVS+keepalived 实现高可用与负载均衡实施方案 <Alvin-zeng:孤独0-1> 目录 一.安装LVS1 1.1.环境IP描述:1 1.2.所需软件2 1.3.安装步骤主备 ...

  8. keepalived+lvs实现高可用的负载均衡

    ############################################### keepalived keepalived+lvs实现高可用的负载均衡 测试 ############# ...

  9. 闲谈高可用与负载均衡

    闲谈高可用和负载均衡 高可用集群和负载均衡集群想必大家或多或少都听说过,但是很多人往往把这两个搞混在一起,不加区分地使用这两个概念.虽然说很多负载均衡的设备有着高可用的特性,或者高可用的机器使用着负载 ...

最新文章

  1. 从文本中提取知识图谱代码比较好的,代码对齐,可以使用的
  2. 理解卷积神经网络?看这篇论文就够了
  3. matlab错误103 577,小编为你作答win7系统安装MATLAB出现 license manager error 103错误的还原教程...
  4. 洛谷P2412 查单词 [trie树 RMQ]
  5. 遍历List 删除某条数据
  6. 【ThinkPHP系列篇】Thinkphp框架的CURD操作(三)
  7. C语言万年历 年历月历日历都要,c语言万年历
  8. Webpack/Vue-cli两种方式加载markdown文件并实现代码高亮
  9. 面试官:怎么改进哈希算法实现负载均衡的扩展性和容错性?我:...
  10. 安卓逆向系列教程 4.4 逆向云播 VIP
  11. ajax返回值并在layui显示,layUI使用layer.open,在content打开数据表格,获取值并返回的方法...
  12. Repo Jacking:依赖关系仓库劫持漏洞,影响谷歌GitHub等7万多个开源项目的供应链...
  13. CSS3动画的基本使用(CSS3)
  14. 开启smb协议_SMB协议(使用说明+过程详解+抓包分析)
  15. SFP光模块接口说明
  16. ahu-557容斥原理
  17. 【PHP面试题】请简述项目中优化SQL语句执行效率的方法,从哪些方面,SQL语句如何分析?
  18. SAP中寄售信息记录税码维护缺失的清单输出实例
  19. BZOJ 2716/CH 4701 天使玩偶
  20. CentOS下查看电脑硬件设备属性命令

热门文章

  1. R语言ggplot2可视化:ggplot2中使用element_text函数设置轴标签文本粗体字体(bold text,只设置y轴的标签文本使用粗体字体)
  2. seaborn可视化displot绘制直方图(histogram)并通过axvline函数在直方图中添加均值(mean)竖线(自定义均值竖线色彩)
  3. R语言distRhumb函数计算距离实战(两个地理点之间的Rhumb距离)
  4. python使用imbalanced-learn的SMOTETomek方法同时进行上采样和下采样处理数据不平衡问题
  5. fsl线性配准实践+核磁共振影像数据处理
  6. pyinstaller打包之后运行出现:Could not find the matplotlib data files
  7. 生信人的linux考试
  8. android canvas绘制圆角_Android自定义View撸一个渐变的温度指示器(TmepView)
  9. javascript 遍历对象
  10. 七、使用栈实现综合计算器(中缀表达式)