当前位置:首页 > SRE运维工程师 > 正文内容

SRE运维工程师 面试题,你能答几道?

时移世界11个月前 (04-29)SRE运维工程师1463
  • Linux 和网络

1、Linux系统的/data目录下有大量目录和文件,现在需要找出该目录下所有以demo开头的txt文件,并将其中的字符abc改成ddd?请给出相关的命令。

find /data -type f -name "demo*.txt" -exec sed -i 's/abc/ddd/g' {} +
#这里的命令解释如下
#find /data -type f -name "demo*.txt":在/temp目录下查找所有以test开头并且扩展名为.txt的文件。
#-exec ... {} +:对每个找到的文件执行指定的命令。{}是一个占位符,代表当前找到的文件名。
#sed -i 's/abc/ddd/g' {}:使用sed命令替换文件内容。-i选项表示直接修改文件内容。
#'s/abc/ddd/g'是一个替换表达式,表示将abc替换为ddd。g标志表示全局替换,即替换每一行中的所有匹配项。


2、top 命令的显示结果中,关于CPU结果的us、sy、id、wa、st分别代表什么?

us 表示用户空间使用的 CPU 时间百分比。
sy 表示内核空间使用的 CPU 时间百分比。
id 表示空闲的 CPU 时间百分比。
wa 表示等待 I/O 操作的 CPU 时间百分比。
st 表示被其他虚拟机占用的 CPU 时间百分比(仅在虚拟化环境中出现)。


3、软链接与硬链接的区别?

软链接与硬链接的简明扼要区别如下:
本质:硬链接是同一文件的多个名字,指向同一inode;软链接是特殊文件,指向另一文件或目录的路径。
跨文件系统:硬链接不能跨文件系统;软链接可以。
链接对象:硬链接只能链接到文件;软链接可以链接到文件或目录。
存储空间:硬链接不占用额外空间(与源文件共享);软链接占用少量空间(存储路径信息)。
删除原始文件影响:删除硬链接指向的源文件,硬链接仍有效;删除软链接指向的源文件,软链接失效。
总结:硬链接更像文件的别名,而软链接像指向文件的快捷方式。硬链接更稳定,但灵活性不如软链接。



4、简述TCP三次握手的过程?

TCP三次握手是建立TCP连接时的过程。在三次握手中:
1)客户端发送一个SYN(同步)数据包到服务器,
2)服务器接收并回应一个SYN-ACK(同步-确认)数据包,
3)客户端再回应一个ACK(确认)数据包。
这样,客户端和服务器之间就建立了一个可靠的TCP连接。


5、进程和线程的区别是什么?

进程和线程的主要区别在于它们的独立性、资源分配、通信方式、开销以及并发性等方面。
进程是独立的执行单元,具有独立的地址空间和资源,而线程则是进程的一部分,
共享进程的地址空间和资源。这些差异使得进程和线程在操作系统中各自扮演着不同的角色,以满足不同的执行需求。


6、TCP和UDP协议有什么区别?

TCP和UDP协议的主要区别如下:
连接性:TCP是面向连接的,需要先建立连接;UDP是无连接的,直接传输数据。
可靠性:TCP提供可靠的数据传输,确保数据完整和有序;UDP不保证可靠性,可能丢包或乱序。
传输效率:TCP因有确认和重传机制,效率较低;UDP无此机制,传输更快。
适用场景:TCP适用于对可靠性要求高的场景,如文件传输;UDP适用于实时性要求高的场景,如视频会议。
综上所述,TCP注重可靠性,UDP注重效率,选择协议时需根据具体需求权衡。


7、Keepalived的工作原理是什么?

Keepalived的工作原理主要基于VRRP(虚拟路由冗余协议)实现高可用性服务。
它通过运行在每台服务器上来监测整个集群的运行状态,并提供故障切换和负载均衡功能。


8、 time_wait如何产生的,有什么优化方法?

