睿象云智能告警平台的分派策略
1034
2022-10-06
Linux运维工程师必备面试题20道及解析
干货福利,第一时间送达!
1. 磁盘使用率检测(用shell脚本)
root@ecs-c13b ~]# cat fdisk.sh#!/bin/bash# 截取IPIP=`ifconfig eth0 |awk -F " " 'NR==2{print $2}'`# 定义使用率,并转换为数字SPACE=`df -Ph |awk '{print int($5)}'`for i in $SPACEdoif [ $i -ge 90 ]then echo "$IP的磁盘使用率已经超过了90%,请及时处理"fidone
2. LVS 负载均衡有哪些策略?
LVS一共有三种工作模式:DR,Tunnel,NAT
3. 谈谈你对LVS的理解?
LVS是一个虚拟的服务器集群系统,在unix系统下实现负载均衡的功能;采用IP负载均衡技术和机遇内容 请求分发技术来实现。
LVS采用三层结构,分别是:
第一层:负载调度器
第二层:服务池
第三层:共享存储
负载调度器(load balancer/ Director),是整个集群的总代理,它有两个网卡,一个网卡面对访问网 站的客户端,一个网卡面对整个集群的内部。负责将客户端的请求发送到一组服务器上执行,而客户也 认为服务是来自这台主的。举个生动的例子,集群是个公司,负载调度器就是在外接揽生意,将接揽到 的生意分发给后台的真正干活的真正的主机们。当然需要将活按照一定的算法分发下去,让大家都公平的干活。
服务器池(server pool/ Realserver),是一组真正执行客户请求的服务器,可以当做WEB服务器。就 是上面例子中的小员工。
共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相 同的内容,提供相同的服务。一个公司得有一个后台账目吧,这才能协调。不然客户把钱付给了A,而 换B接待客户,因为没有相同的账目。B说客户没付钱,那这样就不是客户体验度的问题了。
4. 负载均衡的原理是什么?
当客户端发起请求时,请求直接发给Director Server(调度器),这时会根据设定的调度算法,将请求 按照算法的规定智能的分发到真正的后台服务器。以达到将压力均摊。
但是我们知道,http的连接时无状态的,假设这样一个场景,我登录某宝买东西,当我看上某款商品 时,我将它加入购物车,但是我刷新了一下页面,这时由于负载均衡的原因,调度器又选了新的一台服 务器为我提供服务,我刚才的购物车内容全都不见了,这样就会有十分差的用户体验。
所以就还需要一个存储共享,这样就保证了用户请求的数据是一样的
5. LVS由哪两部分组成的?
LVS 由2部分程序组成,包括 ipvs 和 ipvsadm。
1.ipvs(ip virtual server):一段代码工作在内核空间,叫ipvs,是真正生效实现调度的代码。
2. ipvsadm:另外一段是工作在用户空间,叫ipvsadm,负责为ipvs内核框架编写规则,定义谁是集 群服务,而谁是后端真实的服务器(Real Server)
6. 与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地址。
7. LVS-NAT模式的原理
(a). 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。此时报文的源IP为CIP,目标IP为VIP
(b). PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
(c). IPVS比对数据包请求的服务是否为集群服务,若是,修改数据包的目标IP地址为后端服务器 IP, 然后将数据包发至POSTROUTING链。此时报文的源IP为CIP,目标IP为RIP
(d). POSTROUTING链通过选路,将数据包发送给Real Server
(e). Real Server比对发现目标为自己的IP,开始构建响应报文发回给Director Server。此时报文 的源IP为RIP,目标IP为CIP
(f). Director Server在响应客户端前,此时会将源IP地址修改为自己的VIP地址,然后响应给客户 端。此时报文的源IP为VIP,目标IP为CIP
8. LVS-NAT模型的特性
RS应该使用私有地址,RS的网关必须指向DIP
DIP和RIP必须在同一个网段内
请求和响应报文都需要经过Director Server,高负载场景中,Director Server易成为性能瓶颈
支持端口映射
RS可以使用任意操作系统 缺陷:对Director Server压力会比较大,请求和响应都需经过director server
9. LVS-DR模式原理
(a) 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。此 时报文的源IP为CIP,目标IP为VIP
(b) PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
(c) IPVS比对数据包请求的服务是否为集群服务,若是,将请求报文中的源MAC地址修改为DIP的 MAC地址,将目标MAC地址修改RIP的MAC地址,然后将数据包发至POSTROUTING链。此时的 源IP和目的IP均未修改,仅修改了源MAC地址为DIP的MAC地址,目标MAC地址为RIP的MAC地址
(d) 由于DS和RS在同一个网络中,所以是通过二层来传输。POSTROUTING链检查目标MAC地址为 RIP的MAC地址,那么此时数据包将会发至Real Server。
(e) RS发现请求报文的MAC地址是自己的MAC地址,就接收此报文。处理完成之后,将响应报文通 过lo接口传送给eth0网卡然后向外发出。此时的源IP地址为VIP,目标IP为CIP
(f) 响应报文最终送达至客户端
10. LVS-DR模型的特性
特点1:保证前端路由将目标地址为VIP报文统统发给Director Server,而不是RS
RS可以使用私有地址;也可以是公网地址,如果使用公网地址,此时可以通过互联网对RIP进行直接访问
RS跟Director Server必须在同一个物理网络中
所有的请求报文经由Director Server,但响应报文必须不能进过Director Server
不支持地址转换,也不支持端口映射
RS可以是大多数常见的操作系统
RS的网关绝不允许指向DIP(因为我们不允许他经过director)
RS上的lo接口配置VIP的IP地址
缺陷:RS和DS必须在同一机房中
11. LVS三种负载均衡模式的比较
三种负载均衡:nat,tunneling,dr
|类目|NAT|TUN|DR|
|--|--|--|--|
操作系统|任意|支持隧道|多数(支持non-arp)
|服务器网络|私有网络|局域网/广域网|局域网
|服务器数目|10-20|100|大于100
|服务器网关|负载均衡器|自己的路由|自己的路由|
效率|一般|高|最高
12. LVS的负载调度算法
轮叫调度加权轮叫调度 最小连接调度 加权最小连接调度基于局部性能的最少连接带复制的基于局部性能最小连接 目标地址散列调度源地址散列调度
13. LVS与nginx的区别
vs的优势(互联网老辛):
抗负载能力强,因为lvs工作方式的逻辑是非常简单的,而且工作在网络的第4层,仅作请求分 发用,没有流量,所以在效率上基本不需要太过考虑。lvs一般很少出现故障,即使出现故障 一般也是其他地方(如内存、CPU等)出现问题导致lvs出现问题。
配置性低,这通常是一大劣势同时也是一大优势,因为没有太多的可配置的选项,所以除了增减 服务器,并不需要经常去触碰它,大大减少了人为出错的几率。
工作稳定,因为其本身抗负载能力很强,所以稳定性高也是顺理成章的事,另外各种lvs都有完整 的双机热备方案,所以一点不用担心均衡器本身会出什么问题,节点出现故障的话,lvs会自动判 别,所以系统整体是非常稳定的。
无流量,lvs仅仅分发请求,而流量并不从它本身出去,所以可以利用它这点来做一些线路分流之 用。没有流量同时也保住了均衡器的IO性能不会受到大流量的影响。
lvs基本上能支持所有应用,因为lvs工作在第4层,所以它可以对几乎所有应用做负载均衡,包括 http、数据库、聊天室等。
nginx与LVS的对比:
nginx工作在网络的第7层,所以它可以针对http应用本身来做分流策略,比如针对域名、目录结构 等,相比之下lvs并不具备这样的功能,所以nginx单凭这点可以利用的场合就远多于lvs了;但 nginx有用的这些功能使其可调整度要高于lvs,所以经常要去触碰,由lvs的第2条优点来看,触碰 多了,人为出现问题的几率也就会大。
nginx对网络的依赖较小,理论上只要ping得通,网页访问正常,nginx就能连得通,nginx同时还 能区分内外网,如果是同时拥有内外网的节点,就相当于单机拥有了备份线路;lvs就比较依赖于网 络环境,目前来看服务器在同一网段内并且lvs使用direct方式分流,效果较能得到保证。另外注 意,lvs需要向托管商至少申请多于一个ip来做visual ip。
nginx安装和配置比较简单,测试起来也很方便,因为它基本能把错误用日志打印出来。lvs的安装 和配置、测试就要花比较长的时间,因为同上所述,lvs对网络依赖性比较大,很多时候不能配置成 功都是因为网络问题而不是配置问题,出了问题要解决也相应的会麻烦的多。
nginx也同样能承受很高负载且稳定,但负载度和稳定度差lvs还有几个等级:nginx处理所有流量 所以受限于机器IO和配置;本身的bug也还是难以避免的;nginx没有现成的双机热备方案,所以 跑在单机上还是风险比较大,单机上的事情全都很难说。
nginx可以检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会 把返回错误的请求重新提交到另一个节点。目前lvs中ldirectd也能支持针对服务器内部的情况来监 控,但lvs的原理使其不能重发请求。比如用户正在上传一个文件,而处理该上传的节点刚好在上传 过程中出现故障,nginx会把上传切到另一台服务器重新处理,而lvs就直接断掉了。
两者配合使用:
nginx用来做http的反向代理,能够upsteam实现http请求的多种方式的均衡转发。由于采用的是异步转 发可以做到如果一个服务器请求失败,立即切换到其他服务器,直到请求成功或者最后一台服务器失败 为止。这可以最大程度的提高系统的请求成功率。
lvs采用的是同步请求转发的策略。这里说一下同步转发和异步转发的区别。同步转发是在lvs服务器接收 到请求之后,立即redirect到一个后端服务器,由客户端直接和后端服务器建立连接。异步转发是nginx 在保持客户端连接的同时,发起一个相同内容的新请求到后端,等后端返回结果后,由nginx返回给客户 端。
进一步来说:当做为负载均衡服务器的nginx和lvs处理相同的请求时,所有的请求和响应流量都会经过 nginx;但是使用lvs时,仅请求流量经过lvs的网络,响应流量由后端服务器的网络返回。
也就是,当作为后端的服务器规模庞大时,nginx的网络带宽就成了一个巨大的瓶颈。
但是仅仅使用lvs作为负载均衡的话,一旦后端接受到请求的服务器出了问题,那么这次请求就失败了。但是如果在lvs的后端在添加一层nginx(多个),每个nginx后端再有几台应用服务器,那么结合两者的 优势,既能避免单nginx的流量集中瓶颈,又能避免单lvs时一锤子买卖的问题。
14. 负载均衡的作用有哪些?
1、转发功能
按照一定的算法【权重、轮询】,将客户端请求转发到不同应用服务器上,减轻单个服务器压力,提高 系统并发量。
2、故障移除
通过心跳检测的方式,判断应用服务器当前是否可以正常工作,如果服务器期宕掉,自动将请求发送到 其他应用服务器。
3、恢复添加
如检测到发生故障的应用服务器恢复工作,自动将其添加到处理用户请求队伍中。
15. nginx实现负载均衡的分发策略
Nginx 的 upstream目前支持的分配算法:
1)、轮询 ——1:1 轮流处理请求(默认)
每个请求按时间顺序逐一分配到不同的应用服务器,如果应用服务器down掉,自动剔除,剩下的继续轮询。
2)、权重 ——you can you up 通过配置权重,指定轮询几率,权重和访问比率成正比,用于应用服务器性能不均的情况。
3)、ip_哈希算法 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个应用服务器,可以解决session共享 的问题。
16. keepalived 是什么?
广义上讲是高可用,狭义上讲是主机的冗余和管理
Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,它根据TCP/IP参考模 型的第三、第四层、第五层交换机制检测每个服务节点的状态,如果某个服务器节点出现异常,或者工 作出现故障,Keepalived将检测到,并将出现的故障的服务器节点从集群系统中剔除,这些工作全部是 自动完成的,不需要人工干涉,需要人工完成的只是修复出现故障的服务节点。
后来Keepalived又加入了VRRP的功能,VRRP(VritrualRouterRedundancyProtocol,虚拟路由冗余协 议)出现的目的是解决静态路由出现的单点故障问题,通过VRRP可以实现网络不间断稳定运行,因此 Keepalvied一方面具有服务器状态检测和故障隔离功能,另外一方面也有HAcluster功能。
所以keepalived的核心功能就是健康检查和失败且换。所谓的健康检查,就是采用tcp三次握手,icmp请求,http请求,udp echo请求等方式对负载均衡器后 面的实际的服务器(通常是承载真实业务的服务器)进行保活;
而失败切换主要是应用于配置了主备模式的负载均衡器,利用VRRP维持主备负载均衡器的心跳,当主负载均衡器出现问题时,由备负载均衡器承载对应的业务,从而在最大限度上减少流量损失,并提供服务的稳定性
17. 你是如何理解VRRP协议的
为什么使用VRRP?
主机之间的通信都是通过配置静态路由或者(默认网关)来完成的,而主机之间的路由器一旦发生故障,通 信就会失效,因此这种通信模式当中,路由器就成了一个单点瓶颈,为了解决这个问题,就引入了VRRP 协议。
VRRP协议是一种容错的主备模式的协议,保证当主机的下一跳路由出现故障时,由另一台路由器来代替 出现故障的路由器进行工作,通过VRRP可以在网络发生故障时透明的进行设备切换而不影响主机之间的 数据通信。
VRRP的三种状态:
VRRP路由器在运行过程中有三种状态:
Initialize状态:系统启动后就进入Initialize,此状态下路由器不对VRRP报文做任何处理;
Master状态;
Backup状态;一般主路由器处于Master状态,备份路由器处于Backup状态。
18. keepalived的工作原理?
keepalived采用是模块化设计,不同模块实现不同的功能。
keepalived主要有三个模块,分别是core、check和vrrp。
core:是keepalived的核心,负责主进程的启动和维护,全局配置文件的加载解析等
check:负责healthchecker(健康检查),包括了各种健康检查方式,以及对应的配置的解析包括LVS的 配置解析;可基于脚本检查对IPVS后端服务器健康状况进行检查
vrrp:VRRPD子进程,VRRPD子进程就是来实现VRRP协议的
Keepalived高可用对之间是通过 VRRP进行通信的, VRRP是通过竞选机制来确定主备的,主的优先级高 于备,因此,工作时主会优先获得所有的资源,备节点处于等待状态,当主宕机的时候,备节点就会接 管主节点的资源,然后顶替主节点对外提供服务
在Keepalived服务对之间,只有作为主的服务器会一直发送 VRRP广播包,告诉备它还活着,此时备不会 抢占主,当主不可用时,即备监听不到主发送的广播包时,就会启动相关服务接管资源,保证业务的连 续性.接管速度最快
19. 出现脑裂的原因
什么是脑裂?
在高可用(HA)系统中,当联系2个节点的“心跳线”断开时,本来为一整体、动作协调的HA系统, 就分裂成为2个独立的个体。
由于相互失去了联系,都以为是对方出了故障。两个节点上的HA软件像“裂脑人”一样,争抢“共享 资源”、争起“应用服务”,就会发生严重后果。共享资源被瓜分、两边“服务”都起不来了;或者两边 “服务”都起来了,但同时读写“共享存储”,导致数据损坏
都有哪些原因导致脑裂?
高可用服务器对之间心跳线链路发生故障,导致无法正常通信。
因心跳线坏了(包括断了,老化)。
因网卡及相关驱动坏了,ip配置及冲突问题(网卡直连)
因心跳线间连接的设备故障(网卡及交换机)
因仲裁的机器出问题(采用仲裁的方案)
高可用服务器上开启了 iptables防火墙阻挡了心跳消息传输。
高可用服务器上心跳网卡地址等信息配置不正确,导致发送心跳失败
其他服务配置不当等原因,如心跳方式不同,心跳广插冲突、软件Bug等。
20. 如何解决keepalived脑裂问题?
在实际生产环境中,我们从以下方面防止脑裂:
同时使用串行电缆和以太网电缆连接、同时使用两条心跳线路,这样一条线路断了,另外一条还是好的,依然能传送心跳消息
当检查脑裂时强行关闭一个心跳节点(这个功能需要特殊设备支持,如stonith、fence)相当于备 节点接收不到心跳消息,通过单独的线路发送关机命令关闭主节点的电源
做好对脑裂的监控报警
解决常见方案:
如果开启防火墙,一定要让心跳消息通过,一般通过允许IP段的形式解决
可以拉一条以太网网线或者串口线作为主被节点心跳线路的冗余
开发检测程序通过监控软件检测脑裂
end
发表评论
暂时没有评论,来抢沙发吧~