为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!
这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。
本份面试集锦涵盖了
- 174 道运维工程师面试题
- 128道k8s面试题
- 108道shell脚本面试题
- 200道Linux面试题
- 51道docker面试题
- 35道Jenkis面试题
- 78道MongoDB面试题
- 17道ansible面试题
- 60道dubbo面试题
- 53道kafka面试
- 18道mysql面试题
- 40道nginx面试题
- 77道redis面试题
- 28道zookeeper
总计 1000+ 道面试题, 内容 又全含金量又高
- 174道运维工程师面试题
1、什么是运维?
2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?
3、现在给你三百台服务器,你怎么对他们进行管理?
4、简述raid0 raid1raid5二种工作模式的工作原理及特点
5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?
6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?
7、Tomcat和Resin有什么区别,工作中你怎么选择?
8、什么是中间件?什么是jdk?
9、讲述一下Tomcat8005、8009、8080三个端口的含义?
10、什么叫CDN?
11、什么叫网站灰度发布?
12、简述DNS进行域名解析的过程?
13、RabbitMQ是什么东西?
14、讲一下Keepalived的工作原理?
15、讲述一下LVS三种模式的工作过程?
16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?
17、如何重置mysql root密码?
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
当用户与业务服务器所在的运营商不同时,请求需要在运营商之间进行互联转发,这可能会增加延迟和不稳定性。CDN提供了跨多个运营商的覆盖,使得用户可以从与其运营商更接近的CDN边缘节点获取内容,从而减少了跨运营商转发带来的问题。
3.提高服务器响应速度和可用性
业务服务器面对海量用户请求时,可能会面临网络带宽和处理能力的限制,导致响应速度下降和可用性降低。CDN通过缓存静态内容、负载均衡和智能路由等技术,可以将用户请求分发到最优的服务器节点上,从而分担了原始服务器的压力,提高了响应速度和可用性。
二、CDN基础知识
(一)DNS解析过程
当客户端发起一个域名解析请求时,第一步会请求到递归名字服务器,然后依次请求这个域名所在的每一级权威的服务器。它会逐一地找到域名前面的对应的主机地址,然后应答给客户端,客户端得到IP地址之后会对相应的ip发起请求。然后对应的ip服务器返回响应给客户端。
(二)CDN访问过程
客户端请求资源: 用户在浏览器中输入网址或点击链接请求某个网页或资源。
DNS解析: 浏览器首先会进行DNS解析,将域名解析成对应的IP地址。如果该域名的DNS记录中包含了CDN服务商提供的DNS服务器信息,DNS解析可能会返回一个与用户位置最接近的CDN节点的IP地址。
请求路由: 用户的请求被发送到最近的CDN节点。
节点服务器处理请求: CDN节点服务器接收到用户请求后,会检查是否有缓存该资源的副本。如果有,它会直接从缓存中返回资源;如果没有,它会向源服务器请求资源。
资源获取: 如果资源存在于CDN节点的缓存中,则CDN节点会直接返回资源给用户;如果资源不在缓存中,则CDN节点会向源服务器请求资源。
数据传输: 源服务器将所请求的资源传输给CDN节点服务器。
数据返回: CDN节点服务器将获取到的资源返回给用户的浏览器。
内容传输完成: 用户在浏览器中收到并加载所请求的资源,完成访问过程。
(三)A记录与CNAME记录
A记录和CNAME记录是DNS中两种常见的资源记录类型,它们在域名解析过程中具有不同的作用。
1. A记录 (Address Record)
A记录用于将域名解析为IPv4地址。例如,将域名www.example.com解析为对应的IPv4地址。A记录直接指向IP地址,可以将一个域名映射到一个特定的IPv4地址。
2. CNAME记录 (Canonical Name Record)
CNAME记录用于创建一个域名的别名,将一个域名解析为另一个域名。当使用CNAME记录时,不需要指定IP地址,而是将该域名指向另一个域名。例如,将域名blog.example.com的CNAME记录指向www.example.com,这样访问blog.example.com时会自动跳转到www.example.com。CNAME记录常用于实现域名的重定向、负载均衡和简化DNS管理。通过创建CNAME记录,可以方便地将一个域名关联到另一个域名,并且当目标域名的IP地址发生变化时,只需要更新CNAME记录的指向即可,而无需修改所有引用该域名的地方。需要注意的是,在根域名(例如example.com)上不能直接创建CNAME记录,只能在子域名上进行创建。
(四)CDN网络要素
边缘服务器节点(Edge Servers): 这些是部署在全球各地的服务器,位于互联网骨干网和终端用户之间的关键位置。它们存储着静态和动态内容的副本,并且负责响应用户的请求。
内容缓存和存储系统: CDN使用缓存和存储系统来存储经常请求的内容的副本。这些系统可以包括内存缓存、磁盘缓存、分布式文件系统等,用于快速提供内容,减少对源服务器的请求负载。
负载均衡器(Load Balancers): 这些组件负责将用户请求分发到CDN网络中的不同边缘节点。通过负载均衡,CDN可以有效地利用网络资源,避免过载或不平衡的情况。
智能路由和请求重定向系统: 这些系统根据用户的位置、网络条件和其他因素,选择最优的服务器节点来响应请求。这有助于最大化性能和用户体验,并且可以优化网络资源的利用。
网络优化和加速技术: CDN通常会采用各种技术来优化数据传输,例如HTTP/2、TLS加速、TCP优化、内容压缩等。这些技术有助于降低延迟、提高带宽利用率,从而改善用户体验。
监控和分析系统: CDN需要实时监控网络状态、流量模式和服务器健康状况等。监控和分析系统可以帮助运营人员及时发现和解决问题,优化网络性能。
安全性和防护机制: 为了保护网络和内容免受攻击和滥用,CDN通常会实施安全性和防护机制,如DDoS防护、SSL加密、内容鉴别等。
管理和配置接口: CDN提供了管理和配置接口,使运营人员能够管理网络配置、监控性能指标,并进行必要的调整和优化。
三. CDN关键技术
(一)调度策略
1.过载策略
当某些节点负载过重时,首先通过调整各节点的IP权重来平衡负载。
如果负载无法通过权重调整解决,可以考虑添加新节点或删除不必要的节点,以分担负载或减少成本。
2.保底策略:
当需要增加带宽供应时,首先通过调整各节点的IP权重来满足保底带宽需求。
如果仍然不足以满足需求,可以考虑添加新节点。
3.流量节点使用:
在白天带宽低峰时,关闭部分节点以节约成本。
在晚高峰时,通过打开节点来消耗其他95节点计费带宽,以减少额外费用。
4.合并计费节点规划调整:
当节点规划存在重叠或不必要的情况时,考虑合并节点以降低成本。
5.调整策略定时回滚:
对于调整后效果不佳的策略改动,可以设定定时回滚机制,恢复到之前的状态。
(二)CDN回源规则
回源: 通过客户端请求访问资源时,如果CDN节点上未缓存该资源, CDN节点会回源站获取资源。
- 边缘不命中回源:当CDN节点上没有所请求的资源时,会回源到源服务器获取该资源,并将其缓存到边缘节点,以便后续请求可以直接从边缘节点获取。这是最常见的回源规则。
- 缓存过期回源:当CDN缓存中的资源过期时,即超过了预设的缓存时间或缓存策略要求,CDN会回源到源服务器重新获取最新的资源。
- 防盗链回源:为了防止资源被非法盗链使用,CDN设置了防盗链规则。当CDN节点检测到非法盗链请求时,会回源到源服务器获取资源,并验证请求的合法性。
- 热点回源:当某个资源在短时间内被大量请求,导致缓存失效或边缘节点无法满足需求时,CDN会回源到源服务器获取该热点资源,以满足用户需求。
- 强制回源:有时候需要强制让CDN节点回源获取最新的资源,即使缓存中的资源没有过期。这可以通过配置特定的回源规则来实现。
- 直接回源:有时候需要直接绕过CDN节点,将请求直接发送到源服务器。这可以用于测试、调试或某些特殊情况下的需求。在这种情况下,CDN节点不会对请求进行缓存或加速处理。
(三)CDN调度方法
1.DNS调度
基于DNS协议,调度系统会根据LocalDNS的IP归属地进行流量调度,返回最接近的LocalDNS的cache节点ip;(建立tcp/ip连接)
优点: DNS系统本身是分布式的结构,LocalDNS本身有cache缓存;
缺点: LocalDNS的地址判断力度较粗,另外用户有可能会设置错误的LocalDNS。
2.IP302调度
基于HTTP协议,用户首先访问到调度系统,调度系统通过获取客户端IP归属地进行调度,组装响应头的location的URL,通过状态码为302的方式响应给客户端,然后客户端根据新的URL发起连接。
优点: 基于HTTP协议,通过302重定向方式实现调度,实现更加灵活的流量控制。
缺点: 需要客户端进行额外的重定向操作,可能会增加延迟和复杂度。
3.HTTPDNS调度
基于HTTP协议,客户端直接访问HTTPDNS接口到我们的调度系统,调度系统再通过获取客户端的IP归属地得到cache节点的ip,以状态码为200的方式响应给客户端,然后客户端再向cache节点发起请求。
优点: 直接利用HTTP协议,客户端可以直接访问HTTPDNS接口,调度系统通过客户端IP获取缓存节点的IP,减少了额外的重定向步骤,可以更加高效地进行流量调度。
缺点: 需要改造客户端,增加了开发和维护的成本。
(四)DNS调度部署架构
-
RDS(Relational Database Service):
- 主要用于存储生成调度策略所需的配置信息,例如策略总开关、调度组、线路、节点维度的带宽信息等。
- 这些信息可以用于策略的生成和调整。
-
Zabbix:
- 用于获取节点的总带宽信息。
- 这些数据可以用于监控和评估节点的性能,以及在需要时调整带宽分配。
-
策略Server:
- 部署了计算各调度组、各线路节点配比关系的程序的服务器。
- 它负责根据从RDS和Zabbix获取的数据,计算出最优的调度策略,并将其应用到中控上。
-
中控:
- 管理域名、调度组、节点、线路等信息的控制平台。
- 从RDS获取配置信息,接收策略Server计算的最优策略,并将其应用到实际的DNS调度系统中。
-
KDNS(Authoritative DNS):
- 授权DNS服务器,负责响应用户DNS查询请求。
- 根据中控提供的调度策略,将用户的DNS查询请求转发到合适的节点上,实现负载均衡和优化性能。
(五)CDN的DNS调度原理
- 用户输入访问的域名,操作系统向本地DNS服务器查询域名的IP地址。
- 如果本地DNS服务器没有缓存该域名的IP地址或缓存已过期,它会向Root DNS服务器查询域名的授权服务器。
- Root DNS服务器将域名的授权DNS记录回应给本地DNS服务器。
- 本地DNS服务器得到域名的授权DNS记录后,继续向域名授权DNS查询域名的IP地址。
- 域名授权DNS查询域名记录后(通常是CNAME),回应给本地DNS服务器。
- 本地DNS服务器得到域名记录后,向CDN智能DNS查询域名的IP地址。
- CDN智能DNS根据一定的算法和策略(例如静态拓扑、容量等),将最适合的CDN节点IP地址回应给本地DNS服务器。
- 本地DNS服务器将得到的域名IP地址回应给用户端。
- 用户得到域名IP地址后,访问CDN节点服务器。
- CDN节点服务器响应请求,将内容返回给客户端。同时,缓存服务器可能会在本地进行保存,以备以后使用,同时将获取的数据返回给客户端,完成数据服务过程。
(六)CDN的302调度原理
图片引用:help.aliyun.com
终端发起访问后,本地DNS向权威DNS查询域名的IP地址。权威DNS响应本地DNS就近调度服务器IP,通常是CDN的调度节点。终端向调度服务器发起请求,调度服务器根据终端的IP地址、URL请求热度等因素,决定通过302重定向方式将用户请求调度至最优的缓存服务器上。调度服务器返回HTTP 302响应,并在Location头中包含最优缓存服务器的URL。终端收到302响应后,再次向302指向的地址发起请求,最优的缓存服务器收到请求后,响应内容返回给终端。
四、CDN节点配置详解
(一)节点计费方式
节点计费方式主要包括包端口计费、95计费和流量计费:
-
包端口计费:
- 按照端口的数据费用计费,与端口跑多少带宽无关。
- 如果节点规划带宽大于保底带宽,但小于中控上联的90%,说明节点有可用的消峰空间,可以进行消峰操作,即在高峰时段降低带宽使用以节约成本。
-
95计费:
- 每个月结算一次款项。
- 按照每5分钟取一个点的方式计算,一天共有1224=288个点,一个月就是1224*30=8640个点。
- 将这些点中最高的5%的数据去掉,剩下的最高带宽就是95计费的带宽值。
- 这种方式能够更好地反映出节点的实际使用情况,避免单纯按峰值计费造成不必要的成本开销。
-
流量计费:
- 根据当月累积的流量数据乘以流量单价,再加上请求次数乘以请求单价来计算费用。
- 这种计费方式适用于需要根据实际使用量来计费的情况,能够更加灵活地根据用户的实际需求来收费。
(二)节点部署类型与设备
1.节点部署
-
标准部署:
- 节点部署采用标准的方式,非标准资源通过302调度获取。
- 通过标准部署方式,可以更灵活地根据需要调整资源的分配和调度,以适应不同的需求和情况。
-
城域网部署:
- 城域网部署是指在一个城域网内部署节点,这些节点单独计费,并且采用包端口计费方式。
- 这种部署方式可能适用于需要在特定区域内提供服务的场景,例如城市级别的内容分发。
2.节点部署设备
-
Cache(缓存服务器):
- 用来缓存数据的服务器,主要负责缓存用户请求的内容,以提高访问速度和降低负载。
-
LVS(Linux Virtual Server):
- 负载均衡设备,用于在节点中各个Cache服务器之间进行负载均衡,确保请求被合理分配到各个服务器上,从而提高系统的整体性能和可靠性。
-
Relay(中继设备):
- 主要负责控制命令的下发、日志的回传等功能。
- 它可能与其他设备进行通信,如负责维护整个系统的负载DNS,以实现整个系统的负载均衡和管理。
(三)Virtual IP的应用
虚拟 IP(VIP)是一种网络配置技术,用于提供高可用性和负载均衡。在高可用性方面,主要有两种类型:浮动 IP 和虚拟 IP。
-
浮动 IP:
- 在浮动 IP 方案中,虚拟 IP 地址会在不同的主机之间“漂移”,即在一台主机上失效时,它会自动“漂移”到另一台主机上。
- 这样可以确保在一台主机发生故障时,业务流量可以快速地转移到另一台主机上,从而实现服务的高可用性。
-
虚拟 IP:
- 虚拟 IP 通常是一组 IP 地址,由多台服务器共享,而不是在服务器之间“漂移”。
- 负载均衡设备(如 LVS)会将请求分发到这组虚拟 IP 地址上,然后根据负载均衡算法将请求转发给其中一台服务器。
- 这种方式实现了负载均衡,即使其中一台服务器出现故障,仍然可以通过其他服务器继续提供服务,从而提高了系统的可用性和可靠性。
(四)负载均衡器的三种工作模式
1.NAT模式(Network Address Translation)
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
台服务器。
* 这种方式实现了负载均衡,即使其中一台服务器出现故障,仍然可以通过其他服务器继续提供服务,从而提高了系统的可用性和可靠性。
(四)负载均衡器的三种工作模式
1.NAT模式(Network Address Translation)
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!