TIME_WAIT状态是在TCP连接关闭过程中产生的一种状态。当TCP连接主动关闭的一方发起关闭连接请求后,它会进入TIME_WAIT状态。这个状态会持续一段时间,通常是2MSL(Maximum Segment Lifetime,
最大分节生命期)的时间长度。MSL是IP数据包能在互联网上生存的最长时间,超过这个时间将在网络中消失。在这段时间内,主动关闭的一方会保持这个连接状态,以确保在网络中的所有数据包都已经消失,防止旧的数据包被错误地传递到新的连接中。
TIME_WAIT状态的存在主要是为了实现TCP全双工连接的可靠释放,以及确保旧的数据包在网络中因过期而消失。然而,过多的TIME_WAIT状态可能会导致端口资源耗尽,从而影响新的连接建立。
针对TIME_WAIT状态的优化,有几种常见的方法:
1)修改内核参数:通过调整内核参数来缩短TIME_WAIT的等待时间。例如,可以修改tcp_tw_reuse和tcp_timestamp参数,使得处于TIME_WAIT状态的连接在特定条件下可以被重用。需要注意的是,tcp_tw_reuse参数只在调用connect()函数时起作用,因此它主要用于客户端(主动连接的一端)。
2)扩大本地端口范围:如果本地端口范围设置得太小,可能会导致端口耗尽和TIME_WAIT状态的增加。通过修改内核参数,如ip_local_port_range,可以扩大本地端口范围,从而减少端口耗尽的风险。
3)开启TCP连接复用:TCP连接复用可以在TIME_WAIT状态的连接被关闭后,立即将其端口重新分配给新的连接,而不必等待TIME_WAIT状态结束。这可以通过修改系统配置文件(如/etc/sysctl.conf)并重启相关服务来实现。
需要注意的是,虽然这些方法可以优化TIME_WAIT状态的处理,但也需要谨慎使用,以避免引入新的问题或安全隐患。在修改系统参数或配置之前,建议充分理解其影响并备份相关配置。


  • 容器技术

1、Docker的网络模式有哪些?

**Docker网络模式简述:**
- **Bridge**(默认):创建独立的虚拟网桥,容器间可互通,通过端口映射与宿主机通信。
- **Host**:容器使用宿主机网络栈,与宿主机共享IP和端口。
- **None**:无网络功能,用于完全隔离网络环境的场景。
- **Container**:复用另一个容器的网络栈,两个容器共享网络资源。
另外,Docker还支持自定义网络(如Overlay),以满足更复杂、跨主机的网络需求。


2、K8s有哪些组件,用途分别是什么?

**Kubernetes核心组件及用途简述:**
- **kube-apiserver**:集群的统一接口,处理API请求并维护集群状态数据。
- **etcd**:分布式键值存储系统,存储集群配置和状态信息。
- **kube-scheduler**:负责Pod在Node上的智能调度。
- **kube-controller-manager**:运行多个控制器以维持集群期望状态(如副本数量、节点状态等)。
- **kubelet**:每个Node上运行,接收指令执行容器操作并与Container Runtime交互。
- **Container Runtime**(如Docker):管理镜像与容器生命周期。
- **kube-proxy**:实现服务发现与负载均衡功能。
其他关键组件:
- **kube-dns/CoreDNS**:提供内部DNS解析。
- **Ingress Controller**:管理外部访问路由规则。
- **Service Account & Token Manager**:为Pod提供安全API访问凭据。
- **Dashboard**:可视化管理和监控界面。
- **Volume插件/CSI**:支持各种存储卷类型动态挂载到Pod中。
- **网络插件**(如Calico、Flannel):实现跨节点容器网络互通。


3、为什么K8s要使用Pod,而不直接使用容器,这样能带来什么好处?

Kubernetes 使用 Pod 而非直接操作容器,主要原因包括:
- **资源共享**:Pod 内的多个容器共享网络命名空间、存储卷等资源,简化了配置与交互。
- **性能优化**:减少容器间通信开销,提高效率,尤其适用于紧密耦合的应用组件。
- **生命周期同步**:Pod 内所有容器统一创建、调度和销毁,便于管理相关联的服务或应用组件。
- **抽象层级提升**:提供跨容器运行时的兼容性,用户关注点集中于Pod层面而非底层容器技术。
- **封装便捷性**:通过Pod封装多容器应用为一个调度单元,利于集群调度系统处理。


4、Kubernetes 中的 Deployment 和 StatefulSet 有何区别?

**Deployment vs StatefulSet 简要对比:**
- **Deployment**:
- 管理无状态应用,实例间可互换。
- 支持自动扩缩容和滚动更新。
- Pod 副本不保证网络标识持久性和有序创建/销毁。
- **StatefulSet**:
- 管理有状态应用,如数据库,需要稳定的网络标识和持久化存储。
- 每个Pod具有唯一、持久的名称和网络标识,且有序创建/销毁。
- 与PersistentVolumes绑定以确保数据持久性,即使Pod重启或重新调度也不会丢失数据。
- 创建、升级时保持严格的顺序和稳定性。


5、解释一下 Kubernetes 中的亲和性调度(Affinity Scheduling)和反亲和性调度(Anti-Affinity Scheduling)。

亲和性调度(Affinity Scheduling)在Kubernetes中用于确保Pod被调度到具有特定标签的Node节点上,以满足性能、可用性或合规需求。它包含硬亲和性和软亲和性,分别对应强制要求和优先级较高的偏好设置。
反亲和性调度(Anti-Affinity Scheduling)则相反,旨在避免Pod被调度到带有特定标签的Node上,主要用于实现Pod之间的隔离和提高容错性。同样有硬反亲和性和软反亲和性之分。
两者结合使用,为Kubernetes集群提供了更精细化的Pod调度策略,使得Pod能够按预设规则灵活分布于不同节点。



  • 监控系统

