运维常见面试题
首先明确,卸载失败通常是因为有进程正在使用该挂载点下的文件。先用losf +D /mount_point或者fuser -v /mount_point定位占用进程。确认进程性质后,如果是非关键进程,安全终止;如果是业务进程,则协调相关方后再处理。只有再极端情况下,才会考虑unount -f,并提前评估数据一致性风险。这样既解决问题,有体现生产环境意识。
2.向文件系统写入数据失败,如何处理?
优先排查两类资源瓶颈:一是磁盘空间是否耗尽 df -h,二是inode是否用完df -i。前者常见于日志堆积,后者多由大量小文件引起。若空间显示充足但仍然写不进,检查是否有已经删除但仍然被进程占用的文件 lsof|grep deleted,这类文件会持续占用空间。定位后,清理或扩容即可。
3.客户反应服务器卡顿,怎么排查?
采用自顶向下的排查思路。首先用top或htop查看cpu负载、内存使用和I/O等待情况;若负载高,进一步分析是CPU密集型、内存不足还是磁盘I/O瓶颈。同时检查数据库连接(MYSQL的 SHOW FULL PROCESSLIST,看是否有慢查询或锁表。最后结合监控系统历史数据,判断是否为周期性高峰或异常突增。
4.linux命令执行速度很慢,如何解决?
命令执行慢通常反映系统整体性能下降。我会先用uptime看负载,free -m看内存,iostat看磁盘I/O。如果缓存过高(如page cache占用大量内存),可能影响其他进程。此外,检查是否有定时任务(crontab -l)或异常进程在后台运行。关键是要区分是系统级问题还是个别问题,避免盲目操作。
5.了解七层模型吗?TCP和UDP的区别?二层和三层交换机的区别?
OSI七层模型从下到上是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层,帮助我们理解网络通信的分层抽象。TCP是面向连接、可靠、有序的协议,适用于web、数据库;UDP是无连接、低延迟,适用于视频,DNS。二层交换机基于MAC地址转发,工作在数据链路层;三层交换机具备路由功能,可基于IP地址跨网段转发,提升效率。
6.说一下TCP三层握手和四次挥手。
三次握手是为了同步双方初始序列号并建立可靠连接:客户端发送SYN,服务端回SYN+ACK,客户端发送ACK。四次挥手是因为TCP是全双工的,一方关闭发送通道(FIN)后,另一方扔可发送数据,因此需独立确认(ACK)后再发自己的(FIN)。整个过程确保双方都能有序有序释放连接。
7.为什么四次挥手要有TIME_WAIT状态?
TIME_WAIT的主要作用是确保最后一个ACK能被对方收到。如果ACK丢失,对方会重发FIN,处于TIME_WAIT(2MSL)的主动关闭方可以再次响应,防止连接异常终止。同时,它还能避免新连接收到旧连接的延迟报文,保证数据正确性。
8。为什么连接是三次握手,断开四次挥手?
因为建立连接时,服务端可以在收到SYN后立即合并回复SYN+ACK,减少一次交互。而断开时,接收FIN的一方必须先确认(ACK),等自身数据发送完毕后再发FIN,这两个动作无法合并,因此需要四次。
9.软连接和硬链接有什么区别?怎么做连接
硬连接与原文件共享inode,删除原文件不影响硬连接,但不能夸文件系统或对目录创建。软连接是独立文件,存储的是目标路径,类似快捷方式,可跨分区,可以指向目录,但依赖源文件存在。创建硬连接用ln source target,软连接用ln -s source target。在备份或日志轮转中,软连接更常用。
10.RAID知道吗?软RAID和硬RAID的区别?常见RAID原理?
RAID通过多盘组合提升性能或冗余。软RAID由操作系统实现(mdadm),成本低但依赖主机性能;硬RAID由专用RAID卡实现,性能稳定,支持电池缓存,适合企业级场景。RAID0条带化提速但无冗余;RAID1镜像提供冗余但容量减半;RAID5分布校验,允许一块盘故障;RAID10兼顾性能与安全,是生产环境推荐方案。
11.监控Linux系统资源用哪个命令?
优先选择dstat,因为它整合了vmstat、iostat、netstat等工具的功能,可实时展示CPU、内存、磁盘、网络的综合状态。若未安装,可以用top+iostat+free组合代替。关键是根据监控目标选择合适工具,而非依赖单一命令。
12.Centos操作系统的启动过程?
centos6以前基于SysV init:BIOS->MBR->GRUB->init->/etc/initab->rc.sysinit->rcN.d。
centos7以后改用systemd:BIOS->GRUB2->systemd->default.target->启动服务单元。核心变化是从串行启动改为并行启动,大幅提升启动速度。理解启动流程有助于排查系统无法进入的问题。
13.如何修改Apache主页?Nginx和Apache的区别?
Apache主页由DirectoryIndex指令定义,修改httpd.conf或虚拟主机配置即可。
Nginx采用异步非阻塞模型,资源占用少、抗高并发强;Apache是同步阻塞模型,模块生态丰富但资源消耗大。实践中,常以Nginx作反向代理,Apache处理动态内容,发挥各自优势。
14.代理和负载均衡的区别?
代理分为正向和反向。正向代理代表客户端访问外部资源;反向代理代表服务端接受请求,常用于隐藏后端架构。负载均衡则是在多台服务器间分配请求,提升吞吐和可用性。反向代理常与负载均衡结合使用,但代理侧重“代表”,负载均衡侧重“分发”。
15.LVS和Nginx都能做负载均衡,区别是什么?
LVS工作在四层(传输层),仅转发IP包,性能极高,适合大流量入口;Nginx工作在七层(应用层),可解析HTTP内容,支持URL路由、健康检查、动静分离。LVS配置复杂但稳定,Nginx配置简单但资源消耗略高。大型架构中,常LVS做第一层负载,Nginx做第二层调度。
16.LVS工作原理?
LVS基于Linux内核的IPVS模块,在netfilter的INPUT链前拦截数据包,通过调度算法将请求转发给后端真实服务器。管理通过ipvsadm命令完成。其核心优势是内核态处理,几乎无性能损耗。
17.LVS常见的工作模式?
DR模式中,LVS修改MAC地址直接转发,真实服务器直接回客户,效率最高;NAT模式中,LVS做DNAT和SNAT,适用于小规模集群;TUN模式通过IP隧道封装,适合跨机房部署。DR是生产环境中最常见的模式。
18.LVS的常用调度算法?
rr(轮询)、wrr(加权轮询)适合均匀或按能力分配;lc(最少连接)、wlc(加权最少连接)适合长连接场景;dh/sh(目标/源地址哈希)可实现会话保持;lblc适合局部性访问。选择算法需结合业务特性,如web服务常用wlc,缓存集群常用dh。
19.Apache的三种模式?
prefork是多进程但线程,稳定但浪费资源;worker是多线程多进程,节省内存但需处理线程安全;event在worker基础上优化,允许线程在等待I/O时处理新请求,适合高并发KeepAlive场景。现代Apache默认使用event模式。
20.Nginx为什么资源消耗少、并发能力强?
Nginx采用事件驱动的异步非阻塞模型。当请求需要等待I/O时,Nginx将其挂起并注册回调,释放工作进程去处理其他请求。这种机制使得少量worker进程可处理数万并发连接,极大降低上下文切换和内存消耗。
21.Nginx和Tomcat怎么进行数据传输?
Nginx通常作为反向代理与Tomcat协同工作。当用户请求静态资源(如JS、CSS、图片),Nginx直接返回;若请求动态内容(如.jsp、/api),Nginx通过proxy_pass将请求转发给后端Tomcat。tomcat处理完成后,响应经Nginx返回客户端。这种架构实现动静分离,减轻Tomcat负载,提升性能。 22.为什么搭建Web服务器要做动静分离?什么是动静分离?
动静分离是将静态资源(不变内容)与动态请求(需后端计算)分开处理。静态资源由Nginx直接提供并可配置缓存,避免不必要的后端调用;动态请求才交由应用服务器处理。这样能显著降低后端压力,提升响应速度,尤其在高并发场景下效果明显。本质上,是通过职责划分优化系统吞吐。
23.Nginx的常用模块有哪些?
核心模块包括:http_ssl_module(HTTPS加密)、http_proxy_module(反向代理)、http_upstream_module(负载均衡后端定义)、http_rewrite_module(URL重写)。这些模块共同支撑Nginx的高性能网管能力。实际部署中,根据业务要求启动对应模块,避免加载无用功能影响性能。
24.Nginx做反向代理时常用的负载均衡算法?
默认是轮询(rr),请求依次分发;加权轮询(wrr)按服务器性能分配权重;ip_hash保证同一IP始终访问同一后端,实现会话保持;least_conn优先分配给连接数最少的节点,适合长连接场景。选择算法需结合业务特性--web服务常用rr或wrr,API网关可能用least_conn.
25.Nginx的主要特性有哪些?
nginx的核心优势在于:异步非阻塞架构支持高并发;内存占用低、稳定性高;配置简介灵活;自带健康检查,自动剔除故障节点;支持热升级,无需中断服务。此外,它对网络依赖低,只要路由可达即可工作,非常适合做反向代理和负载均衡入口。
26.Nginx常用的参数优化有哪些?
从安全、性能、可用性三方面优化:隐藏版本号防信息泄露;调整client_max_body_size控制上传大小;用limit_req限流防DDOS;开启gzip压缩减少带宽;配置防盗链保护静态资源;启用HTTPS提升安全性;通过location实现动静分离。所有优化都基于实际压测数据,避免过度调参。
27.location模块的匹配优先级?
Nginx的location匹配遵循明确优先级:精确匹配(=)最高;前缀匹配(^)次之;正则匹配(星号或~星号)按配置文件顺序;最后是普通前缀匹配。一旦匹配成功即停止后续检查。理解这一规则对URL路由设计只管重要,可避免规则冲突或意外跳转。
28.数据库主从复制原理?
Mysql主从基于binlog实现异步复制,从库启动I/O线程连接主库,请求binlog位置;主库推送日志给从库;从库的sql线程读取relay log并重放,完成数据同步。整个过程是异步的,因此存在延迟,但对主库性能影响较小。
29.数据库主从不同步的原因?
常见原因包括:网络延迟或中断导致binlog传输失败;主从Mysql版本不兼容;max_allowed_packet配置不一致,打事务在从库执行失败;从库sql线程因唯一键冲突或权限问题中断;主库异常宕机未正确切换。排查时先看从库SHOW SLAVE STATUS中的错误信息。
30.什么是数据库读写分离?
读写分离是将写操作(INSERT/UPDATE/DELETE)路由到主库,读操作(SELECT)分发到一个或多个从库。它依赖主从复制实现数据同步。优势是分散读负载,提升系统整体吞吐。但需注意主从延迟可能导致“读不到刚写入的数据”,对强一致性要求高的场景需特殊处理(如强制读主)
31.主库宕机,如何切换到从库?多个从库如何处理?
首先登陆从库,执行SHOW SLAVE STATUS,对比Exec_Master_Log_Pos,选择位点最新的作为新主。对其执行STOP SLAVE,开启log_bin,重启mysql并执行RESET MASTER。其余从库执行CHANGE MASTER TO指向新主。为避免人工操作风险,生产环境应使用MHA或Orchestrator等自动化工具。
32.事务的四大特征及数据库回滚?
事务具备ACID特征:原子性(操作要么全成功要么全失败)、一致性(事务前后数据符合约束)、隔离性(并发事务互不干扰)、持久性(提交后修改永久保存)。回滚是指事务执行中发生错误时,通过undo log将数据恢复到事务开始前的状态,确保原子性和一致性。
33.Mysql数据库的备份方式?
常用方式包括:逻辑备份(mysqldump,适合小库)、物理备份(xtrabackup,支持热备)、二进制日志增量备份、主从架构下的从库冷备。关键业务还会采用异地多活或定期快照。备份策略需结合RPO(恢复点目标)和RTO(恢复时间目标)制定,并定期验证恢复流程。
34.Mysql和MariaDB有什么关系?
MariaDB是Mysql创始人因Oracle收购后担忧开源前景 而fork出的分支。它完全兼容Mysql协议和Api,但优化了存储引擎(如Aria,MyRocks),并持续引入新特性。目前Centos等系统默认使用MariaDb作为Mysql替代品,两者在运维层面几乎一致。
35.数据库常用引擎及区别?
MYISAM不支持事务和行锁,但全文索引好的查询速度快,适合只读场景;InnoDB支持事务、行级锁、外键,是高并发OLTP系统首选;Memory引擎将数据存于内存,适合临时表或缓存。现代Mysql默认引擎为InnoDB,因在数据安全和并发性能上更均衡。
36.非关系型数据库与Mysql的区别?
mysql是关系型数据库,数据以表结构存储,支持sql、事务、复杂查询;非关系型数据库(如redis,MongoDB)采用键值、文档等灵活模型,无固定shema,扩展性好,适合高并发、海量数据场景。选择依据是业务需求;强调一致性用关系型,高吞吐量、灵活性结构用非关系型。
37.数据库的锁机制?
锁机制用于控制并发访问,保持数据一致性。Mysql InnoDB支持行锁、间隙锁、临键锁,通过MVCC减少锁冲突。当事务修改数据时,会加排他锁;读操作在重复读隔离级别下使用快照读,避免加锁。合理设计索引和事务粒度,可显著降低锁等待和死锁概率。
38.高可用负载均衡集群的原理?
典型架构是LVS+Keepalived。LVS负责四层负载均衡,高效分发流量;Keepalived基于VRRP协议实现高可用,通过心跳检测主节点状态,故障时自动将VIP漂移到备节点。VRRP确保只有一个主路由器对外服务,切换时间通常在秒级,保障业务连续性。
39.DNS是什么?解析过程?智能DNS?
DNS是域名解析系统,将域名转为IP。解析过程:客户端先查hosts,再查本地缓存,然后递归查询本地DNS服务器;本地DNS若无缓存,则迭代查询根域---顶级域--权威DNS,最终返回结果。智能DNS能根据用户源IP判断运营商,返回最有CDN节点IP,提升访问速度。
40.如何添加DNS解析?
临时生效可直接编辑/etc/resolv.conf,添加nameserver IP。但该文件可能被NetworkManager覆盖。永久生效应修改网卡配置文件(/etc/sysconfig/network-scripts/ifcfg-eth0)或使用nmcli明亮。在容器或云环境中,还需要注意DNS配置是否被覆盖。
41.什么是正向代理和反向代理?区别是什么?
正向代理代表客户端访问外部资源,常用于企业内网用户通过代理上网,隐藏客户端真实IP;反向代理代表服务端接收请求,对外统一入口,隐藏后端服务器架构。两者角色相反:正向代理帮客户端,反向代理帮服务端。Nginx常用作反向代理实现负载均衡和安全防护。
42.如何查看某端口是否被占用?
优先使用ss -tunlp|grep :端口号,它比netstat更高效,能直接显示进程PID和名称。也可用losf -i :端口号查看详细连接信息。在排查服务启动失败时,这类命令能快速定位端口冲突问题。
43.如何查看系统中某个进程打开的文件?
使用lsof -p PID可列出该进程打开的所有文件描述符,包括普通文件、套接字、管道等。这对排查“磁盘空间非释放”或“文件句柄泄露”非常有效。例如,若删除日志文件后磁盘仍满,可用此命令确认是否有进程仍写入已删除文件。
44.如何实时监控某个进程的资源占用?
结合多个工具:top -p PID实时查看CPU和内存;iotop -p PID监控磁盘I/O;strace -p PID跟踪系统调用(慎用,性能开销大);对于Java应用,还会用jstat或jstack分析JVM状态。关键是根据问题类型选择合适工具,避免过度监控影响系统。
45.如何查看系统负载?负载高一定CPU高吗?
用uptime或top查看1/5/15分钟平均负载。负载表示可运行或不可中断状态(D状态)的进程总和。负载高不一定CPU高----可能是大量I/O等待(如磁盘慢)、锁竞争或网络阻塞导致进程堆积。需结合iostat、vmstat进一步分析瓶颈所在。
46.如何查看内存使用情况?cached和buffer的区别?
free -m是最直观的命令。其中,buffer用于块设备I/O缓存(如磁盘写缓冲),cached用于文件系统缓存(如读取过的文件)。两者都属于可回收内存,当应用需要更多内存时,内存会自动释放它们。因此,used高不代表内存不足,关键看available列。
47.如何查看磁盘I/O性能?
核心工具是iostat -x 1,重点关注%util(设备利用率)、await(I/O平均等待时间)、svctm(服务时间)。若%util接近100%且await很高,说明磁盘成为瓶颈。还可结合iotop定位具体是哪个进程在大量读写。
48.如何查看网络连接状态?
使用ss -s快速统计各状态连接数;ss -tnlp查看监听端口对应进程;ss -an显示所有连接。相比netstat,ss基于netlink接口,速度更快,更适合高并发环境下的连接排查。
49.TIME_WAIT连接过多怎么办?
TIME_WAIT是正常现象,但过多会占用端口资源。先评估是否合理--短连接高频场景下必然较多。优化方向包括:启用net.ipv4.tcp_tw_reuse;允许服用TIME_WAIT连接;调整net.ipv4.ip_local_port_range;扩大端口范围;根本解法是改用长连接或连接池,减少连接频繁创建或关闭。
50.如何限制某个IP的访问?
可在多层实现:网络层用iptables(iptables -A INPUT -s IP -j DROP);应用层在Nginx用deny IP;数据库层通过授权表限制。生产环境中,在边缘节点(如防火墙或WAF)统一控制,避免分散配置带来运维复杂度。
51.如何防止SSH暴力破解?
采取纵深防御策略:修改默认端口降低扫描概率;禁用root登录;仅允许密钥认证;使用fail2ban自动封禁多次失败IP;配合iptables限流。最关键的是关闭密码登录,从根本上杜绝暴力破解。
52.如何设置定时任务?
使用crontab -e编辑用户级任务,格式为“分 时 日 月 周 命令“。关键注意实现:脚本需用绝对路径 ;环境变量可能与交互式不同,建议再脚本开头source环境;输出重定向到日志便于排查;避免密集任务同时执行造成任务抖动。重要任务还会加锁机制防重复运行。
53.如何查看系统日志?
传统系统用/var/log/messages、/var/log/secure(认证日志);systemd系统使用journalctl,支持按服务(-u nginx)、时间(--since)、优先级过滤。结合grep、awk快速提取关键信息,并配置logrotate,以防日志占用大量磁盘空间。
54.如何排查DNS解析慢的问题?
用dig @114.114.114.114域名测试权威解析速度,排除本地DNS的问题;用nsloopup或host对比不同DNS服务器响应;检查/etc/resolv.conf是否配置了无效或慢速DNS;最后用tcptump抓包分析DNS查询过程是否存在重传或超时。根本原因常常是本地DNS服务器性能差或网络延迟高。
55.HTTP状态码502、503、504区别?
502表示网关错误,上游服务器返回无效响应(如tomcat崩溃);503表示服务不可用,通常是后端主动拒绝;504表示网关超时,上游服务器未再规定时间内响应。排查时,502看后端是否存活,504看后端是否卡死或网络延迟高。
56.如何优化MYSQL性能?
一般从以下几方面入手:硬盘(SSD、足够内存);配合(合理设置innodb_buffer_pool_size、query_cache);SQL(避免select *、添加合适索引、拆分大事务);架构(读写分离、分库分表)。最重要的时开启慢查询日志,用pt-query-digest分析高频低效语句,针对性优化。
57.如何查看MYSQL当前连接数?
登录MYSQL后执行SHOW STATUS LIKE "Threads_connected";查看当前连接数SHOW PROCESSLIST;查看每个连接的具体状态。若连接数接近max_connections上限,需检查应用是否正确释放连接,或考虑引入连接池。
58.如何备份和恢复MYSQL数据库?
小库用mysqldump --single-transaction --master-data=2实现一致性备份;大库用xtrabackup热备,不影响业务。恢复时,先停写,导入数据,再根据binlog增量回放至指定时间点。关键是要定期验证备份可恢复性,否则备份毫无意义。
59.Redis有哪些数据类型?使用场景?
String用于缓存简单键值;Hash存储对象属性;List实现队列或最新消息列表;Set处理去重集合;Sorted Set支持排名。支持类型要结合访问模式----比如用Sorted Set做延时队列,比轮询List更高效。
60.Redis持久化方式有哪些?
RDB是定时快照,文件紧凑、恢复快,但可能丢失最后一次快照后的数据;AOF记录每条写命令,数据更安全,但文件大,恢复慢。生产环境通常两者共用:AOF保证安全性,RDB用于冷备。还可配置AOF重写(rewrite)压缩日志体积。
61.Redis主从复制原理?
Redis主从复制时异步过程。从节点启动后,向主节点发送SYNC或PSYNC(支持部分重同步)命令;主节点生成RDB快照并缓存期间写命令;快照传输后,主节点将缓存的命令发送给从节点重放。此后主节点每执行一个写操作,都会异步转发给所有从节点。该机制保障了数据最终一致性,但存在复制延迟。
62.Redis哨兵模式的作用?
哨兵(sentinel)用于实现Redis高可用。它持续监控主从节点健康状态;当主节点宕机,哨兵通过多数投票机制自动选举新主,并通知从节点切换复制源,同时更新客户端配置。哨兵本身也支持集群部署,避免单点故障。这是中小规模Redis架构中最常用的高可用方案。
63.Redis Cluster模式原理?
Redis Cluster采用去中心化架构,将数据分片到16384个哈希槽中,每个主节点负责一部分槽。客户端可直接与任意节点通信,若请求的key不在当前节点,会返回MOVED重定向指令。Cluster支持主从复制和自动故障转移,无需哨兵。适用于大规模、高吞吐场景,但不支持多key事务跨槽操作。
64.如何防止Redis缓存穿透、击穿、雪崩?
穿透:查询不存在的数据,绕过缓存直击数据库。解决方案:对空结果也缓存(短TTL),或使用布隆过滤波预判是否存在。
击穿:热点key国企瞬间大量涌入。解决方案:设置永不过期,或用互斥锁(如Redis的SETNX)保证单线程重建缓存。
雪崩:大量key同时过期,导致数据库压力骤增。解决方案:设置随机过期时间,避免集中失效。
65.Docker与虚拟机的区别?
Docker时操作系统级虚拟化,容器共享宿主机内核,启动快(秒级)、资源开销小(无Hypervisor层);虚拟机时硬件级虚拟化,每个Vm包含完整OS,隔离性强但启动慢、资源占用大。Docker适合微服务快速部署,VM适合需要强隔离或多操作系统环境。
66.Dockerfile常用指令用哪些?
核心指令包括:FROM指令基础镜像;RUN执行构建命令(每条生成一层);COPY/ADD复制文件(ADD支持解压和URL);WORKDIR设置工作目录;EXPOSE声明端口;CMD/ENTRYPOINT定义容器启动命令。最佳实践时合并RUN减少层数,使用.dockerignore避免无关文件打包。
67.Docker网络模式有哪些?
默认有四种:bridge(容器通过docker0网桥通信,需端口映射对外暴露);host(共享宿主机网络命名空间,性能高但端口冲突风险大);none(无网络,完全隔离);container(共享另一个容器的网络栈)。生产环境用bridge或自定义overlay网络(swarm/k8s场景)。
68.Docker数据持久化方式?
主要有两种:bind mount(将宿主机目录挂载到容器,便于调试但路径依赖强);volume(由Docker管理的存储卷,生命周期独立于容器,推荐用于生产)。此外,还可使用tmpfs存储临时敏感数据。关键原则时:容器应无状态,数据必须外置。
69.kubernetes核心组件及作用?
控制平面包括:apiserver(集群统一入口)、etcd(存储集群状态)、scheduler(调度pod到节点)、controller-manager(维护期望状态)。
工作节点包括:kubelet(管理本机容器)、kube-proxy(实现service网络)。这些组件协同工作,实现自动化部署、扩缩容和自愈。
70.Pod是什么?有哪些类型?
Pod是k8s最小调度单位,包含一个或多个共享网络和存储的容器。分为两类:自主式Pod(直接创建,无控制器管理,故障不自愈);控制器管理的Pod(如Depolyment、Statefulset创建,具备副本控制、滚动更新、自愈能力)。生产环境必须使用后者,确保服务高可用。
71.Depolyment和Statefulset的区别?
Deployment用于无状态应用,Pod名称随机、无固定网络标识,适合Web服务;Statefulset用于有状态应用,Pod具有稳定名称、固定存储和有序启停,适合数据库、Zookeeper等需要身份标识的场景。选择依据是应用是否依赖‘身份’和‘持久化状态’。
72.Service的作用和类型?
Service为Pod提供稳定的网络访问入口,通过标签选择器关联后端Pod。类型包括:ClusterIP(集群内部访问,默认);NodePort(通过节点IP+端口暴漏);LoadBalancer(云平台自动创建LB);ExternalName(映射到外部DNS)。它是K8S服务发现和负载均衡的核心抽象。
73.Ingress是什么吗?与Service的关系?
Ingress是七层HTTP/HTTPS路由规则,定义如何将外部请求转发到不同Service。它本身不提供负载均衡能力,需配合Ingress Controller(如Nginx Ingress)实现。Service负责四层流量分发,Ingress再其之上实现基于域名、路径的七层理由,两者是互补关系。
74.如何排查Pod启动失败?
一般按顺序排查:kubectl describe pod <name>查看事件(Events),常见如镜像拉取失败、资源不足;kubectl logs <log>查看应用日志;如容器反复重启,加-p参数查看前一次日志;检查资源配置(CPU/Memory requests是否超限)、存储挂载是否正确、健康检查探针是否过于严格。
75.K8S如何实现高可用?
控制平面高可用:部署多实例apiserver+etcd集群,前端用负载均衡;工作节点高可用:通过Deployment设置多副本,结合凡亲和性分散部署。etcd数据定期备份,apiserver无状态可水平扩展。整体架构确保任一节点故障不影响整体服务。
76.什么是Helm?作用是什么?
Helm是K8s的包管理工具,类似于apt和yum。它将应用相关的Deployment、Service、ConfigMap等资源打包为Chart,支持版本管理、参数化配置和一键部署。极大简化了复杂应用(如Mysql、Prometheus)在K8s上的安装和升级流程。
77.如何监控K8s集群?
一般方案是Prometheus+Grafana+Alertmanager。Prometheus通过ServiceMonitor自动发现目标,采集节点、Pod、容器指标;Grafana可视化展示;Alertmanager处理告警路由。此外,还会集成日志系统(如EFK)和分布式追踪(如Jaeger),形成可观测性闭环。
78.什么是CI/CD?常用工具有哪些?
CI(持续集成)指代码提交后自动构建、测试;CD(持续交付/部署)指自动发布到测试或生产环境。常用工具链:Gitlab CI/Jenkins(流水线引擎)、Docker(镜像构建)、K8s/Helm(部署)、SonarQube(代码质量)、Nexus(制品仓库)。目标是提升交付效率,降低人为错误。
79.如何实现自动化部署?
设计标准化流水线:代码提交-->触发Jenkins/Gitlab CI-->单元测试-->构建Docker镜像-->推送至Harbor-->更新Helm Chart版本-->K8s滚动升级。关键环节包括:镜像标签与Git Commit ID关联、部署前健康检查、失败自动回滚。所有步骤代码化(Infrastructure as Code),确保可重复、可审计。
80.什么是Devops?运维在其中的角色?
Devops是开发与运维的协作文化与实践,目标是缩短交付周期、提升服务质量。运维角色已从”救火员“转变成”平台工程师“:搭建CI/CD流水线、设计高可用架构、提供监控告警体系、推动自动化、核心价值是赋能开发自主交付,同时保障系统稳定性。
81.如何排查服务器入侵?
一般按照以下几步:隔离:立即断网或限制访问,防止横向扩散;取证:检查异常进程(ps aux)、可疑用户(/etc/passwd)、定时任务(crontab -l)、历史命令(~/.bash_history);溯源:分析日志(/var/log/secure、audit.log),定位入侵入口(如弱密码、未修复漏洞);恢复:重装系统、修复漏洞、加强防护(禁用密码登录、部署WAF)。关键原则:先保护现场,再处理。
82.如何加固Linux系统安全?
从以下几方面加固:
账号安全:禁用root远程登录、删除无用账户、设置强密码策略;
服务最小化:关闭非必要服务(telnet、ftp等);
网络防护:配置iptables,仅开放必要端口,启用fail2ban;
审计监控:开启auditd记录关键操作,部署OSSEC或Wazuh实时告警;
内核参数:调整net.ipv4.conf.all.rp_filter防 IP 欺骗。安全是持续过程,需定期漏洞扫描和合规检查。
83.SSH免密登录原理?如何配置?
基于公钥认证。客户端生成密钥对(ssh-keygen),将公钥(id_rsa.pub)追加到服务端~/.ssh/authorized_keys。登陆时,服务端用公钥加密挑战,客户端用私钥解密并返回,验证通过即免密。配置时需要注意权限:.ssh目录700,authorized_keys文件600,否则SSH会拒绝使用。
84.如何同步两台服务器的文件?
生产环境首选rsync,支持增量同步、压缩传输、断点续传。常用命令:rsync -avz --delete /src user@host:/dst。若需实时同步,可结合inotifywait监控文件变化触发rsync;大规模场景则用分布式文件系统(如GlusterFS)或对象存储方案。关键是要避免全量覆盖,减少带宽消耗。
85.如何查看系统启动了哪些服务?
Centos 6 用chkconfig --list;Centos7+用systemctl list-unit-files --type=service查看所有服务状态,systemctl list-units --type=service --state=active查看已启动服务。还可以通过systemctl is-enabled单独检查某服务是否开机自启。理解服务管理机制有助于优化启动项、提升系统性能。
86.如何查看命令属于哪个RPM包?
使用rpm -f $(which 命令)。例如rpm -qf $(which nginx)可查出 nginx 所属包名。若命令未安装,可用 yum provides */命令在仓库中搜索。这对排查“命令找不到”或“版本冲突”问题非常有用。
87.如何升级内核?
升级内核需谨慎:先备份GRUB配置;通过官方仓库(ELRepo)安装新内核(yum install kernel-ml);更新GRUB默认启动项;重启后验证新内核是否生效(uname -r)。绝不直接替换正在运行的内核。升级前需确认驱动兼容性,避免系统无法启动。
88.如何查看系统版本和内核信息?
cat /etc/os-release或lsb_release -a查看系统版本;uname -r查看内核版本;hostnamectl综合显示主机名、OS、内核等信息。这些命令再编写自动化脚本或提交工单时必不可少,确保环境信息准确。
89.如何设置静态IP?
Centos 7+修改/etc/sysconfig/network-scripts/ifcfg-eth0,设置BOOTPROTO=static,添加PADDR、NETMASK、GATEWAY、DNS1;然后 nmcli con reload并 nmcli con up eth0。也可用 nmtui图形化工具。关键是要确保配置与网络规划一致,避免 IP 冲突。
90.如何查看路由表?
使用ip route show或简写ip r,这是现代Linux推荐方式;传统命令route -n仍可用。关注默认网关(default via)、直连网络(dev eth0)和静态路由。排查网络不通时,路由表是首要检查项。
91.如何测试网络连通性和延迟?
基础连通用ping;端口连通用telnet IP port或nc -zv IP port;路径跟踪用traceroute或mtr(结合 ping 和 traceroute,实时显示各跳延迟和丢包)。对于 HTTPS 服务,还会用 curl -I https://domain测试完整请求链路。
92.如何抓包分析网络问题?
核心工具是tcpdump。如 tcpdump -i eth0 host 192.168.1.100 -w capture.pcap抓取指定主机流量,再用 Wireshark分析。常用过滤条件:port 80 tcp[tcpflags] & tcp-rst != 0(抓 RST 包)。抓包前需明确目标,避免产生海量无用数据。
93.什么是CDN?作用是什么?
CDN(内容分发网络)将静态资源缓存到全球边缘节点,用户就近访问。
作用:降低源站压力;提升访问速度、低于DDOS攻击。运维需配合配置缓存策略(如 Cache-Control)、刷新机制和回源规则,确保内容一致性与性能平衡。
94.什么是WAF?作用是什么?
WAF(Web应用防火墙)工作在应用层,专门防护HTTP/HTTPS流量。可拦截SQL注入,XSS、文件包含等常见Web攻击。部署方式有云 WAF(如阿里云、Cloudflare)和硬件/软件 WAF(如 ModSecurity、雷池 WAF)。它是纵深防御体系中不可或缺的一环。
95.如何实现高可用架构?
高可用核心”冗余+自动切换“。典型方案:
网络层:BGP+Anycast多入口;
负载层:LVS/keepalived双机热备;
应用层:多实例+健康检查;
数据层:主从复制+自动选主(MHA、哨兵等);
存储层:RAID+分布式文件系统。
关键指标是 RTO(恢复时间)和 RPO(数据丢失量),需根据业务容忍度设计。
96.什么是灾备?同城双活和异地多活的区别?
灾备是灾难发生时保障业务连续性的方案。
同城双活:两个数据中心同时对外服务,距离近,延迟低,但无法抵御区域性灾难;
异地多活:多地数据中心均提供完整服务,可抵抗地震、洪水等大范围灾害,但数据同步延迟高,需解决一致性难题。选择取决于业务规模或容灾等级要求。
97.如何做容量规划?
我会基于历史监控数据(CPU、内存、磁盘、带宽)进行趋势预测,结合业务增长模型(如月增 10% 用户)。关键步骤:识别瓶颈资源、预留缓冲(通常 30%)、制定扩容阈值(如 CPU >70% 持续 1 小时)、评估成本效益。容量规划不是一次性工作,需持续迭代。
98.什么是SLA、SLO、SLI?
SLI(Service Level Indicator):服务质量指标,如可用率、延迟;SLO(Service Level Objective):目标值,如“99.9% 可用”;
运维需围绕 SLO 设计监控告警,确保 SLI 达标,从而履行 SLA。这是 SRE 的核心方法论。
99.如何编写高质量的shell脚本?
遵循最佳实践:开头加 set -euo pipefail(遇错退出);变量加引号防空格分割;函数模块化;日志记录关键步骤;参数校验;使用绝对路径;重要操作前加 dry-run 模式。脚本不仅是工具,更是生产代码,需可读、可维护、可测试。
总结:运维一般遵循以下几步:
复现问题:明确现象和边界条件; 查阅文档:官方手册永远是最权威来源; 社区求助:搜索 Stack Overflow、GitHub Issues; 实验验证:在测试环境模拟,逐步排除假设。 同时,记录解决方案,形成团队知识库。运维的本质不是记住所有答案,而是掌握解决问题的方法论。

浙公网安备 33010602011771号