运维工程师面试题库–综合

一、综合面试题

1、什么是运维

运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线与运作的正常,在他运转的过程中,对他进行维护,他集合了网络、系统、数据库、开发、安全、监控于一身的技术。

运维又包括很多种,有DBA运维、网站运维、虚拟化运维、监控运维、游戏运维等等。

总结:开发运维和系统运维给应用运维提供了“工具”和“基础设施”上的支撑。开发运维、应用运维和系统运维他们的工作是环环相扣的。

2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

游戏运营要做的一个事情除了协调工作以外,还需要与各平台沟通,做好开服的时间、开服数、用户导量、活动等计划。

3、现在给你三百台服务器,你怎么对他们进行管理?

管理3百台服务器的方式:

  1. 设定跳板机,使用统一账号登录,便于安全与登录的考量。
  2. 使用salt、ansiable、puppet进行系统的统一调度与配置的统一管理。
  3. 建立简单的服务器的系统、配置、应用的cmdb信息管理。便于查阅每台服务器上的各种信息记录。

4、常用中间件

  • web代理中间件(代理用户请求):nginx、tomcat、apache、hapoxy
  • 消息队列MQ(削峰,高并发排队处理):RABBITMQ、rocketmq、KAFKA、activemq>

Kafka工作在Zookeeper集群之上

5、常用的自动化运维工具有哪些,介绍一下经常用它来完成哪些工作?

Ansible 是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等等功能。

Ansible优点:

  1. 轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;
  2. 批量任务执行可以写成脚本,而且不用分发到远程就可以执行;
  3. 使用python编写,维护更简单;
  4. 支持sudo。

用途:批量执行命令、批量部署、批量修改配置,减少重复性的工作和维护成本。


二、Linux基础

1、Linux 主流的发行版

Redhat、CentOS、Fedora、SuSE、Debian、Ubuntu、FreeBSD 等。

2、Linux 启动过程

  1. 开机BIOS自检,检测出第一个能够引导系统的设备,比如硬盘或者光驱
  2. 读取MBR,MBR引导,运行放在MBR扇区里的启动GRUB引导程序
  3. grub引导菜单(Boot Loader),GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统的设置和路径位置
  4. 加载内核kernel,把内核和镜像文件系统加载到内存中运行
  5. 启动init进程,依据inittab文件设定运行级别
  6. init进程,执行rc.sysinit文件
  7. 启动内核模块,执行不同级别的脚本程序
  8. 执行/etc/rc.d/rc.local
  9. 启动tty,进入系统登陆界面

3、Linux 运行级别

  • 0:关机模式
  • 1:单用户模式<==破解root密码
  • 2:无网络支持的多用户模式
  • 3:有网络支持的多用户模式(文本模式,工作中最常用的模式)
  • 4:保留,未使用
  • 5:有网络支持的X‑windows支持多用户模式(桌面)
  • 6:重新引导系统,即重启

4、Linux 操作系统常见的文件系统有

  • EXT3∶Ext2升级版,带日志功能
  • EXT4∶第4代扩展文件系统
  • XFS∶CentOS7默认文件系统
  • SWAP: 交换文件系统

5、Linux(初始化配置优化)新机安全与优化

5.1、系统最小化安装与开机服务精简

服务器安装系统时,优先选择最小化安装,减少冗余组件、漏洞风险和资源占用。安装完成后,仅保留核心开机自启服务,关闭所有无用服务。

保留核心开机服务(必备)

  • crond:系统定时任务服务
  • sshd:远程连接服务
  • network:网络基础服务
  • rsyslog:系统日志服务
  • sysstat:系统性能监控统计服务

5.2、用户登录与权限最小化配置

5.2.1、登录用户最小化原则

禁止直接使用root用户登录操作系统,日常运维、操作全部使用普通用户账号,最大限度降低root权限泄露、误操作、入侵风险。无特殊业务需求,不新增多余登录用户。

5.2.2、系统权限最小化管控
  • 用户权限最小化:普通用户仅授予业务、运维必需的系统命令权限,禁止开放全部权限
  • 文件目录权限最小化:严格限制系统关键文件、目录权限,禁止普通用户随意创建、修改、删除系统文件
  • sudo提权管控:所有系统管理操作通过sudo授权完成,杜绝root直接登录管理

查看当前用户sudo权限命令

sudo -l

5.3、系统资源限制配置(最大文件数/进程数)

通过 limits.conf 配置系统资源上限,解决高并发场景下文件句柄、进程数耗尽问题,优化服务器稳定性。

编辑资源限制配置文件:

vim /etc/security/limits.conf

在文件末尾添加用户/系统最大文件打开数、最大进程数限制(生产通用配置)。

5.4、SSH远程连接安全加固(核心防护)

修改SSH默认端口、禁止root远程登录、禁止空密码登录,杜绝暴力破解、端口扫描攻击。

编辑SSH配置文件:

vim /etc/ssh/sshd_config

修改/添加以下配置:

# 修改远程连接端口(自定义高位端口,规避默认22端口扫描)
Port 52112
# 禁止空密码用户远程登录
PermitEmptyPasswords no
# 禁止root用户远程SSH登录
PermitRootLogin no

配置完成后重启sshd服务生效。

5.5、关键系统文件锁定与命令隐藏加固

5.5.1、锁定系统核心配置文件

对系统用户、权限、启动核心文件加锁,防止被篡改、删除、恶意修改,加固系统底层安全。需要锁定的文件如下:

  • /etc/passwd 用户信息文件
  • /etc/shadow 用户密码影子文件
  • /etc/group 用户组文件
  • /etc/gshadow 用户组密码文件
  • /etc/inittab 系统启动级别配置文件
5.5.2、隐藏系统防篡改命令

将 chattr、lsattr 防篡改命令改名并迁移目录,防止攻击者利用命令解锁、篡改系统文件,提升服务器安全性。

5.6、系统信息隐藏与登录安全优化

  • 隐藏Linux版本信息:屏蔽系统登录后版本、内核信息展示,避免泄露系统版本漏洞信息
  • 历史记录优化:调整系统命令历史记录保存条数,减少敏感操作日志泄露风险
  • 登录超时配置:设置终端无操作自动超时退出,防止账号挂机被盗用
  • GRUB引导加密:给系统GRUB启动菜单设置密码,防止单机重启篡改系统参数、破解密码

5.7、系统运行级别优化

将服务器运行级别设定为 级别3,纯文本命令行多用户模式,无图形界面,最大限度节省系统资源、减少图形界面漏洞风险,适合服务器生产环境。

运行级别3特性:完全多用户模式、支持NFS服务、控制台命令行登录、资源占用最低。

5.8、系统时间同步配置

配置服务器自动同步互联网标准时间,定时校准系统时间,解决日志时间错乱、业务时间不一致、证书时效异常等问题,保证服务器时间精准统一。

5.9、YUM国内源优化(阿里/网易源)

替换系统默认国外YUM源为国内阿里、网易等高速镜像源,提升软件安装、系统更新速度,解决源超时、下载失败问题。支持本地YUM源配置与卸载,适配内网离线服务器环境。

5.10、AutoFs自动挂载服务优化

开启CentOS 7 AutoFs自动挂载服务,服务特性为按需挂载、闲置卸载:仅当用户访问对应文件系统时自动挂载,无访问时自动释放挂载资源,有效节省服务器硬件资源与网络资源,适合挂载磁盘、NFS共享目录场景。

5.11、SELinux与防火墙策略配置

  • 临时/永久关闭SELinux:避免SELinux权限拦截导致业务异常、端口不通、文件访问失败
  • iptables防火墙适配配置
    • 有公网IP对外服务场景:开启iptables防火墙,配置端口放行、访问策略
    • 高并发、大流量业务服务器:可关闭防火墙,避免转发拦截造成性能瓶颈

5.12、Linux内核参数深度优化(高并发专用)

通过修改 sysctl.conf 内核参数,优化TCP连接、端口复用、连接队列、内存读写、并发承载能力,适配网站、接口、高并发业务场景。

编辑内核配置文件:

vim /etc/sysctl.conf

添加以下全套优化参数:

# TCP连接重试优化
net.ipv4.tcp_syn_retries=1
net.ipv4.tcp_synack_retries=1

# 长连接保活配置
net.ipv4.tcp_keepalive_time=600
net.ipv4.tcp_keepalive_probes=3
net.ipv4.tcp_keepalive_intvl=15
net.ipv4.tcp_retries2=5

# 连接超时与TIME_WAIT优化
net.ipv4.tcp_fin_timeout=2
net.ipv4.tcp_max_tw_buckets=36000
net.ipv4.tcp_tw_recycle=1
net.ipv4.tcp_tw_reuse=1

# 并发队列与连接防护
net.ipv4.tcp_max_orphans=32768
net.ipv4.tcp_syncookies=1
net.ipv4.tcp_max_syn_backlog=16384

# TCP读写内存缓冲区
net.ipv4.tcp_wmem=8192 131072 16777216
net.ipv4.tcp_rmem=32768 131072 16777216
net.ipv4.tcp_mem=786432 1048576 1572864

# 本地端口范围与连接跟踪配置
net.ipv4.ip_local_port_range=1024 65000
net.ipv4.ip_conntrack_max=65536
net.ipv4.netfilter.ip_conntrack_max=65536
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180

# 系统队列最大限制
net.core.somaxconn=16384
net.core.netdev_max_backlog=16384

配置完成后执行以下命令生效:

sysctl -p

5.13、配置总结

以上全套配置覆盖Linux服务器安全加固、资源精简、性能调优、防护加固四大维度,是企业服务器上线标准初始化配置,可有效降低服务器被入侵、攻击、宕机、性能瓶颈风险,适配网站、后端服务、数据库、高并发业务等绝大多数生产场景。

6、shell脚本磁盘使用率检测

#!/bin/bash
#截取IP
IP=`ifconfig eth0 |awk -F " " 'NR==2{print $2}'`
# 定义使用率,并转换为数字
SPACE=`df -Ph |awk '{print int($5)}'`
for i in $SPACE
do
if [ $i -ge 90 ]
then
echo "$IP 的磁盘使用率已经超过了90%,请及时处理"
fi
done

7、cpu 过高怎么解决

  1. 使用top查看哪个进程cpu使用过高。
  2. top -H -p <pid>显示特定进程中的线程,定位高cpu线程。
  3. 判断进程:非业务进程直接kill。
  4. 业务进程:紧急情况申请停机重启;java程序拿到栈信息交给开发排查代码问题。

8、经常使用shell脚本做什么?

  • 重复性操作,一键部署业务服务
  • 日志监控、日志切割,配合crontab定时执行
  • 编写服务启动脚本
  • 系统状态巡检监控

9、常用的查看系统资源状态的命令,作用?