1、讲讲你对监控的理解,监控的目的是什么?

监控,顾名思义,是对特定对象或系统的实时观测和数据收集过程,以确保其正常运行、及时发现异常情况并进行有效管理。其目的是:
状态感知:通过持续收集各类性能指标(如系统资源利用率、网络流量、业务请求量等),了解被监控对象的实时状态和健康状况。
故障预警:在问题发生初期或即将发生时发出预警,防患于未然,减少因故障导致的服务中断时间。
问题定位与分析:当出现问题时,能够快速定位故障点,为运维人员提供详细的问题分析依据,提高排障效率。
性能优化:通过对历史数据的分析,可以评估系统瓶颈,指导资源合理分配,优化系统架构和服务性能。
安全保障:对于信息系统而言,监控也是安全保障的重要环节,可以及时发现并阻止潜在的安全威胁和攻击行为。
综上所述,监控的核心目标在于提升服务的稳定性和可用性,降低运维成本,并为企业决策提供有力的数据支持。


2、Prometheus的主要组件有哪些?

Prometheus的主要组件包括:
Prometheus Server:核心,负责抓取并存储监控数据,提供查询和告警规则管理。
Exporter:将第三方服务数据转换为Prometheus可读格式。
Pushgateway:支持临时任务推送监控数据。
Alertmanager:处理告警信息,实现通知逻辑。
Service Discovery:自动发现被监控服务的机制。
另外,常与Prometheus配套使用的还有:
Grafana:用于数据可视化和仪表盘构建。
远程存储适配器(可选):对接远程存储系统以持久化数据。


3、Prometheus的Exporter有什么用途,你用过哪些Exporter?

Prometheus的Exporter主要用于将不同服务、系统和硬件设备的监控数据转换成Prometheus可以识别和抓取的时间序列格式。这些Exporter通常部署在被监控的目标上,通过HTTP端口暴露标准化的/metrics接口,使得Prometheus Server能够周期性地拉取并存储相关指标。
Prometheus Exporter的用途:
Node Exporter:用于收集主机级别的资源使用情况,如CPU、内存、磁盘空间、网络流量等。
MySQL Exporter:专门用于从MySQL数据库中提取性能指标,如查询速率、连接数、缓存命中率等。
Redis Exporter:用于监控Redis数据库的键值统计、内存占用以及命令执行情况等信息。
JMX Exporter:针对Java应用程序,通过JMX(Java Management Extensions)接口暴露应用内部的各种性能指标。
Kafka Exporter:用以获取Apache Kafka集群的各项关键性能指标,例如分区、主题、生产者与消费者统计数据。
HAProxy Exporter:用于收集HAProxy负载均衡器的状态、会话数量、吞吐量及延迟等指标。
Blackbox Exporter:进行HTTP(S)、DNS、TCP等各种网络服务的黑盒监控,测试服务可用性和响应时间。
除了上述通用Exporter之外,还有许多其他特定于服务或系统的Exporter,比如Nginx Exporter、ZooKeeper Exporter、Cassandra Exporter等等,它们都分别针对各自的服务提供相应的监控数据给Prometheus。用户可以根据自己的技术栈和监控需求选择合适的Exporter或者开发自定义的Exporter来满足个性化监控要求。


4、如何使用Prometheus监控HTTP服务?

要使用Prometheus监控HTTP服务,可以简化为以下步骤:
安装并配置Prometheus。
在Prometheus配置中设置服务发现,以识别HTTP服务。
在HTTP服务中添加Prometheus格式的监控指标端点。
在Prometheus中配置监控规则(如警报)。
启动Prometheus并查看监控数据。
可选:使用Grafana进行可视化展示。
这些步骤概述了基本的Prometheus监控设置流程,具体细节可参考官方文档。


5、Prometheus是否支持高可用性(HA)部署?如果是,如何实现?

Prometheus支持高可用性部署。实现方式包括:
使用多副本集群,提高可用性和性能。
利用服务发现和标签选择器自动发现服务。
数据持久化和备份,确保数据稳定性。
设计分布式架构,如使用Prometheus Federation,处理性能瓶颈和数据汇总问题。
具体实现方式需根据环境和需求定制。


  • 网站运维

1、当访问网站时出现401、404和503错误时,分别是什么原因导致的?

当访问网站时出现401、404和503错误时,它们各自代表不同的原因:
401错误:未授权错误(Unauthorized)。这通常意味着用户没有提供正确的身份验证凭据,或者用户没有足够的权限访问请求的资源。简单来说,就是用户没有通过网站的认证,无法访问页面内容。
404错误:页面未找到错误(Not Found)。这表示用户请求的页面在服务器上不存在。可能是因为页面已被删除、移动或从未存在过。用户输入的URL可能有误,或者网站的内容结构已经改变。
503错误:服务不可用错误(Service Unavailable)。这通常是由于服务器暂时过载或正在进行维护而无法处理请求。这是一种服务器端的错误,表明服务器当前无法提供服务,用户需要等待一段时间再试。
这些错误码是HTTP协议中定义的,用于帮助用户和开发人员了解访问网站时发生的问题类型。


2、网站发布中的灰度发布是指什么?

灰度发布(Gray Release),又称灰度测试或金丝雀发布,是一种在发布新版本或更新功能之前,允许部分用户访问新版本或功能的策略。通过逐步扩大用户范围,降低发布风险,确保整体系统稳定,最终完成全面推广。这种策略有助于优化产品设计并提升用户体验。


3、什么是反向代理?

反向代理是介于用户和目标服务器之间的代理服务器。用户访问反向代理服务器,再由其转发请求至目标服务器,对用户隐藏了真实服务器的地址,提高了安全性和访问速度。常用于Web加速,提升网站性能。


4、Nginx的优点有哪些?

Nginx的优点主要包括:
高性能:能轻松处理大量并发连接,适用于高流量场景。
高可靠性:采用多进程设计,保证服务的连续性和稳定性。
配置灵活:模块化设计,易于扩展和定制。
负载均衡:支持多种算法,实现分布式处理和负载均衡。
反向代理:支持高效缓存和加速,提升网站性能。
安全性高:能有效抵御网络攻击。
综上,Nginx是一款功能强大、性能优越的Web服务器和反向代理服务器。


5、如果一个网站的打开速度很慢,请说下你的排查思路?

网站打开速度慢,排查思路如下:
网络检查:首先确认用户网络是否稳定,尝试更换网络环境或使用其他设备访问,排除网络问题。
服务器性能:检查服务器负载、带宽、CPU及内存使用情况,确保服务器性能足够。
网站代码优化:检查是否有冗余代码、无效请求或过大的文件,优化代码结构,减少资源加载时间。
图片和媒体优化:压缩图片大小,使用适当的格式,减少视频和音频文件的大小和加载时间。
数据库查询优化:检查数据库查询是否高效,优化慢查询,减少数据库负担。
第三方服务:确认是否有外部API或服务调用影响加载速度,优化或替换慢响应的第三方服务。
CDN加速:考虑使用CDN(内容分发网络)来加速网站内容的分发。
浏览器缓存:利用浏览器缓存机制,减少重复加载相同资源。
日志分析:查看服务器和网站日志,分析慢请求的来源和原因。
使用工具:利用网页性能测试工具(如PageSpeed Insights、GTmetrix等)分析性能瓶颈。
综合以上各点,可以系统地排查网站打开速度慢的问题,并进行相应的优化。

image.png


扫描二维码推送至手机访问。

版权声明:本文由时移安全运维发布,如需转载请注明出处。

本文链接:https://www.youchang.net/?id=6

分享给朋友:

“SRE运维工程师 面试题,你能答几道?” 的相关文章

K3s探秘:Rundeck Community 5.1.1 安装配置实战

K3s探秘:Rundeck Community 5.1.1 安装配置实战

March 5, 2024Rundeck Community 5.1.1https://www.rundeck.com/downloads 背景知识:Rundeck,这款基于Java与Grails的开源运维自动化利器,简约而不简单,无多余之辞,直切运维之核心。它穿梭于节点之间,化日常操作为自动化流程...

驾轻就熟:在K3s集群构筑JumpServer堡垒,演绎云端安全的诗篇

驾轻就熟:在K3s集群构筑JumpServer堡垒,演绎云端安全的诗篇

一、背景知识:1 、JumpServer 是什么?JumpServer 是广受欢迎的开源堡垒机,是符合 4A 规范的专业运维安全审计系统。JumpServer 帮助企业以更安全的方式管控和登录所有类型的资产,实现事前授权、事中监察、事后审计,满足等保合规要求。JumpServer 堡垒机支持的资产类...

一探究竟:10个独领风骚的Python自动化实战剧本,解锁生产力的智慧之匙

一探究竟:10个独领风骚的Python自动化实战剧本,解锁生产力的智慧之匙

1、日志洞悉乾坤:透过Python的慧眼,深度揭秘日志文件中的奥秘——自动化解析与关键信息提炼的艺术def delve_into_log(log_path: str) -> None:     "&qu...

SRE降本增效:一键免费获取并自动续期“泛域名SSL证书”,站点安全无懈可击

SRE降本增效:一键免费获取并自动续期“泛域名SSL证书”,站点安全无懈可击

背景:# 阿里云 免费SSL数字证书(有效期从12个月缩至3个月)公告:https://help.aliyun.com/zh/ssl-certificate/product-overview/notice-on-adjustment-of-service-policies-for-free...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。