free                     #查看内存、swap
cat /etc/*release        #系统版本
uname -r                 #内核版本
cat /proc/cpuinfo        #cpu信息
sar、vmstat、iostat      #cpu、内存、io统计
top                      #动态进程、cpu、内存负载
uptime、w                #运行时间、登录用户、系统负载
dstat                    #综合系统状态
cat /proc/meminfo        #内存详情
top‑H / ps ‑T            #查看线程

10、tcpdump 抓包工具参数

  • -i:指定监听网卡
  • -s:抓取数据包长度
  • -c:抓包数量,达到自动停止
  • -w:将抓包数据写入文件保存
  • -A:ASCII打印报文
  • -n:域名转IP
  • -nn:域名转IP,端口数字显示
  • -e:打印链路层mac信息
  • -p:非混杂模式
  • -r:读取抓包文件
  • -S:打印TCP绝对序列号

11、杀死僵尸进程

#查看僵尸进程,Z/Z状态
ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'
#批量杀死僵尸进程父进程
ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9

说明:僵尸进程本身无法kill,需要杀死它的父进程。

12、什么是中间件?什么是jdk?

中间件:独立系统软件/服务程序,分布式应用软件借助它在不同技术之间共享资源,运行在操作系统之上,管理计算机资源和网络通讯,用于连接独立系统,实现数据交换。

JDK:Java开发工具包,用于构建Java应用、applet和组件的开发环境。

13、Linux 系统中病毒怎么解决

  1. 优先备份数据后重装系统(最彻底)。
  2. 排查:top/ps aux找到异常进程,定位病毒文件,rm删除;检查crontab计划任务、开机自启项。
  3. 病毒会潜伏,删除文件不能100%清除,高危场景建议重装。

14、手动释放缓存

# /proc 是一个虚拟文件系统,我们可以通过对它的读写操作做为与 kernel 实体间进行通信的一种手段。也就是说可以通过修改/proc 中的文件,来对当前 kernel 的行为做出调整。那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存
echo 1 > /proc/sys/vm/drop_caches #释放 dentries 和 inodes 缓存时使用
echo 2 > /proc/sys/vm/drop_caches #释放页面缓存、dentries 和 inodes 缓存时使用
echo 3 > /proc/sys/vm/drop_caches #清空所有缓存记录,使用前建议保存重要内容

sync先把脏数据落盘,再释放缓存。


三、shell脚本

1、预定义变量

  • $0:脚本/命令名称
  • $1 $2:脚本第1、2参数
  • $#:参数总个数
  • $?:上一条命令返回码,0成功,非0失败
  • $*:全部参数作为一个完整字符串
  • $@:全部参数,分开独立列表

2、基础正则表达式常见元字符(grep、sed、awk)

  • \:转义
  • ^:行开头
  • $:行结尾
  • .:任意单个字符(除换行)
  • *:前面表达式0次或多次
  • [list]:匹配括号中任意一个字符
  • [^list]:匹配不在括号中的字符
  • \{n\}:匹配n次
  • \{n,\}:至少n次
  • \{n,m\}:n‑m次

3、扩展正则表达式元字符(egrep、awk;sed需要‑r)

  • +:前面字符至少1次
  • ?:前面字符0次或者1次
  • ():分组
  • |:或
  • \s:空白
  • \w:字母数字下划线

4、冒泡排序

基本思想:相邻元素两两对比,不符合顺序交换,小元素上浮。双层循环,外层控制轮次,内层相邻比较交换。

5、shell实现1加到100

#!/bin/bash
a=1
sum=0
while [ $a -le 100 ]
do
sum=$[$sum + $a]
let a++
done
echo $sum

6、日志切割脚本(Nginx)

#!/bin/bash
day=$(date -d "-1 day" "+%Y%m%d")
log="/var/log/nginx"
pid="/usr/local/nginx/logs/nginx.pid"
[ -d $log ] || mkdir -p $log
mv /usr/local/nginx/logs/access.log $log/benet.com-access.log-$day
mv /usr/local/nginx/logs/error.log $log/benet.com-error.log-$day
kill -USR1 $(cat $pid)
find $log -mtime +30 -exec rm -rf {} \;

配合crontab定时执行;kill -USR1让nginx重建日志文件。

7、mysql备份脚本

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin
export PATH
dbuser='dbuser'
dbpasswd='dbpasswd'
dbname='dbname'
backtime=`date +%Y%m%d%H%M%S`
logpath='/opt/mysqlbackup/log'
datapath='/opt/mysqlbackup'
echo "备份时间为${backtime},备份数据库表${dbname} 开始" >> ${logpath}/mysqllog.log
for table in $dbname; do
mysqldump -u${dbuser} -p${dbpasswd} --single‑transaction ${table}> ${datapath}/${backtime}.sql 2>> ${logpath}/mysqllog.log;
if [ "$?" == 0 ];then
cd $datapath
tar jcf ${table}${backtime}.tar.bz2 ${backtime}.sql > /dev/null
rm -f ${datapath}/${backtime}.sql
echo "数据库表${dbname} 备份成功!!" >> ${logpath}/mysqllog.log
else
echo "数据库表${dbname} 备份失败!!" >> ${logpath}/mysqllog.log
fi
done

四、网络

1、yum 仓库配置

配置目录:/etc/yum.repos.d/,后缀.repo

[repo‑id]
name=xxx
baseurl=访问地址
enabled=1 #启用仓库
gpgcheck=0 #关闭签名校验

baseurl三种格式:

  1. 本地源:file:///挂载路径
  2. http源:http://xxx
  3. ftp源:ftp://xxx

清理缓存:

yum clean all && yum makecache

2、YUM 服务工作步骤

  1. yum客户端读取repo配置,下载仓库元数据。
  2. 根据元数据解析rpm包依赖关系。
  3. 下载rpm包,自动解决依赖安装;元数据本地缓存,加快下次使用。

3、你用过哪些设备(华为设备还是思科设备)

示例:华为设备,配置静态路由、单臂路由、MSTP、LACP、VRRP、DHCP、ACL、NAT、OSPF、BGP等。

4、TCP 三次握手,四次断开,优缺点,相对于UDP 的差别

TCP:面向连接,可靠;UDP:无连接,不可靠。

三次握手:

  1. 客户端发送SYN报文
  2. 服务端回复SYN+ACK报文
  3. 客户端回复ACK报文;连接建立。>

目的:校验双方收发能力正常。

四次挥手:(全双工,双向分别关闭)

  1. A发送FIN,请求关闭A‑>B方向
  2. B回复ACK确认,此时半关闭,B还能发数据给A
  3. B发送FIN,关闭B‑>A方向
  4. A回复ACK,双向全部断开。

**TCP优点:**可靠,确认、重传、拥塞控制,保证数据完整。
**TCP缺点:**握手开销,速度慢,占用资源,容易被DDOS攻击。

**UDP优点:**无连接,速度快,开销小。
**UDP缺点:**无确认,丢包不可控。

应用场景:

  • TCP:HTTP、HTTPS、FTP、邮件,对可靠性要求高。
  • UDP:语音视频、直播,追求速度允许少量丢包。

5、为什么是四次挥手

TCP全双工通信,两个方向数据流独立,不能一次全部关闭。一方发FIN只是关闭自己发送通道,对方还可以继续发送数据,需要分别关闭两个方向。

6、BGP 有哪几种类型,应用场景

  • EBGP:不同AS自治域之间,外部BGP。收到带本地AS号路由直接丢弃,防跨AS环路。
  • IBGP:同一个AS自治域内部BGP。IBGP学到路由不会转发给其他IBGP邻居;为解决IBGP全连接问题,有路由反射器、联盟。

7、TCP/IP 及其主要协议

四层模型:应用层、传输层、网络层、网络接口层。

  1. 应用层:HTTP、HTTPS、DNS、TFTP、SNMP、Telnet、SMTP。
  2. 传输层:TCP、UDP。
  3. 网络层:IP、ICMP、ARP、RARP。
  4. 网络接口层:帧、以太网协议。

8、OSI 七层模型及其主要协议

层级名称单元代表协议
7应用层数据HTTP、FTP、DNS、SMTP、NFS
6表示层数据加密、JPEG、ASCII
5会话层数据RPC、SQL
4传输层段segmentTCP、UDP、SCTP
3网络层包packetIP、RIP、OSPF、ICMP
2数据链路层帧framePPP、HDLC、ARP
1物理层比特bitRJ45、RS232、网线

9、IP 协议、IP 地址

IPv4共32bit,点分十进制;A/B/C/D/E五类地址。

  • A类:1.0.0.1‑127.255.255.254,大网络。
  • B类:128.1.0.1‑191.255.255.254,中型网络。
  • C类:192.0.1.1‑223.255.255.255,小型局域网。>

D类组播,E类保留实验。

10、简述静态路由和动态路由及其特点

静态路由:管理员手动配置路由条目。适合拓扑简单、变化少的网络;缺点:网络变化要人工改路由,规模大维护成本高。

动态路由:路由协议自动交换路由信息,自动学习拓扑更新路由表;优点:网络故障自动收敛;缺点:协议报文占用带宽,CPU消耗更大。

11、NAT 的几种类型,及其原理?

  • SNAT:源地址转换,内网主机访问外网,替换数据包源IP为公网IP。
  • DNAT:目的地址转换,外网访问公网IP,转换目的IP转发内网服务器。

12、包过滤防火墙和代理应用防火墙的区别

  1. 包过滤防火墙:工作网络层,只检查IP、端口、协议头部,不解析报文内容,速度快。
  2. 代理应用防火墙:工作应用层;代理代替客户端访问外网,可以解析数据包内容,深度过滤;性能开销更大。

13、网站三种发布模式

  1. 蓝绿发布:两套完整环境;新版本部署到绿,验证完成流量切绿;旧版本蓝保留,故障快速回滚。
  2. 灰度发布(金丝雀):部分流量切新版本,小部分用户验证,逐步扩大全量;AB测试属于灰度。
  3. 滚动发布:分批停止旧实例,启动新版本实例,K8s默认更新策略;不需要两套完整资源。

14、VLAN 和VXLAN 的区别

  1. VLAN ID只有12bit,最多4096个;VXLAN 24bit,可达1600万。
  2. VLAN二层标签,依赖交换机支持VLAN;VXLAN是UDP隧道(4789端口),可以基于三层网络构建二层虚拟网络。
  3. VXLAN有VTEP端点设备做封装解封装。

15、HTTP 版本(0.9、1.0、1.1、2.0)

  1. HTTP0.9:废弃,仅GET,无请求头。
  2. HTTP1.0:指定版本号,无长连接,每次请求新建TCP。
  3. HTTP1.1:默认持久连接keep‑alive;管道化请求;虚拟主机支持。
  4. HTTP2.0:二进制帧多路复用,一个TCP连接并发多个请求;头部压缩;服务端推送。

五、基础服务

1、Linux 中常见的系统服务和作用

  • chrony/ntp:时间同步
  • DHCP:自动分配IP,UDP67
  • DNS:域名解析,UDP53
  • NFS:网络文件共享,依赖RPC
  • postfix:邮件服务
  • rsync:远程同步备份
  • VPN:虚拟专用网络

2、FTP 主要的工作模式(以服务端视角)

  1. 主动模式PORT:服务端20端口主动向客户端随机高位端口建立数据连接;21端口控制连接。
  2. 被动模式PASV:客户端主动连接服务端随机端口做数据传输;防火墙环境推荐被动模式。

3、FTP 两种登录方式以及两种传输模式

登录方式

  1. 匿名登录:用户名anonymous,任意邮箱密码,权限有限。
  2. 授权登录:系统账号密码,可以上传下载。

传输模式

  1. ASCII模式:文本文件。
  2. binary二进制模式:图片、压缩包、程序,绝大多数文件使用binary。

4、DHCP 的流程

  1. DISCOVER:客户端广播,0.0.0.0发往255.255.255.255,寻找DHCP服务器。
  2. OFFER:DHCP服务器回复广播,提供候选IP地址。
  3. REQUEST:客户端广播,确认选用收到的IP租约。
  4. ACK:服务器广播确认,分配IP、网关、DNS、租期;客户端ARP检测IP冲突。

5、DNS 查询可能需要哪些过程?

  1. 查询本地hosts文件。
  2. 查询本机DNS缓存。
  3. 请求配置的本地DNS服务器。
  4. DNS服务器查询自身缓存,命中直接返回。
  5. 未命中,递归查询,依次访问根域名服务器、顶级域、二级域,直到拿到IP返回。

6、DNS 常见的服务器角色类型?

  • 主域名服务器:维护本域权威数据。
  • 从域名服务器:同步主服务器数据,做备份分担查询压力。
  • 缓存域名服务器:只做缓存,没有权威域数据。

7、简述NFS 文件系统及其作用?

网络文件系统,用于Linux/Unix机器之间共享目录,客户端可以挂载远程NFS目录,像本地磁盘一样读写;底层依赖RPC协议。

8、Samba 作用及其使用场景?

实现SMB协议,实现Windows与Linux之间文件、打印机资源共享

9、VPN 概念以及常见的类型?

VPN:在公网上建立加密逻辑私有隧道,数据加密传输。
常见:IPSec VPN、PPTP VPN、L2TP VPN、SSL VPN。


六、磁盘管理

1、LVM 概念及其特点

  • PV物理卷:硬盘/分区,划分为PE最小单元。
  • VG卷组:多个PV组成大存储池。
  • LV逻辑卷:从VG划分出来,格式化挂载使用。

特点:可以在线扩容,部分场景支持缩减;灵活管理磁盘空间,不受物理分区大小限制。

2、RAID0、RAID1、RAID5 原理及特点、使用场景?

  • RAID0:条带,多盘并行读写;容量叠加,性能高;无冗余,坏盘全部数据丢失;适合临时高速存储。
  • RAID1:镜像,两块盘互为副本;读性能好,冗余高;磁盘利用率50%;重要业务,追求高可靠。
  • RAID5:至少3块盘;分布式奇偶校验;一块盘损坏可恢复;兼顾性能和冗余;磁盘利用率(n‑1)/n

冗余:RAID1 > RAID5 > RAID0;性能RAID0 > RAID5 > RAID1。

3、iSCSI 存储及其优点?

iSCSI是IP网络上跑SCSI协议;通过以太网访问块存储设备。
优点:不需要专用FC光纤网络,普通局域网即可实现SAN存储;支持异地存储、灾难恢复。

4、文件存储、块存储、对象存储?

  1. 块存储:裸块设备,格式化文件系统后挂载;如硬盘、LVM、iSCSI。适合数据库。
  2. 文件存储:目录层级文件系统,NFS/Samba;直接挂载读写文件,适合文档共享。
  3. 对象存储:扁平化存储,通过API访问,每个对象带唯一key和元数据;适合图片视频大文件,云存储。

5、RAID 最底层原理用到什么技术

纠删码。Ceph分布式存储大量使用纠删码实现数据冗余。


七、虚拟平台

1、什么是云计算及其基本特征?

云计算按使用量付费;将计算、存储、网络资源池化,按需提供服务。
特征:自助按需服务、广泛网络访问、资源池化、快速弹性伸缩、按用量计费。

2、简述云计算常见部署模式?

  • 公有云:对外开放,阿里云、腾讯云。
  • 私有云:企业内部部署,仅供内部使用。
  • 混合云:公有云+私有云组合。
  • 社区云:多个组织共享一套云。

3、简述云计算三种服务模式?

  • IaaS 基础设施即服务:虚拟机、存储、网络。
  • PaaS 平台即服务:数据库、中间件、运行环境,不用管底层虚拟机。
  • SaaS 软件即服务:直接使用软件应用。

4、云计算和虚拟化的区别?

虚拟化是底层技术,实现资源隔离复用;云计算是业务模式,把资源作为服务对外交付。虚拟化是云计算重要技术,但不等于云计算。

5、私有云相对公有云有哪些优势?

数据本地存放安全性更高;完全自主可控;满足合规;不需要公网带宽,内网访问速度快。

6、介绍下你对虚拟化的理解、你用过哪些虚拟化产品

虚拟化:一台物理机虚拟多台逻辑计算机,隔离运行不同操作系统,提升硬件利用率。
产品:VMware Workstation、VirtualBox、KVM、ENSP。

7、什么是KVM

KVM是Linux内核虚拟化模块,让Linux成为Hypervisor;开源,硬件CPU需要开启Intel‑VT/AMD‑V虚拟化支持。

8、KVM 虛拟化的工作流程

  1. 用户态QEMU通过ioctl调用KVM内核模块。
  2. 内核KVM创建虚拟CPU、虚拟内存,进入客户机模式运行虚拟机操作系统。
  3. 客户机异常退出到内核模式处理;IO操作交给用户态QEMU处理。

八、Ansible

1、简述Ansible 及其优势

Ansible:基于Python开源自动化运维工具,批量配置、部署、执行命令。

优势:

  1. Agentless无客户端,只需要SSH,远程机器不用装agent。
  2. playbook使用YAML,可读性强。
  3. 大部分模块具备幂等性,重复执行不会破坏环境。
  4. 支持动态inventory;支持Windows、网络设备;容易集成其他系统。

2、Ansible 工作原理及其特性

无Agent,主控节点执行ad‑hoc/playbook,拆解任务,通过ssh传输临时脚本到远程机器执行,执行完成自动删除临时文件。
幂等性:多次执行结果一致,已经是目标状态就不做改动。

3、Ansible 中如何保存敏感数据

ansible‑vault加密yml文件,保存密码密钥等敏感信息。

4、简述Ansible 适合的场景

配置管理、应用部署、机器初始化交付、持续交付流水线、安全合规巡检、编排多组件服务。

5、Ansible Inventory(主机清单),其中变量

inventory保存被管理主机,可以分组;分静态文件、动态脚本生成。
常用变量:
ansible_host主机IP,ansible_portssh端口,ansible_user登录用户,ansible_password密码,ansible_become是否sudo提权。

6、Ansible 配置文件优先级

  1. $ANSIBLE_CONFIG环境变量(最高)
  2. 当前目录./ansible.cfg
  3. 用户家目录~/.ansible.cfg
  4. /etc/ansible/ansible.cfg全局默认(最低)

只读取优先级最高的一份配置,不合并。

7、Ansible ad‑hoc 命令

临时一次性执行命令,不需要写playbook;适合快速简单操作,例如批量查看负载。

8、Ansible ad‑hoc 和playbook 的区别?

  • ad‑hoc:单次简单任务,命令行执行,无法保存流程;适合临时操作。
  • playbook:YAML编写,保存完整多步骤流程,可重复执行,适合复杂部署、配置管理。

9、简述ansible 变量?

分3个作用域

  1. global全局:命令行、ansible.cfg。
  2. play范围:play内vars定义。
  3. host主机范围:inventory变量、facts、register注册变量。

10、ansible 如何实现任务的循环?

loop实现简单循环;with_nested实现嵌套循环。

11、简述ansible hanlder?

handler处理器:只有task触发notify通知的时候才会运行;play所有普通task结束后统一执行一次;一般用于配置变更后重启/重载服务。

12、简述ansible Block?

  • block:主执行任务块。
  • rescue:block失败时执行的救援任务。
  • always:无论成功失败一定执行。

实现异常捕获,类似脚本try‑catch。

13、简述ansible 如何处理play 错误的?

默认一个task失败,直接终止该主机后续所有任务。
可以使用ignore_errors: yes忽略错误继续执行。

14、简述ansible 角色role?

把playbook拆分成标准化目录结构:tasks、handlers、vars、defaults、files、templates、meta;实现剧本复用,便于大型项目管理。

15、简述Ansible Galaxy?

公开角色仓库,社区编写好的ansible角色,可以直接下载复用。

16、Ansible 如何控制任务的并行执行?

forks设置并发数量;serial控制分批执行,用于滚动升级,减少同时操作机器数量。

17、简述ansible 排障

  1. 开启ansible日志查看输出。
  2. ‑‑syntax‑check检查yaml语法。
  3. ‑‑check模拟运行,不实际改动机器。
  4. debug模块打印变量调试。

18、ansible 常用模块

  1. command:执行命令,不支持管道重定向。
  2. shell:执行shell,支持管道重定向。
  3. cron:定时任务。
  4. user/group:用户组管理。
  5. copy:拷贝文件。
  6. file:设置文件权限属性。
  7. yum:软件包管理。
  8. service/systemd:服务启停。
  9. script:执行本地脚本。
  10. setup:收集远程主机facts系统信息。
  11. ping:连通性测试。

19、playbooks 组成

Tasks任务列表、Variables变量、Templates模板、Handlers处理器、Roles角色。

20、playbooks 常用模块变量

  • vars定义变量。
  • when条件判断。
  • loop循环迭代。
  • templatejinja2模板渲染配置文件。
  • tags标签,可指定只运行部分task。

21、Roles 模块

标准目录结构:

  • tasks/main.yml:任务
  • handlers/main.yml:处理器
  • vars/main.yml:普通变量
  • defaults/main.yml:默认变量
  • files:静态文件
  • templates:jinja2模板
  • meta/main.yml:角色依赖声明。

九、Ceph、GFS

1、简述Ceph 的优势及其特点?

  1. CRUSH算法:不用集中元数据服务器,数据直接计算存储位置,水平扩展。
  2. 无单点故障,多副本冗余,故障自动修复。
  3. 统一存储:同时支持对象存储、块存储RBD、文件存储CephFS。
  4. 性能容量随节点数量线性增长。

2、Ceph 存储体系架构?

RADOS底层对象存储核心,由Monitor + OSD组成。
上层接口:

  1. RBD:块存储,给虚拟机云主机用。
  2. RGW:对象存储,兼容S3/Swift API。
  3. CephFS:POSIX文件系统。
  • Monitor:维护集群状态图,保存集群元数据。
  • OSD:真正存储数据磁盘,负责复制、恢复、心跳上报。

3、Ceph Pool 有几种类型?

Pool是逻辑存储池,存放对象;池内划分PG放置组;CRUSH把对象映射到PG,PG映射到一组OSD。副本池、纠删码EC池。

4、简述Ceph 节点的角色?

  1. Monitor:集群状态监控,保存OSD、PG、CRUSH映射表;至少3个实现高可用。
  2. OSD:负责数据保存,数据复制、恢复、心跳上报。
  3. MDS:CephFS元数据服务,块存储、对象存储不使用MDS。

5、Ceph 的适应场景?

  1. RBD块存储:云虚拟机磁盘、数据库块设备。
  2. RGW对象存储:图片视频归档,兼容S3对象API。
  3. CephFS文件存储:PB级大文件共享。

Librados库可以给程序直接调用底层对象存储接口。


十、Nginx、Apache、Tomcat

1、你知道的web 服务有哪些

nginx、apache、IIS、tomcat、lighttpd、weblogic。

2、访问一个网站的流程

  1. 浏览器输入域名回车,查找hosts、DNS解析域名得到IP。
  2. TCP三次握手建立连接。
  3. HTTP请求发送给web服务器。
  4. 服务器返回页面数据。
  5. 浏览器渲染页面,四次挥手断开连接。

3、Nginx 配置文件nginx.conf

分为五大块:

  1. 全局块:worker进程数、pid路径、用户。
  2. events块:连接模型,单进程最大连接数。
  3. http块:http通用配置,mime‑type,gzip,日志,可包含多个server。
  4. server块:虚拟主机,监听端口、域名。
  5. location块:URI匹配,页面代理、转发。
worker_processes  1;
events {
    worker_connections 1024;
}
http {
    include mime.types;
    default_type application/octet‑stream;
    sendfile on;
    server {
        listen 80;
        server_name localhost;
        location / {
            root html;
            index index.html index.htm;
        }
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root html;
        }
    }
}

4、Nginx 各个版本的区别

  • Mainline主线开发版:新功能,不稳定。
  • Stable稳定版:生产环境使用。
  • Legacy旧稳定版:老版本维护。

5、Nginx,特点,优缺点,为什么性能高

优点

  1. 事件驱动epoll异步非阻塞模型,高并发。
  2. 内存占用低,支持热重载配置。
  3. 可做web服务、反向代理、负载均衡、静态缓存。
  4. 模块丰富,配置简洁。

缺点
对动态脚本处理弱,一般搭配后端tomcat/php‑fpm。

性能高核心:epoll事件驱动,异步非阻塞,无多进程上下文频繁切换。

6、Nginx 和Apache 的差异?

  1. Nginx事件驱动模型;Apache多进程/多线程模型。
  2. Nginx内存消耗小,并发能力更强;Apache资源消耗更大。
  3. Nginx支持热配置重载;Apache不支持热部署。
  4. Nginx反向代理、静态文件性能强;Apache动态处理、htaccess灵活。

7、Nginx 主要应用的场景?

  1. 静态web网站服务器。
  2. 虚拟主机,一台机器多个域名网站。
  3. 反向代理+负载均衡,转发请求给后端tomcat。
  4. API网关,限流、访问控制。

8、Nginx 常用的命令

nginx                    #启动
nginx ‑s stop            #快速停止
nginx ‑s quit            #优雅停止
nginx ‑s reload          #平滑重载配置
nginx ‑t                 #检查配置语法
nginx ‑v                 #查看版本
nginx ‑c /xxx/nginx.conf #指定配置文件启动

9、Nginx 支持哪些访问控制方式?

  1. IP访问控制:ngx_http_access_module allow deny。
  2. 用户密码认证:ngx_http_auth_basic_module
  3. 请求限流:limit_req_module限制请求速率;limit_conn_module限制并发连接。
  4. 带宽限速:限制客户端下载速率。

10、Nginx 常用状态码

  • 200 请求成功
  • 301永久重定向,302临时重定向
  • 304资源未修改,走浏览器缓存
  • 400错误请求;401未认证;403禁止访问;404页面不存在;405方法不允许
  • 500服务器内部错误;502网关错误;503服务不可用;504网关超时

11、Nginx 优化

  1. 进程优化:worker_processesworker_connections
  2. 安全:隐藏版本号server_tokens off;,修改运行用户。
  3. 开启gzip压缩。
  4. expires静态资源缓存时间。
  5. 动静分离,静态nginx直接返回,动态转发后端。
  6. 内核TCP参数调优。
  7. 日志切割。
  8. 限流防攻击。

12、Nginx 的常用模块有哪些

ngx_http_core_module核心模块;ngx_http_access_moduleIP访问;ngx_http_gzip_module压缩;ngx_http_fastcgi_modulengx_http_proxy_module代理;ngx_http_upstream_module负载均衡;ngx_http_rewrite_module重写;ngx_http_limit_conn_modulengx_http_limit_req_module限流;ngx_http_auth_basic_module账号密码认证;ngx_http_ssl_modulehttps;ngx_http_stub_status_module状态监控。

13、Nginx 中location 的规则

匹配优先级(从高到低):

  1. = 精确完全匹配。
  2. ^~前缀匹配,匹配成功不再走正则。
  3. ~区分大小写正则、~*不区分大小写正则。
  4. 普通前缀匹配。
  5. /通用兜底匹配。

14、Nginx 缓存及其作用

proxy_cache缓存后端返回的响应;缓存图片css/js静态资源;减少后端服务压力,提升访问速度。

15、Nginx 负载均衡(反向代理)通过什么方式实现后端RS 的健康检查?

  1. 原生upstream被动健康检查:max_fails失败次数,fail_timeout故障探测时间;只有请求转发失败才标记故障。
  2. 第三方模块:nginx‑upstream‑check‑module主动健康检查。

16、Nginx 重定向及其使用的场景?

rewrite重定向,跳转url。
场景:域名变更跳转、伪静态、url规范化、防盗链跳转。

17、Nginx 301 和302 重定向及其区别?

  • 301永久重定向:资源永久迁移;浏览器会缓存跳转地址,搜索引擎更新索引。
  • 302临时重定向:临时跳转,资源还在原地址,浏览器不缓存原地址。

18、Nginx 防盗链配置

利用valid_referers校验http referer来源,非法来源返回403或者跳转图片。

location ~* \.(jpg|gif|png|jpeg)$ {
    valid_referers none blocked *.benet.com benet.com;
    if ($invalid_referer) {
        return 403;
    }
}

19、Nginx 地址重写、地址转发、反向代理?

  • 地址重写(redirect):返回3xx,浏览器地址栏改变,两次http请求。
  • 地址转发(proxy转发):nginx内部转发,浏览器地址不变,一次请求。
  • 反向代理:用户访问nginx,nginx代理请求后端服务器,用户感知不到后端。

20、Nginx 高可用的常见方案?

Keepalived+Nginx,利用VRRP实现VIP虚拟IP漂移,主备切换。Heartbeat也可以,现在生产多用keepalived。

21、简述SSL 和HTTPS?

SSL/TLS为传输加密协议;HTTPS=HTTP+TLS;对传输报文加密,身份认证,防止中间人窃听篡改。443端口。

22、Nginx 的session 不同步怎么办

  1. ip_hash负载均衡策略,同一个IP固定访问一台后端;缺点内网代理场景负载不均。
  2. 推荐后端session共享:Redis存储session,所有tomcat统一读取redis。

23、反向代理、正向代理解释和区别

  • 正向代理:配置在客户端;代理客户端访问外网;翻墙代理就是正向代理;服务端不知道真实客户端IP。
  • 反向代理:配置在服务端;用户访问代理服务器,代理转发请求后端业务服务器;用户不知道后端真实机器。

24、Nginx 反向代理有哪些实现方式,区别,配置

  • 七层代理(http块内):工作http协议,可以解析url、header;用于web业务。
  • 四层代理(stream块,和http同级):tcp四层转发,不解析http;可转发mysql、redis、tcp业务。

25、Nginx 反向代理如何实现会话保持

  1. ip_hash:按客户端ip哈希绑定后端。
  2. sticky模块:cookie会话粘性,同一个客户端cookie分配同一个后端。

26、Nginx 虚拟主机怎么配置

  1. 基于域名(最常用):server_name区分。
  2. 基于端口:listen不同端口。
  3. 基于IP:服务器绑定多个IP,listen指定IP。

27、Squid、Varnish、Nginx 三个缓存服务器区别

  • Nginx:附带缓存功能,主要web代理;缓存能力弱。
  • Squid:老牌专业缓存代理。
  • Varnish:高性能内存缓存,性能强,管理端口批量清理缓存,大量静态缓存场景优先Varnish。

28、负载均衡有哪些实现方式

硬件负载均衡F5;DNS负载均衡;HTTP重定向负载均衡;反向代理七层负载;IP层LVS四层负载。

29、负载均衡的作用,意义

  1. 流量分发,分摊多台服务器压力,提升并发。
  2. 故障摘除,后端宕机不再转发请求。
  3. 故障恢复,节点恢复自动加入集群。
  4. 提升业务整体可用性。

30、负载均衡的原理

调度器接收用户请求,通过调度算法转发给后端真实服务器;返回结果回复用户。后端多台机器对外统一入口。

31、Nginx 负载均衡用到哪些模块,优势

ngx_http_upstream_module定义后端服务器组,proxy_module转发请求。
优势:高并发、内存占用小、配置简单、成本低、内置被动健康检查。

32、Nginx 负载均衡主要的均衡机制(策略)

  1. 轮询rr:默认,依次分配请求,故障自动剔除。
  2. weight权重:性能好机器设置更高权重,分配更多流量。
  3. ip_hash:ip哈希,解决session问题。
  4. fair第三方:后端响应速度优先分配。
  5. url_hash第三方:url哈希,缓存场景。

33、Nginx 的负载均衡调度算法有哪些

rr轮询,wrr加权轮询,least_conn最少连接,ip_hash,fair,url_hash。

34、Nginx 如何实现四层负载

编译开启‑‑with‑stream模块,写stream配置块,和http块同级。商业nginx支持动态后端;开源nginx需要第三方模块实现动态upstream。

35、Tomcat 默认情况使用哪些端口

8080 http访问端口;8005 shutdown管理端口;8009 AJP协议端口。

36、Tomcat 缺省端口怎么修改

修改conf/server.xml,修改connector标签port属性。

37、Tomcat 的工作模式

  1. 独立servlet容器,内置web服务。
  2. 进程内容器:作为web服务器插件,jvm运行在web服务器进程内部。
  3. 进程外容器:独立jvm进程,web服务器通过AJP通信转发请求。

38、怎么监控Tomcat 的内存使用情况

jdk自带jconsolejvisualvm,查看堆内存、线程、GC情况。

39、Tomcat 优化

maxThreads最大线程数;minSpareThreads最小空闲线程;URIEncoding编码;connectionTimeout超时;acceptCount请求排队队列;开启gzip压缩;enableLookups="false"关闭dns反查。


十一、LVS、HAProxy、Keepalived

1、LVS 由哪两部分组成的?

  1. ipvs:内核模块,真正实现负载均衡调度。
  2. ipvsadm:用户空间工具,编写调度规则。

2、LVS、Nginx、HAproxy 的区别

  1. LVS四层负载均衡,内核态,性能最高;不能解析http;只转发包。
  2. Nginx七层,也支持四层;http处理强;健康检查是被动检查。
  3. HAProxy同时支持四层七层;健康检查丰富,主动检测;性能介于LVS和Nginx之间。

性能排序 LVS > HAProxy > Nginx。

3、LVS、Nginx、HAproxy 各自优缺点

LVS优点
四层内核转发,性能极强;流量不经过调度器,无瓶颈;几乎支持所有TCP/UDP业务。
缺点:不能处理七层http;配置复杂;DR模式需要同网段。

Nginx优点:配置简单,web七层功能强大,rewrite、gzip。
缺点:只擅长http;健康检查被动。

HAProxy优点:四层七层都支持;丰富健康检查、cookie会话保持;强大ACL访问控制。
缺点:七层性能低于LVS。

4、LVS 相关的术语有哪些

  • DS Director Server:负载均衡调度器。
  • RS Real Server:后端真实业务服务器。
  • VIP Virtual IP:对外用户访问的虚拟IP。
  • DIP:调度器本机内网IP。
  • RIP:后端真实服务器IP。
  • CIP:客户端用户IP。

5、LVS 的三种工作模式(负载策略)原理及优缺点

  1. NAT模式 VS‑NAT
    请求和响应流量全部经过DS调度器;RS可以内网IP;调度器容易成为性能瓶颈。
  2. DR模式 VS‑DR(生产最常用)
    调度器只修改数据包目标MAC地址,转发给RS;RS响应数据包直接返回客户端,不经过调度器。要求DS和RS同一个局域网。性能极高,无调度器带宽瓶颈。
  3. TUN隧道模式 VS‑TUN
    IP隧道封装;RS可以跨网段、跨机房;每个RS需要独立公网IP;封装报文带来额外开销。

6、生产环境中LVS 使用哪种模式,以及原因?

优先DR模式,响应包不走调度器,调度器不会成为网络瓶颈,性能最好;大多数机房同网段环境。

7、谈谈你对LVS 的理解

LVS是Linux虚拟服务器集群;IP层负载均衡。架构三层:调度器Director、RealServer后端服务器池、共享存储。调度器把用户请求分发给多台RS,对外统一VIP,提高并发和可用性。

8、LVS 调度算法

静态调度
rr轮询;wrr加权轮询;sh源地址哈希;dh目标地址哈希。
动态调度
lc最小连接;wlc加权最小连接;lblc基于本地最小连接。

9、Keepalived

Keepalived基于VRRP协议,实现虚拟IP主备漂移,解决单点故障。
组件:core主进程;check健康检查;vrrp子进程实现VRRP协议。
nopreempt非抢占模式:主机故障恢复后,不会抢回master角色,避免业务抖动。

10、脑裂的原因,如何解决

脑裂:高可用集群心跳链路断开,两个节点都认为对方故障,双方争抢VIP和共享存储,导致业务错乱,数据损坏。

原因
心跳网线故障;防火墙阻断心跳报文;网卡故障;配置错误。

解决方案

  1. 多条心跳链路冗余。
  2. 防火墙放行VRRP/心跳报文。
  3. 监控告警脑裂事件。
  4. STONITH设备隔离故障节点;第三方仲裁。

11、HAProxy 的主要特性

支持四层七层;多种负载均衡算法;ACL访问控制;会话粘性cookie;web状态统计页面;丰富健康检查;RDP、TCP各类协议支持;日志详细。

12、HAProxy 常用的几种负载均衡策略

roundrobin轮询;static‑rr加权轮询;leastconn最少连接;source源IP哈希;uriurl_paramhdr(name)rdp‑cookie(name)


十二、数据库(Redis、MySQL、MongoDB)

1、NoSQL 数据库和SQL 数据库的区别?

对比项SQL(关系型)NoSQL(非关系型)
存储结构二维表,行、列,结构化数据键值、文档、图,动态非结构化
扩展方式纵向扩展(升级服务器硬件)横向扩展,多节点集群
事务完整ACID,强事务支持遵循BASE,最终一致性,事务弱
查询语言标准SQL无统一查询语法
数据一致性强一致性CAP三选二,多为最终一致性
  • SQL:预先定义表结构schema,修改字段成本高;适合业务逻辑复杂、强事务场景。
  • NoSQL:无固定schema,灵活,适合海量高并发、数据结构多变场景。

2、NoSQL 数据库和SQL 数据库的各自主要代表?

SQL关系库:MySQL、MariaDB、Oracle、PostgreSQL、SQL Server、SQLite
NoSQL非关系库:Redis(KV)、MongoDB(文档)、Memcached、HBase(列存储)

3、非关系型数据库的典型产品、特点及应用场景?

MongoDB(文档数据库)

  • 特点:面向BSON文档;schema自由无固定表结构;支持索引;支持分片集群,水平扩展。
  • 场景:APP业务数据、内容管理、海量非结构化日志。

Redis(KV内存数据库)

  • 特点:内存为主,高性能;多数据结构;支持持久化;集群高可用。
  • 场景:缓存、分布式锁、计数器、排行榜。

SQLite

  • 特点:嵌入式,零服务进程,单文件数据库。
  • 场景:移动端、单机小型本地程序。

4、Mysql 5.6 与5.7 区别

  1. 初始化方式
    • MySQL5.6:scripts/mysql_install_db初始化
    • MySQL5.7:使用bin/mysqld --initialize初始化,自动生成root临时密码
  2. 5.7默认开启密码过期策略;支持json字段;增强性能、优化子查询;online DDL增强;默认InnoDB;增加sys系统库。

5、MySQL 中drop、delete 和truncate 删除数据区别?

  1. delete:DML语句,逐行删除数据;会记录binlog日志,支持事务回滚;不会重置自增主键;可以带where条件删除部分数据。
  2. truncate:DDL语句,清空整张表,重建表结构;不记录行日志,不可回滚;重置自增ID;速度快;不能加where。
  3. drop:DDL语句,直接删除整张表(表结构+数据+索引全部删除),释放磁盘空间。

删除速度:drop > truncate > delete
使用建议:删部分数据用delete;只清数据保留表结构用truncate;彻底不要这张表用drop

6、MySQL 索引及类型(加快查询速度)

索引相当于书的目录,通过索引快速定位行,避免全表扫描,提升查询速度。
优点:加快select查询、排序、分组;表连接速度提升;唯一索引保证数据唯一性。
缺点:占用磁盘;增删改(DML)会维护索引,降低写入性能。

索引类型

  1. 普通索引:基础索引,无限制。
  2. 唯一索引unique:索引列值不能重复,允许NULL。
  3. 主键索引primary key:特殊唯一索引,不允许NULL,一张表只能1个主键。
  4. 联合索引(复合索引):多个字段建立索引,遵循最左前缀匹配原则
  5. 全文索引fulltext:文本内容检索。

建索引原则

  1. where、join条件字段适合建索引;
  2. 区分度低字段(如性别)不要建索引;
  3. 频繁更新字段少建索引;
  4. 小字段建索引,超长文本避免普通索引。
show index from table_name\G; --查看索引
drop index 索引名 on 表名; --删除索引

7、MySQL 查询表中多少行到多少行

limit实现分页

select * from test limit 2; --读取前2行
select * from test limit 2,3; --跳过前2行,读取之后3行
select count(*) from test; --统计表总行数

8、MySQL 中事务,ACID 特点、之间的隔离

事务:一组DML操作,要么全部执行成功,要么全部回滚失败。
ACID四大特性

  1. 原子性Atomicity:事务不可分割,全部成功/全部失败回滚。
  2. 一致性Consistency:事务前后数据完整性约束不被破坏。
  3. 隔离性Isolation:多个并发事务之间互相隔离。
  4. 持久性Durability:事务提交后修改永久保存,宕机数据不丢失。

4种事务隔离级别(InnoDB)

  1. Read Uncommitted(读未提交):可以读到其他事务未提交数据,出现脏读。
  2. Read Committed(读已提交):只能读取已提交数据,会出现不可重复读;Oracle默认。
  3. Repeatable Read(可重复读)【MySQL InnoDB默认】:同一个事务内多次读取结果一致;会出现幻读。
  4. Serializable(串行化):最高隔离级别,完全串行,性能差,避免幻读。

隔离级别越高,并发性能越低。

show global variables like '%tx_isolation%'; --查看隔离级别
set global transaction isolation level read committed; --修改全局隔离级别

9、MySQL 忘记root 密码如何找回

  1. 修改my.cnf,[mysqld]添加 skip‑grant‑tables,跳过权限校验;重启MySQL服务。
  2. 直接登录mysql,无需密码:mysql -uroot
  3. 修改root密码
use mysql;
update user set authentication_string=password('新密码') where user='root';
flush privileges;
  1. 删除配置skip‑grant‑tables,重启数据库,使用新密码登录。

10、MySQL 中InnoDB 和MyISAM 引擎各自特点和差异,企业该如何选

对比项MyISAMInnoDB
事务❌不支持✅完整支持ACID事务
锁机制表级锁行级锁(索引生效)
MVCC多版本不支持支持
外键不支持支持
崩溃恢复崩溃安全恢复
count(*)存储总行数,count很快扫描全表统计count(*)
文件frm、MYD、MYIfrm、ibd

适用场景

  • MyISAM:读多写少,无事务需求;老项目。
  • InnoDB(MySQL5.5+默认):业务系统,高并发读写、需要事务,互联网业务优先选InnoDB。

注意:InnoDB不走索引的update会退化成表锁。

11、加强MySQL 安全

  1. 禁止公网直接访问数据库,限制登录来源IP(bind‑address)。
  2. 删除匿名账号,删除test测试库。
  3. 禁止local‑infile防止文件读取漏洞。
  4. 最小权限分配数据库账号,不给多余权限。
  5. 定期备份数据库。
  6. 禁用.mysql_history,清除命令历史记录。

12、Binlog 工作模式有哪些?各什么特点,企业如何选择?

binlog二进制日志,记录数据库所有数据变更,用于主从复制、数据时间点恢复。

  1. statement(语句模式):记录执行的SQL语句。体积小;部分函数、触发器场景会主从数据不一致。
  2. row(行模式):记录每一行数据变更;数据一致性最高;日志文件体积大IO压力高。
  3. mixed(混合模式):默认;系统自动判断,普通SQL记录statement;特殊SQL自动切换row模式。

选型:

  1. 使用存储过程、触发器、特殊函数,选mixed或者row;
  2. 对主从数据一致性极高,选row;
  3. 普通业务无特殊函数,mixed够用。
#my.cnf
log‑bin=mysql‑bin
binlog_format = MIXED

13、网站打开慢,如何排查,若是数据库慢导致,如何排查解决

整体排查思路

  1. 网络问题?前端静态资源?应用服务器?数据库?
  2. 如果数据库导致:
    1. 看服务器负载CPU、IO、内存;
    2. show processlist;查看慢SQL;
    3. 开启慢查询日志捕获耗时SQL;
    4. explain分析SQL执行计划,检查索引;
    5. 优化SQL、增加索引;
    6. 架构层面:读写分离、分库分表、增加缓存(Redis)减轻数据库压力。

slow_query_log:记录超过long_query_time阈值的SQL。

14、MySQL 的数据备份方式

逻辑备份(导出SQL语句)

mysqldump:MySQL自带,适合中小型库;支持InnoDB热备份;配合binlog实现时间点恢复。

mysqldump -uroot -p --single‑transaction 库名 > db.sql

物理备份(复制数据库原始数据文件)

xtrabackup(Percona):开源物理备份工具,适合大数据量;支持热备份,不锁表。

备份分类:

  1. 完全备份:备份全部数据;
  2. 增量备份:只备份上次备份之后变更数据;
  3. 差异备份:备份上次全量之后所有变更。

逻辑备份:适合小库;物理备份适合TB级大库,恢复速度更快。

15、SQL 两表连接查询,查看有交集的字段

-- inner join内连接,取两表交集
select * from A inner join B on A.id = B.id;

-- left join左连接,左表全部,匹配右表,无匹配显示null
select * from A left join B on A.id = B.id;

-- right join右连接
select * from A right join B on A.id = B.id;

16、SQL 语句ORDER BY 按关键字排序

-- ASC升序(默认),DESC降序
select * from table order by 字段名 ASC;
select * from table order by 字段名 DESC;

17、SQL 查询语句中GROUP BY,HAVING 是什么作用

  • GROUP BY:按指定字段分组,常配合聚合函数sum() count() max();select中非聚合字段,必须出现在group by后。
  • HAVING对分组之后结果过滤where是分组前过滤,where不能使用聚合函数,having可以使用聚合函数
select name,count(*) from user group by name having count(*) > 2;

18、MySQL 几种日志及和作用

  1. 错误日志 log‑error:记录启动、停止、崩溃报错。
  2. 通用查询日志 general_log:记录全部SQL,消耗大,一般关闭。
  3. 二进制日志 binlog:记录数据修改;用于主从复制、数据恢复。
  4. 慢查询日志 slow_query_log:记录执行超时SQL,SQL性能调优。

19、Mysql 死锁、悲观锁、乐观锁

  • 共享锁S(读锁):多个事务可以同时读;不能写。
  • 排他锁X(写锁):拿到写锁,其他事务不能读写。

死锁:InnoDB行锁才会发生死锁;多个事务互相等待对方持有的锁,循环等待,全部卡住。

死锁4条件:互斥、持有并等待、不可剥夺、循环等待。
避免死锁:按固定顺序访问表;拆分大事务;合理索引,尽量行锁,避免表锁。

悲观锁:认为一定会发生冲突,访问数据直接上锁;select … for update。
乐观锁:认为冲突概率低,不加锁;版本号version字段更新判断;适合读多写少场景。

20、MySQL 主从复制原理,如何校验

  1. Master开启binlog,记录所有数据变更。
  2. Slave启动IO线程,连接Master,读取binlog日志,保存成本地relay‑log中继日志。
  3. Slave SQL线程读取relay‑log,重放SQL,实现数据同步。

校验一致性pt‑table‑checksummysqldiff工具对比主从数据。

21、MySQL 主从复制哪些问题,同步和半同步

主从复制问题:主库宕机可能丢失数据;单SQL线程,大数据量会产生延迟。

  1. 异步复制(默认):主库提交事务立刻返回客户端,不等从库同步;宕机有丢数据风险。
  2. 半同步复制:主库提交,等待至少一台从库收到binlog写入relay log,收到ACK再返回客户端。
    • after‑commit:旧半同步,会出现幻读问题;
    • after‑sync(增强半同步,MySQL5.7默认):无损复制,保证数据一致性。

半同步超时会自动降级异步复制。

22、MySQL 主从复制有延迟及解决思路

延迟产生原因

  1. 主库并发写入大,从库单SQL线程追不上;
  2. 从库执行大SQL锁等待;
  3. 主从硬件性能差异;
  4. 跨机房网络延迟;
  5. 异步复制本身就存在延迟。

优化方案

  1. 从库硬件升级SSD磁盘,调高innodb_buffer_pool_size
  2. 开启并行复制,多线程回放relay‑log;
  3. 业务架构拆分,降低单库写入压力;
  4. 避免跨机房主从;
  5. 读写分离,读压力分摊多从库。

查看延迟:show slave status\GSeconds_Behind_Master

23、生产一主多从从库宕机,如何手工恢复?

重做slave流程:

  1. 停止从库服务;
  2. 使用主库全量备份导入到故障从库;
  3. 配置master信息(master_log_file、master_log_pos);
  4. start slave;
  5. show slave status\G确认IO、SQL线程正常。

24、简述MySQL 常见的读写分离方案?

读写分离:写操作走主库,读请求分发多个从库,分摊读压力。

  1. Amoeba:数据库代理中间件,SQL层代理,实现读写分离。
  2. MyCat:开源数据库中间件,读写分离+分库分表。
  3. 应用层代码实现:业务代码内部配置多个数据源,代码控制读写。

25、MySQL 高可用方案

  1. MHA(Master High Availability)
    MHA实现MySQL故障自动切换;Manager监控Master故障,自动提升最优Slave为新Master,其余从库指向新主。

组成:MHA‑node所有数据库节点;MHA‑manager独立管理节点;VIP漂移。
优势:尽量保证数据不丢失,故障切换几十秒。

  1. MMM:多主复制管理器,双主模式;适合一致性要求不高场景。
  2. InnoDB Cluster:MySQL官方高可用集群。

26、MySQL 优化?“双1 设置”的作用

双1配置(高安全配置)

sync_binlog=1; #每次binlog写入,立刻刷磁盘
innodb_flush_log_at_trx_commit=1; #每次事务提交,redo log刷磁盘

双1保证宕机数据不丢失;代价是磁盘IO开销大。业务追求性能可以调整为0/2,牺牲少量安全性换性能。

其他优化
硬件:SSD磁盘;充足内存,调大innodb_buffer_pool_size。
配置:慢查询日志;合理max_connections;表缓存。
SQL层面:explain分析SQL,合理索引;避免大事务;分库分表。

27、MySQL 数据库cpu 飙升到500%怎么处理?

  1. top确认cpu占用是不是mysqld;
  2. show processlist;定位消耗资源大SQL;
  3. 查看慢查询日志;
  4. 找到问题SQL,临时kill会话;使用explain检查缺少索引;
  5. 优化SQL,增加索引;限制业务并发连接。

常见诱因:无索引大查询、大量并发、join笛卡尔积。

28、Redis 为什么读写速度那么快

  1. 全部基于内存操作,避免磁盘IO开销
  2. 单线程处理命令:没有多线程锁竞争,减少上下文切换;
  3. IO多路复用epoll模型,单线程处理大量客户端连接;
  4. 高效数据结构,底层自定义编码,内存开销小。

注意:持久化RDB/AOF的fork子进程,会产生额外开销。

29、redis 常用的版本和使用场景?

版本:Redis5.0、Redis6.0(多线程IO)、Redis7.0。

场景:

  • 热点数据缓存;
  • 分布式锁;
  • zset做排行榜;
  • incr计数器;
  • Stream做简单消息队列;
  • HyperLogLog统计UV访客。

30、redis 常见的数据结构

5大基础类型

  1. String:字符串;
  2. List:双向链表;
  3. Hash:哈希字典;
  4. Set:无序集合;
  5. ZSet(Sorted‑Set)有序集合。

高级类型

  1. HyperLogLog:基数统计,估算UV,占用内存极小,允许误差;
  2. Stream:消息队列,支持消息持久化、消费offset。

31、redis 持久化+配置

Redis持久化两种:RDB快照、AOF追加日志;4.0+支持混合持久化。

RDB(快照)

定时把内存全量数据dump到rdb二进制文件。

save 900 1   #900秒至少1个key变化触发快照
save 300 10
save 60 10000

优点:文件小,恢复速度快;
缺点:两次快照之间宕机会丢失数据。

AOF(append‑only‑file)

记录每一条写命令日志,重启回放AOF恢复数据。

appendonly yes
appendfsync always   #每次写刷盘,性能最差最安全
appendfsync everysec #每秒刷盘(默认,平衡性能安全)
appendfsync no       #交给操作系统刷盘,性能最高不安全

AOF重写rewrite:压缩AOF,去掉无效命令,缩小文件体积。

混合持久化:4.0+开启,RDB内容 + AOF增量日志;兼顾恢复速度和安全性。

生产建议:同时开启RDB+AOF;优先加载AOF恢复。

32、Redis 集群高可用模式详细介绍

  1. 主从复制
    实现数据多副本;读写分离,主写从读。故障不能自动切换;主宕机需要人工切换。
  2. Sentinel哨兵模式(高可用)
    基于主从,哨兵监控节点;主节点故障哨兵自动选举新主,自动故障转移。

哨兵端口26379;至少3个哨兵节点保证选举。
缺陷:写不能分片,存储受单机内存上限。

  1. Redis‑Cluster集群模式
    分片模式,16384个哈希槽;数据分散多台主节点,支持写分片扩容;每个主配置从节点实现高可用。

最少需要6台机器(3主3从);适合海量数据。

选型:数据量不大,读多写少选哨兵;数据量大,需要横向写扩展选Cluster集群。

33、memcache 和redis 的区别

  1. Memcached只支持简单k‑v;Redis支持丰富的数据结构hash/list/zset等。
  2. Redis支持持久化RDB/AOF;Memcached全部内存,断电数据丢失。
  3. Redis支持主从、哨兵、cluster集群;Memcached集群靠客户端分片。
  4. Redis有虚拟内存,可把冷数据swap磁盘;Memcached无。
  5. Redis单线程;Memcached多线程。

Memcached适合简单key‑value缓存;Redis功能丰富,业务优先选Redis。

34、redis 出现的问题?

缓存雪崩

大量key同一时间过期,大量请求穿透直接打数据库;或者Redis整体宕机。
解决:过期时间加随机值;Redis高可用;限流熔断;本地缓存。

缓存穿透

查询数据库不存在的数据,缓存永远不命中,直接访问数据库。
解决:布隆过滤器拦截非法key;查询结果为空也缓存短时间。

缓存击穿

热点key过期瞬间,大量并发请求直接打到数据库。
解决:热点key永不过期;互斥锁控制访问。

区分:雪崩是大量key同时失效;击穿是单个热点key失效;穿透是查询不存在key。

35、redis 优化

  1. 合理使用hash等节省内存的数据结构;
  2. 设置key过期时间,淘汰冷数据;
  3. 内存淘汰策略配置maxmemory‑policy
  4. 根据业务选择主从、哨兵、cluster集群模式;
  5. 避免bigkey(超大value),拆分大key;
  6. 尽量减少fork产生开销,合理调整RDB触发时机。

36、mongoDB 是什么,优势,使用场景

MongoDB文档数据库,存储BSON(二进制JSON)格式。
优势:schema灵活;支持索引;支持分片集群水平扩展;查询能力强。
场景:APP业务数据、内容平台、海量半结构化数据。

十三、消息队列(Zookeeper+Kafka)

1、为什么需要消息队列,使用的好处

MQ:异步消息中间件。
作用

  1. 解耦:生产者消费者互不依赖;
  2. 削峰缓冲:高并发峰值流量排队,保护后端服务;
  3. 异步处理:不需要同步等待任务完成,提升接口响应速度;
  4. 可恢复:消息持久,服务故障恢复继续消费。

常用MQ:Kafka、RocketMQ、RabbitMQ。

2、消息队列的两种模式

  1. 点对点(P2P):消息投递一个消费者,消费完消息删除;一对一。
  2. 发布订阅Pub/Sub:消息发布topic,多个订阅者全部收到消息;一对多。

3、Zookeeper 的定义和工作机制

Zookeeper分布式协调组件;核心模型 = 文件系统(znode树形节点) + watch监听通知。
客户端注册watch监听znode节点;节点数据发生变更,zookeeper主动通知监听客户端。

4、Zookeeper 特点和数据结构

特点

  1. 集群半数以上存活集群可用,建议奇数台;
  2. 全局数据一致,每个节点保存完整副本;
  3. 更新原子性;顺序执行请求;实时通知watch事件。

数据结构ZNode:树形目录,类似linux文件树;每个znode可以存数据;分持久节点、临时节点、顺序节点。临时节点会话断开自动删除。

5、Zookeeper 应用场景

  1. 配置中心:统一配置,配置变更自动通知客户端;
  2. 注册中心:服务注册发现;
  3. 分布式锁
  4. 集群master选举
  5. 节点动态上下线感知。

6、Zookeeper 工作机制(SID、ZXID、Epoch)

ZAB协议Zookeeper原子广播协议,负责leader选举和数据同步。

  • SID:服务器ID,myid配置,集群唯一标识机器。
  • ZXID:事务ID,全局唯一,每一次数据变更递增;64位,高32位Epoch,低32位计数器。
  • Epoch:leader任期编号,每重新选举leader,Epoch加1。

7、Zookeeper 第一次启动选举机制

集群机器刚启动,全部LOOKING状态;各自投自己;交换选票;
对比zxid最大优先,票数超过半数当选leader;其余变成follower。

8、Zookeeper 非第一次启动选举机制

集群已经存在leader:新节点直接连接leader同步数据。
无leader故障场景:
选举优先级顺序:Epoch大优先 → 相同Epoch,ZXID事务id大优先 → SID机器id大优先。

9、Kafka 的特性

  1. 高吞吐低延迟,磁盘顺序写,性能极高;
  2. 消息持久化磁盘;
  3. 分布式集群,水平扩展;
  4. 多副本,容错,部分节点故障不影响业务;
  5. 支持多消费组。

10、kafka 中ISR,AR 代表什么,ISR 伸缩又代表什么

  • AR Assigned Replicas:该partition全部副本集合。
  • ISR In‑Sync Replicas:同步副本集合;和leader保持同步的follower副本。
  • OSR:落后同步的副本。AR = ISR + OSR

follower同步落后超过阈值,会被移出ISR;追上同步后重新加入ISR。

11、Kafka 系统架构和组件术语

  • Broker:kafka服务节点;集群多个broker。
  • Topic:消息主题,逻辑分类。
  • Partition分区:topic拆分成多个partition,有序队列,提高并发;partition内部消息有序,跨partition无序。
  • Replica副本:每个partition多个副本;一个leader负责读写,follower只同步备份。
  • Producer生产者:发送消息到topic。
  • Consumer消费者:读取消息。
  • ConsumerGroup消费组:一组消费者;同一个partition只能被消费组内一个消费者消费,实现负载均衡。
  • offset偏移量:partition内消息序号;记录消费位置。
  • Zookeeper:保存集群元信息;旧版本offset存储zk;新版本offset存在内置topic __consumer_offsets

partition分配策略:指定partition;key哈希取模;未指定key轮询。

12、Kafka 写入流程

  1. producer向zk获取partition对应的leader broker地址。
  2. producer发送消息给leader。
  3. leader把消息写入本地日志。
  4. ISR内follower拉取消息写入本地,回复ack给leader。
  5. leader收到全部ISR副本ack,更新HW高水位,返回ack给生产者。

13、kafka 中的zookeeper 什么作用,可以不用zookeeper 么

ZK作用:存储broker元数据、topic分区元数据;controller控制器选举;broker存活检测。

kafka早期consumer offset存在zk;新版本offset内置topic保存。
kafka 2.8之后支持KRaft模式,可以脱离zookeeper;传统版本强依赖zk。

14、kafka follower 如何与leader 同步数据

follower主动拉取leader消息;批量拉取;零拷贝提升性能。使用ISR机制平衡性能和可靠性。

15、kafka 为什么那么快

  1. 磁盘顺序写,顺序写远快于随机写;
  2. 页缓存PageCache,操作系统缓存;
  3. sendfile零拷贝技术,减少内存拷贝;
  4. 消息批量处理,合并小请求;
  5. 消费者拉取模式,匹配消费能力。

16、Kafka 中的消息是否会丢失和重复消费?

消息丢失(生产者)
acks参数控制确认机制:

  • acks=0:生产者不等确认,网络抖动消息丢失风险;
  • acks=1:leader写入成功返回ack;leader宕机副本没同步,消息丢失;
  • acks=‑1(all):等待全部ISR副本写入完成,最高可靠性。

消息丢失(消费端):业务处理完才提交offset;如果还没处理完就提交offset,重启消息丢失。

重复消费:已经处理完消息,提交offset前消费者宕机;重启从上一次offset重新消费,造成重复。

解决:业务实现幂等性;消息唯一id。

17、为什么Kafka 不支持读写分离?

kafka读写全部访问partition的leader副本。
如果从follower读会存在数据延迟,数据不一致;复制本身就存在网络IO延迟,对业务影响大。所以不支持主写从读。

18、什么是消费者组?

消费者组(Consumer Group),一组拥有相同group.id的消费者实例。

  1. 同一个topic,消费组内部多个消费者分摊partition,实现消费横向扩展;一个partition只能被组内一个消费者消费
  2. 不同消费组之间互不影响,可以重复消费全部消息。
  3. 组内实例宕机,会触发rebalance,partition重新分配给存活消费者。

19、kafka 适用于哪些场景

  1. 日志采集;
  2. 异步消息业务解耦;
  3. 用户行为埋点轨迹;
  4. 监控指标上报;
  5. 流计算处理。

十四、ELK

1、ELK 架构组成

  • ElasticSearch ES:分布式搜索引擎,存储、检索日志数据。
  • Logstash:数据收集过滤处理,解析格式化日志;JVM消耗内存大。
  • Kibana:可视化Web界面,查询、画图、分析日志。

生产常用EFK:Filebeat替代Logstash做采集。
Filebeat轻量go开发,部署业务机器采集日志;发送kafka/logstash,减轻业务服务器压力。

节点角色:master主节点(集群管理)、data数据节点(存储分片)、client协调节点。

2、ELK 的工作原理

  1. Filebeat/Logstash在各服务器采集原始日志;
  2. 做过滤清洗格式化,发送ElasticSearch;
  3. ES存储建立索引;
  4. Kibana查询ES数据,提供可视化页面。

中间经常加kafka做消息队列,实现削峰,防止日志爆发压垮ES。

3、logstash 的输入源有哪些

文件、kafka、redis、mysql数据库、mongodb、syslog。

4、es 常用的插件

IK分词器、cerebro集群监控、x‑pack安全监控等。

十五、监控(Prometheus、Zabbix)

1、简述常见的监控软件?

Zabbix、Prometheus+Grafana、Open‑Falcon、Cacti。

2、Prometheus 概述

Prometheus开源时序数据库监控系统;pull拉模式,定期HTTP抓取exporter暴露监控指标;配置告警规则,Alertmanager处理告警;Grafana做可视化图表。

3、简述Prometheus 及其主要特性?

  1. 多维标签时序数据模型;
  2. PromQL强大查询语言;
  3. Pull采集模型,也支持PushGateway处理短生命周期任务;
  4. 单机可以直接本地存储,也支持远程存储;
  5. 服务发现自动发现监控target;
  6. 告警规则内置。

4、简述Prometheus 主要组件及其功能?

  1. Prometheus Server:核心;抓取指标、本地存储时序数据、执行告警规则;分为Retrieval抓取模块、Storage存储模块、PromQL查询引擎。
  2. Exporter:采集业务/机器指标,暴露http接口供prometheus抓取;node_exporter服务器硬件指标;kube‑state‑metrics k8s资源指标。
  3. PushGateway:接收短任务push上报指标,供prometheus拉取。
  4. Alertmanager:接收告警,去重、分组,发送钉钉/邮件/微信告警。
  5. Grafana:可视化面板展示监控图表。

5、Prometheus server 由三个部分组成

Retrieval(抓取)、Storage(存储)、PromQL(查询语言)。

6、Prometheus 工作流程

  1. Prometheus Server按照配置定期pull抓取各个target exporter指标;
  2. 指标存入本地时序数据库;
  3. 根据告警规则计算,如果触发告警,推送给Alertmanager;
  4. Alertmanager处理告警,发送通知;
  5. Grafana调用PromQL查询数据渲染图表展示。

7、简述Prometheus 中什么是时序数据?

时序数据(time‑series):同一个指标metric,附带一组标签labels,按照时间戳持续记录数值。metric_name{label1="xx"} value timestamp

8、简述Prometheus 时序数据有哪些类型?

  1. Counter计数器:单调递增;只能上涨;统计请求总数量、错误总数。
  2. Gauge仪表盘:瞬时值,可以上升下降;CPU使用率、内存使用率。
  3. Histogram直方图:统计样本区间分布;统计请求耗时分布。
  4. Summary汇总:直接计算分位数。

9、简述Zabbix 及其优势(5.0 版本)?

Zabbix开源企业级监控;支持agent、snmp等多种采集方式;Web界面,告警,模板,分布式proxy。
优势:开源免费;支持多操作系统;模板开箱即用;支持自定义监控项;数据存入MySQL;分布式监控能力强。

10、简述Zabbix 组件架构和工作原理?

组件

  1. Zabbix Server:核心服务,接收采集数据,计算触发器告警。
  2. Database:数据库存储全部配置和监控数据。
  3. Web UI:网页管理面板。
  4. Agent:部署被监控机器,采集本地数据。
  5. Proxy:代理组件,用于大规模分布式监控,分担server压力。

工作原理:agent采集主机指标,发送给server;server存入数据库;web页面绘图;当指标超过触发器阈值,执行动作发送告警。

11、简述Zabbix 所支持的监控方式?

  • Zabbix Agent(主动模式、被动模式);
  • SNMP(网络设备交换机路由器);
  • IPMI硬件监控;
  • JMX Java监控。

被动模式:server找agent拿数据;主动模式agent主动上报给server,适合大规模环境。

12、简述Zabbix 分布式及其适应场景?

通过Zabbix Proxy代理实现分布式。
场景:跨机房、上千台机器规模,减轻中心zabbix server压力。proxy收集监控数据,汇总上报中心server。

13、zabbix 常用术语

host主机、hostgroup主机组、item监控项、trigger触发器阈值、event事件、action动作、template模板、discovery自动发现、media告警媒介。

14、zabbix 自定义发现是怎么做的?

低级自动发现LLD;编写脚本输出JSON数据;配置发现规则,监控项原型,自动生成监控项。

15、微信报警

使用企业微信API;编写shell/python脚本,zabbix动作调用脚本推送告警消息。

16、zabbix 客户端如何批量安装

Ansible批量部署agent包、推送配置文件。

17、zabbix 分布式是如何做的

部署zabbix‑proxy;各机房机器上报proxy;proxy缓存数据,统一转发中心zabbix server。

18、zabbix 你都监控哪些参数

服务器层面:CPU、内存、磁盘使用率inode、磁盘IO、网络流量、进程;
数据库层面:连接数、QPS、主从状态、缓冲池;
业务层面:接口响应时间、业务成功率。

十六、docker

1、简述Docker 的特性?

  1. 轻量,进程级隔离;
  2. 环境一致性,一次打包到处运行;
  3. 快速启动秒级;
  4. 资源隔离限制cgroup;
  5. 分层镜像,复用层,节省存储。

2、简述Docker 容器的几种状态?

docker ps -a查看全部

  • Up:运行中
  • Paused:已暂停
  • Restarting:重启中
  • Exited:已退出(停止)

3、简述Dockerfile、Docker 镜像和Docker 容器的区别?

  1. Dockerfile:源代码文本,构建镜像的脚本;
  2. Image镜像:只读分层模板,静态包,包含程序依赖环境;
  3. Container容器:镜像运行实例;读写层;运行时进程。

Dockerfile build生成image;docker run镜像启动生成容器。

4、简述Docker 与KVM(虚拟机)的区别

Docker容器KVM虚拟机
内核共享宿主机内核独立完整内核
启动速度秒级分钟级
隔离进程级隔离namespace硬件级完整隔离
资源开销很小大,完整OS开销
磁盘占用MB级别GB级别

虚拟机安全隔离更强;容器轻量,性能接近原生。

5、简述Docker 主要使用的技术?

  1. Namespace命名空间:做隔离(UTS、PID、NET、MNT、IPC、USER)。
  2. Cgroups:做资源限制CPU、内存。
  3. UnionFS联合文件系统:镜像分层写时复制。

namespace六项隔离

namespace隔离内容
UTS主机名域名
PID进程ID
NET网络栈网卡端口
MNT挂载点文件系统
IPC进程间通信
USER用户ID

6、简述Docker 体系架构?

  • docker client:客户端命令行;
  • docker daemon(dockerd)后台守护进程,管理镜像容器;
  • Image镜像;
  • Container容器;
  • Registry镜像仓库(docker hub、harbor私有仓库)。

本地数据目录默认/var/lib/docker

7、简述Docker 如何实现网络隔离?

利用Linux network namespace网络命名空间;每个容器独立网络协议栈,独立路由、iptables;不同namespace网络完全隔离。

8、简述Linux 文件系统和Docker 文件系统?

bootfs:bootloader + kernel内核;系统启动完成卸载bootfs。
rootfs:根文件系统(/etc /bin /usr等目录)。
Docker镜像:基于UnionFS联合文件系统,多层只读rootfs;启动容器,在最上层增加一层读写层。所有修改只发生读写层;删除容器读写层数据丢失。

9、简述Docker网络模式?

  1. bridge(默认网桥):docker0虚拟网桥;容器独立namespace;docker内部互通;做端口映射访问外部。
  2. host模式:和宿主机共享网络namespace;直接复用宿主机IP端口,无隔离。
  3. container模式:共享另外一个容器的网络namespace;多个容器共用一套网络栈。
  4. none模式:关闭网络,只有lo本地回环接口。
  5. 自定义网络(user‑defined bridge):用户自己创建网桥,支持DNS自动解析容器名字。

10、简述Docker 跨主机通信的网络实现方式?

  1. 静态路由:主机添加静态路由;
  2. overlay隧道网络(flannel、calico),UDP/VXLAN封装;
  3. pipework工具桥接物理网络。

11、简述flannel 网络模型实现原理?

flannel借助etcd保存网络元数据;为每个主机分配独立子网;容器IP属于全局大网段;数据包VXLAN/UDP封装隧道跨主机转发。backend支持UDP、VxLAN、host‑gw。

12、Flannel 和Calico 的区别

  • Flannel:主要overlay隧道,封装报文;侧重网络连通。
  • Calico:三层路由方案为主;支持丰富网络策略NetworkPolicy访问控制;k8s大量使用calico。

13、联合文件系统和镜像加载原理(Docker 镜像层构建)

UnionFS联合文件系统,把多个目录层叠加。
镜像全部层只读;容器运行,在最上层新增一层可读写层。容器所有修改全部发生读写层,镜像层不会被修改;删除容器读写层销毁。

14、Dockerfile 是什么,常用的命令?(ADD 和COPY,ENTRYPOINT 和CMD 的作用和区别)

Dockerfile构建镜像的脚本。
常用指令

FROM #基础镜像
MAINTAINER #维护人
RUN #构建镜像执行命令
COPY #复制本地文件到镜像
ADD #复制,自动解压tar包,支持url
WORKDIR #工作目录
ENV #环境变量
EXPOSE #声明暴露端口
VOLUME #数据卷
USER #运行用户
CMD #容器启动默认命令
ENTRYPOINT #容器入口命令

ADD vs COPY

  • COPY:只复制本地文件。
  • ADD:复制本地文件,tar压缩包自动解压;支持url下载远程文件。

ENTRYPOINT vs CMD

  1. ENTRYPOINT:容器入口程序,优先级高;docker run传参会追加给entrypoint。
  2. CMD:提供默认参数;如果docker run后面写命令,CMD会被完全覆盖。

一般组合:ENTRYPOINT写主程序,CMD提供默认参数。

15、退出容器后,通过docker ps 命令查看不到,数据会丢失吗?

docker ps只看运行容器;停止的容器用docker ps -a查看。

  • 容器停止(退出):容器还存在;读写层数据还保留,重启容器数据还在。
  • 容器被docker rm删除:读写层全部数据丢失;如果挂载volume数据卷,volume数据不会删除。

16、docker 的优点

  • 轻量资源消耗低;环境一致性;快速部署;隔离应用;镜像复用;CI/CD流水线友好。

17、docker 的应用场景

开发环境一致性;CI/CD流水线打包交付;微服务部署;应用隔离;云平台。

18、docker‑compose 是什么?

单机容器编排工具;yaml文件定义多个容器,定义依赖关系;一键启动一组容器。适合单机多容器;k8s用于集群大规模编排。

19、说下对docker run 和docker start 的理解?

  • docker run:等于docker create + docker start;基于镜像新建容器,并且启动。
  • docker start:启动已经存在的容器,不会新建。

20、docker stop 和docker kill 的理解?

  1. docker stop:优雅停止,发送SIGTERM信号,等待容器程序正常退出;超时后发送SIGKILL强制杀死。
  2. docker kill:直接发送SIGKILL强制杀死容器,粗暴,不给应用关闭清理机会。

21、什么是Docker Swarm 模式?

Docker原生集群编排,把多台docker主机组成集群;服务调度,实现多机器容器编排;现在企业更多用K8s。

22、docker 的持久化,网络,发布

持久化:‑v volume数据卷;挂载宿主机目录或者docker管理volume;容器删除volume数据可以保留。
网络:docker network create创建网络。
端口发布:‑p 宿主机端口:容器端口端口映射。

23、怎么做一个拥有指定功能的镜像

  1. 容器修改:run启动基础镜像,进入容器安装配置;docker commit提交为镜像(不推荐,不可复现)。
  2. Dockerfile构建(推荐):编写Dockerfile,docker build构建镜像,可版本管理,可复现。

24、如何监控生产中的Docker?

  • docker stats查看CPU内存网络;
  • docker events查看容器生命周期事件;
  • exporter:cAdvisor采集容器指标对接Prometheus+Grafana监控。

25、Harbor 是什么、特性、工作流程(私有仓库)

Harbor是docker私有镜像仓库;web管理界面;用户权限;镜像复制;漏洞扫描。
工作流程:docker push上传镜像到harbor;docker pull拉取镜像;RBAC权限控制不同项目访问。

26、consul特性、服务注册与发现

Consul服务注册发现工具;提供健康检查;key‑value存储;支持多数据中心。容器服务启动注册到consul;消费者查询consul获取服务实例地址。

27、Docker 安全方面配置

  1. 不要使用root用户运行容器,USER指定普通用户;
  2. 镜像扫描漏洞;私有仓库harbor权限控制;
  3. 运行容器尽量只读文件系统‑‑read‑only
  4. 内核能力capabilities裁剪,去掉不需要权限;
  5. 限制CPU内存资源cgroup。

28、https 流程(TLS 证书访问)

  1. 客户端发起https连接,发送支持加密套件;
  2. 服务端返回服务器证书,协商加密套件;
  3. 客户端校验证书合法性;
  4. 非对称加密交换会话密钥;
  5. 后续通信使用会话密钥对称加密传输数据。

证书:证明服务器身份,防止中间人劫持。

十七、Kubernetes

1、什么是K8s?

Kubernetes简称k8s,谷歌开源容器编排平台;用于大规模docker容器的部署、调度、自愈、扩缩容管理。实现容器集群自动化运维。

2、K8s 和Docker 的关系?

Docker是容器运行时,负责打包运行容器;K8s是编排平台,管理集群大量docker容器。k8s本身不做容器,调用容器运行时(docker/containerd)。

3、K8s 中什么是Minikube、Kubectl、Kubelet?

  1. minikube:单机k8s,本地开发测试环境,单节点k8s。
  2. kubectl:k8s命令行客户端,操作集群API。
  3. kubelet:每个node节点代理,和apiserver交互,管理本机Pod生命周期。

4、K8s 常见的部署方式?

kubeadm(最常用)、二进制手动部署、kubespray。

5、ETCD 及其特点?

ETCD分布式键值存储数据库;保存k8s集群全部元数据;强一致性;高可用;集群至少奇数节点。所有集群数据全部存etcd。

6、ETCD 适应的场景?

配置中心、元数据存储、分布式锁;k8s核心元数据库。

7、K8s 如何实现集群管理?

全部操作走apiserver;所有组件和apiserver通信,数据持久存入etcd;各个组件监听apiserver资源变化,控制器调谐。

8、K8s 的优势、适应场景及其特点?

优势:

  1. 容器自动调度;
  2. 故障自愈,pod崩溃自动重建;
  3. 滚动升级、回滚;
  4. 自动扩缩容HPA;
  5. 服务发现、负载均衡;
  6. 声明式API。
    场景:微服务业务、云原生应用,大规模容器集群。

9、K8s 群集架构和工作流程(创建pod 流程)

Master控制平面组件

  1. kube‑apiserver:集群唯一入口,REST API,鉴权,所有组件交互中枢。
  2. etcd:元数据存储。
  3. kube‑controller‑manager:各类控制器(副本控制器,节点控制器等)。
  4. kube‑scheduler:调度器,把pod调度到合适node节点。

Node工作节点组件

  1. kubelet:管理本机pod;
  2. kube‑proxy:网络代理,实现service;
  3. 容器运行时 containerd/docker。

创建Pod流程

  1. kubectl提交pod资源给apiserver;
  2. apiserver校验,存入etcd;
  3. scheduler监听到未绑定node的pod,调度选择node节点;写回etcd;
  4. 对应node上kubelet监听到pod变更;调用容器运行时,创建启动Pod容器。

10、K8s 核心概念

  • Pod:k8s最小调度单元;一个pod可以包含1‑N个容器;Pod内容器共享网络、存储。
  • Controller控制器:Deployment、StatefulSet、DaemonSet、ReplicaSet;管理Pod生命周期。
  • Service:服务,一组pod统一访问入口,内部负载均衡。
  • Ingress:七层HTTP/HTTPS反向访问入口,外部访问集群服务。
  • ConfigMap:配置;Secret敏感密码配置。
  • PV/PVC:存储卷;
  • Namespace:命名空间,资源逻辑隔离。

11、pod 中有哪些控制器

Deployment、ReplicaSet、StatefulSet、DaemonSet、Job、CronJob。

12、简述K8s RC 的机制?

RC ReplicationController;老版本控制器;维持指定副本Pod数量;Pod异常删除,RC重建Pod;现在被ReplicaSet替代。

13、K8s 中ReplicaSet 和Replication Controller 之间有什么区别?

ReplicaSet支持selector集合标签选择器;RC只支持相等匹配;Deployment底层使用ReplicaSet,不建议直接操作RS。

14、kube‑proxy iptables 和ipvs 原理,区别?

kube‑proxy实现Service集群内部负载均衡。

  1. iptables模式:利用iptables规则做转发;小规模集群;规则数量大性能下降。
  2. ipvs模式:内核ipvs负载均衡;性能高,适合大规模集群,支持多种调度算法。

15、K8s 中什么是静态Pod?

不由apiserver管理;kubelet读取本机目录yaml文件,直接在本机创建Pod;master节点组件很多用静态pod运行。

16、K8s 中Pod 几种状态?

Pending:调度中;Running运行中;Failed异常失败;Completed正常完成退出;Unknown节点失联。

17、K8s 创建一个Pod 的主要流程?

  1. 用户提交pod yaml到apiserver;
  2. apiserver校验,写入etcd;
  3. scheduler调度pod到合适node;更新绑定信息到etcd;
  4. 目标node kubelet监听apiserver,拿到pod定义;调用容器运行时创建容器。

18、K8s 中Pod 的重启策略?

  1. Always:容器退出永远重启(Deployment默认)。
  2. OnFailure:容器异常退出才重启;正常完成退出不重启。
  3. Never:不管什么情况绝不重启;适合一次性任务Job。

19、Pod 镜像拉取策略(imagePullPolicy)

  • Always:总是拉取镜像;
  • IfNotPresent:本地有镜像就用本地,没有才拉(默认);
  • Never:只使用本地镜像,不从仓库拉取。

20、K8s Pod 的健康检查方式?

livenessProbe存活探针;readinessProbe就绪探针。
探测方式:exec命令、httpGet http请求、tcpSocket tcp端口探测。

21、Pod 中LivenessProbe 探针的常见方式?

存活探针:检测容器是否正常;探测失败,k8s重启pod。
方式:exec执行命令;httpget访问http接口;tcp检查端口连通性。

22、K8s Pod 的常见调度策略?

节点亲和nodeAffinity;pod亲和podAffinity;污点容忍Taint/Tolerations;节点选择器nodeSelector。

23、K8s 中最底层的基础容器(pause 容器)

pause是pod的基础沙箱容器;pod内所有容器共享pause的network namespace、ip;pod网络栈由pause容器提供。

24、K8s 中的初始化容器(init container)

init容器:pod启动的时候,先顺序执行init容器;init全部成功执行完毕,才启动业务应用容器。
用途:初始化业务前置工作,等待依赖服务就绪,配置生成文件。init容器执行完成直接退出。

25、K8s Pod 如何实现对节点的资源控制?

通过resources里面的requests和limits,底层调用cgroup做资源限制。

26、K8s Requests 和Limits 如何影响Pod 的调度?

  • requests:调度的时候使用;代表pod最小需要的资源;scheduler根据node剩余可分配requests来调度pod。
  • limits:硬上限;容器不能超过limits;超过会被限流,内存超限会OOM kill。

requests用于调度;limits做资源上限约束。

27、K8s deployment 更新过程和更新策略(升级策略)

Deployment滚动更新,底层操作ReplicaSet。
策略参数:
strategy.type RollingUpdate滚动更新;maxSurge最大超副本;maxUnavailable最大不可用副本。
流程:创建新版本RS;逐步增加新pod副本,逐步缩减旧RS副本;滚动升级;升级失败支持回滚到历史版本。

28、DaemonSet 与Deployment 控制器区别

  • Deployment:普通无状态业务;副本数,随机调度node。
  • DaemonSet:每一个匹配标签的node上运行一个Pod;监控代理、日志采集agent适合使用DaemonSet。

29、k8s 中的port 端口

  • containerPort:容器内部端口;
  • port:service集群内部访问端口;
  • nodePort:node节点暴露端口;
  • targetPort:service转发后端pod的容器端口。

30、K8s 自动扩容机制

HPA Horizontal Pod Autoscaler 水平Pod自动扩缩容;根据CPU/内存/自定义指标自动增减pod副本数量。

31、K8s Service类型?

  1. ClusterIP(默认):集群内部访问,集群虚拟IP;只能集群内部访问。
  2. NodePort:每个node节点开放端口,外部访问节点IP:nodePort
  3. LoadBalancer:对接云厂商负载均衡,公有云使用。
  4. ExternalName:把service映射外部域名。

32、K8s Service 分发后端的策略?

iptables/ipvs支持rr轮询;sessionAffinity会话粘性。ipvs支持更多负载均衡算法。

33、k8s 中有几种ip

PodIP(pod网络IP);ClusterIP(service虚拟集群IP);NodeIP(节点主机物理IP)。

34、K8s 外部如何访问集群内的服务?

NodePort;LoadBalancer云负载均衡;Ingress七层网关;kubectl port‑forward调试。

35、K8s 中ingress?

Ingress:七层HTTP/HTTPS访问入口;基于域名、路径转发不同service;一般配合ingress‑controller(nginx‑ingress)。Ingress本身只是规则,controller实际处理流量。

36、K8s 各模块如何与API Server 通信?

全部组件kubelet、scheduler、controller‑manager都和apiserver REST API交互;监听资源变更(watch机制)。etcd只由apiserver访问,其他组件不能直连etcd。

37、Scheduler 调度过程和调度策略

调度流程:过滤Predicate(筛选符合条件node);打分Priority给node打分;选分数最高node绑定pod。
策略:节点亲和、pod亲和、污点容忍、资源requests匹配。

38、K8s 如何保证集群的安全性,安全机制

  1. RBAC权限控制,账号权限;
  2. ServiceAccount服务账号;
  3. Secret保存敏感信息;
  4. NetworkPolicy网络策略pod之间访问控制;
  5. PodSecurityPolicy Pod安全策略限制容器权限;
  6. apiserver开启TLS证书双向认证。

39、https 证书(TLS 证书认证流程)

k8s组件之间通信全部TLS证书认证;各个组件持有证书,和apiserver双向证书校验身份。

40、准入控制(Admission Control)

apiserver请求处理链路;认证鉴权之后,资源持久化etcd之前执行;分为Mutating(修改资源)和Validating(校验拒绝非法资源)。例如:PodSecurityPolicy,ResourceQuota资源配额。

41、K8s 中flannel 和Calico 的作用区别?

CNI网络插件,实现pod网络通信。

  • flannel:侧重pod网络连通,overlay隧道。
  • calico:三层路由,支持NetworkPolicy网络访问策略;生产k8s大量使用calico。

42、K8s 如何进行节点关机维护?

  1. kubectl drain node‑name驱逐节点上所有pod;打上不可调度污点;pod调度其他节点。
  2. 节点关机维护;
  3. 维护完成开机,kubectl uncordon node‑name恢复节点调度。

43、K8s 数据持久化的方式有哪些(数据卷)

emptyDir临时卷;hostPath主机路径;PV/PVC存储卷;ConfigMap、Secret;云存储(云盘)。

44、PV 和PVC?

PV:PersistentVolume持久卷,集群存储资源,管理员预先创建。
PVC:PersistentVolumeClaim,存储申请;用户声明存储大小、访问模式;PVC自动绑定匹配PV。

45、简述Kubernetes PV 生命周期内的阶段?

Available可用;Bound已经绑定PVC;Released PVC释放;Failed回收失败。回收策略Retain(保留)、Delete(删除存储)、Recycle回收清理。

46、K8s 中使用EFK

E:ElasticSearch;F:Filebeat采集Pod日志;K:Kibana;收集集群全部Pod容器日志,集中检索查看。

47、K8s RBAC 特点(优势)?

RBAC基于角色访问控制;APIServer鉴权;资源、动词权限精细控制;Role(命名空间内),ClusterRole集群级别。

48、K8s Secret 作用?

Secret用于保存敏感数据,密码、token、密钥;base64编码,注意不是加密;挂载到pod容器或者环境变量使用。

49、K8s PodSecurityPolicy 机制?

Pod安全策略;限制Pod容器权限;禁止特权容器、限制用户id、文件系统能力;加固容器安全。

50、K8s PodSecurityPolicy 机制能实现哪些安全策略?

禁止特权容器;控制运行用户;限制内核capabilities;限制主机挂载;防止提权。

51、K8s CNI 模型

CNI容器网络接口标准;k8s调用CNI插件,完成pod网络配置;flannel、calico都是CNI插件。

十八、阿里云产品

1、阿里云四大件

ECS云服务器;RDS云数据库;SLB负载均衡;OSS对象存储。

2、阿里云安全系列产品

WAFweb防火墙;安骑士主机安全;DDoS高防;安全组。

3、阿里云网络中间件相关

VPC专有网络;SLB负载均衡;NAT网关;VPN;云企业网CEN。

4、阿里云万网产品

域名服务DNS。

5、公有云和私有云概念

公有云:资源对外公众提供服务,阿里云腾讯云;
私有云:部署企业内部,仅供企业内部使用。

6、ECS 优势

无需硬件采购;弹性伸缩按需付费;快速创建释放;快照备份;安全组网络隔离。

7、ECS 主要以下功能组件

实例、磁盘云盘、安全组、快照、镜像。

8、什么是RDS

关系型云数据库;MySQL、SQLServer;托管数据库,备份、监控、高可用自动运维,减少DBA运维成本。

9、为什么选择云数据库RDS

自动高可用主备;自动备份;监控告警;版本升级;无需运维底层机器;防漏洞补丁自动更新。

10、vpc

专有虚拟网络;云上逻辑隔离网络,自定义网段,子网,路由表,安全组。不同vpc默认隔离。

11、cdn

内容分发网络;静态资源缓存到全国边缘节点;用户就近访问,降低源站压力,加速网站。

12、SLB 负载均衡

阿里云负载均衡;四层七层负载均衡;分发流量后端ECS实例;健康检查,故障实例自动摘除。

十九、gitlab+jinkens

1、gitlab 公司代码提交合并流程

开发本地git commit提交;push远程gitlab;提交Merge Request;代码评审;审核通过合并到主分支。

2、持续集成概述CI

开发提交代码,自动拉取代码,自动编译、单元测试,快速验证代码变更是否引入bug。

3、持续集成流程

开发提交代码触发钩子;拉取代码;编译构建;单元测试;输出构建报告;失败告警通知开发。

4、持续集成的组成要素

代码仓库gitlab;CI工具jenkins;构建环境;单元测试;通知告警。

5、持续集成的好处

尽早发现bug;减少集成冲突;自动化,减少人工操作。

6、Jenkins 是什么

开源CI/CD持续集成工具;流水线自动化构建、测试、部署项目。

7、Jenkins 构建

拉取git源码;编译;单元测试;打包制品;部署。

8、Jenkins 特征

插件丰富;支持自由风格项目;支持Pipeline流水线;web界面;触发方式多样(git钩子、定时、手动)。

9、Jenkins 工作流程

代码仓库提交代码 → webhook触发Jenkins任务 → 拉取代码 → 构建编译测试 → 打包制品 → 部署测试/生产环境。

10、GitHub 和GitLab 的区别

GitHub:公网代码托管;GitLab可以私有化部署企业内网代码仓库。

11、git 相关概念

工作区、暂存区stage、本地仓库、远程仓库;commit提交;branch分支;merge合并;tag标签。

12、持续集成系统的工作流程

代码提交触发CI;检出代码;编译;测试;产出包;部署。

13、gitlab 日常使用

分支管理;merge request合并;webhook触发器;CI Runner执行gitlab‑ci流水线;权限管理。

14、git 常用命令

git clone
git add
git commit
git push
git pull
git branch
git checkout
git merge
git log
git tag

15、你们公司的上线流程是怎么样的?

参考回答:开发提交feature分支,提交MR到gitlab,代码评审;合并到develop测试分支;jenkins流水线自动构建,部署测试环境;测试人员测试验证;测试通过,合并到release;灰度发布;全量上线;线上监控。

二十、堡垒机

1、什么是堡垒机,其主要功能

堡垒机(运维审计跳板机),运维人员访问服务器统一入口。
功能:账号统一管理;访问权限管控;操作录像审计回放;命令拦截。

2、堡垒机的功能

账号管理、授权访问、操作录像审计、会话监控、命令控制、登录二次认证。

3、常见的堡垒机产品

Jumpserver(开源);奇安信、深信服商业堡垒机。

4、常见堡垒机的主要功能分为以下几个模块

账号管理;授权管理;审计录像;资产管理;告警。

5、堡垒机身份认证方式

账号密码;密钥登录;MFA二次验证码;LDAP对接企业账号。

6、堡垒机的常见运维方式

Web界面;web终端;SSH跳板。

7、堡垒机的部署方式

单机部署;主备高可用部署。

8、Jumpserver

开源堡垒机;Python开发;资产管理;账号授权;会话录像审计;支持Windows/Linux设备;MFA认证。

9、Jumpserver 组件架构

Core核心服务;KoKo组件(SSH终端);Lina前端Web;Guacamole(web RDP/VNC)。

二十一、DevOps

1、什么是DevOps

DevOps是理念文化;打通开发Dev和运维Ops,消除部门壁垒;自动化工具实现软件快速、可靠交付;文化+流程+工具。

2、什么是持续集成CI

Continuous Integration,持续集成;开发频繁把代码合并主干,自动编译测试,尽早发现缺陷。

3、什么是持续交付CD

Continuous Delivery持续交付;在CI基础,代码构建完成得到可随时发布制品包,随时可以部署到生产。

4、什么是持续部署

Continuous Deployment持续部署;持续交付更进一步,制品自动部署生产环境,不需要人工确认。

5、什么是持续测试

自动化测试融入流水线,单元测试、接口测试,流水线自动执行测试用例。

6、什么是版本控制

git版本控制,跟踪代码变更,记录历史,多人协作。

7、什么是Git

分布式版本控制系统,代码版本管理。

8、为什么DevOps 很重要?DevOps 如何使团队受益

打破开发运维壁垒;缩短交付周期;减少人工操作,降低人为故障;快速反馈问题;业务迭代更快。

9、DevOps 对开发人员有什么帮助

快速反馈代码质量;自动化流程;快速获取测试环境;更早发现问题。

10、为什么DevOps 最近在软件交付中越来越受欢迎

互联网业务迭代速度要求高;传统开发运维割裂,上线慢故障多;云原生容器技术成熟,工具链完善。

11、CI/CD 的好处是什么

自动化;减少重复人工;快速反馈bug;发布标准化;降低上线风险。

12、持续交付有哪些好处

软件包随时可上线;发布风险可控;支持灰度发布;交付周期缩短。

13、持续部署有哪些好处

全流程自动化,减少人工介入;迭代速度最快。

14、典型的DevOps 工作流程

代码管理GitLab → CI持续集成(构建单元测试)→ 制品仓库 → 持续交付部署测试环境 → 自动化测试 → 灰度 → 生产发布 → 监控反馈。

15、DevOps 的核心操作是什么

版本控制;CI/CD流水线自动化;基础设施即代码IaC;监控反馈;跨团队协作。

16、团队在实施DevOps 之前需要考虑哪些预防措施

团队文化转变;工具链选型;流水线流程梳理;权限安全;监控告警;回滚方案。

17、SCM 团队在DevOps 中扮演什么角色

SCM源代码管理;版本管理,管理代码,支持CI流水线触发。

18、质量保证(QA)团队在DevOps 中扮演什么角色

把测试自动化融入流水线;编写自动化用例;质量门禁,流水线不通过不能继续部署。

19、DevOps 使用了哪些工具?描述你使用任何这些工具的经验

代码GitLab;CI/CD Jenkins;容器Docker/K8s;制品Harbor;监控Prometheus;IaC Ansible。

20、DevOps 中如何管理变更

代码评审;流水线门禁;灰度发布;版本记录;回滚机制;变更审计。

21、CI/CD 的一些核心组件是什么

代码仓库gitlab;CI引擎jenkins/gitlab‑ci;制品仓库harbor;部署平台k8s;测试工具;告警通知。

22、CI/CD 的一些常见做法是什么

分支策略;代码评审;自动化单元/接口测试;制品不可变;环境隔离;灰度发布;失败快速回滚。

23、实施DevOps 会发生什么

开发运维协作;大量自动化流水线;软件迭代速度加快;快速反馈;需要配套监控告警。

24、常见的CI/CD 工具有哪些

Jenkins;GitLab‑CI;ArgoCD;Tekton;Github Actions。

25、高效的持续集成工作流程是什么样的

  1. 开发提交代码,触发CI;
  2. 拉取代码,编译,单元测试,代码扫描;
  3. 门禁不通过直接终止,通知开发修复;
  4. 通过产出制品镜像;部署测试环境;自动接口测试;
  5. 测试验证完成,支持手动/自动发布生产,灰度;
  6. 全链路监控;异常回滚。

26、敏捷和DevOps 之间的主要区别是什么

敏捷聚焦**软件开发过程,需求迭代、快速开发;DevOps聚焦开发之后交付、运维全链路;敏捷管怎么写代码;DevOps管怎么把代码安全上线运行。

27、持续集成、持续交付和持续部署之间有什么区别

  • CI持续集成:代码提交自动构建+测试;保证代码集成无问题。
  • CD持续交付:产出可发布包,可以随时部署,部署需要人工确认。
  • CD持续部署:在交付基础上,自动部署到生产,无人工审批

28、持续交付和持续部署根本区别

持续交付:制品准备就绪,发布动作需要人工确认。
持续部署:流水线完成,自动直接部署生产。

29、持续集成和持续交付有什么区别

CI只做构建测试;持续交付在CI之后,产出可以部署的软件包,支持部署到各类环境。

30、DevOps 和持续交付有什么区别

DevOps是完整的理念文化,包含人、流程、全套工具;持续交付是DevOps其中的一套软件交付实践。

31、敏捷、精益IT 和DevOps 之间有什么区别

敏捷:软件研发方法论,快速迭代开发软件。
精益IT:消除流程浪费。
DevOps:打通开发‑测试‑运维,自动化交付上线运维,包含敏捷+精益思想,侧重交付与运行阶段。

上一篇
下一篇