2024年运维最全运维工程师面试总结含答案_运维面试2,Linux运维自定义View详解
2024年运维最全运维工程师面试总结(含答案)_运维面试(2),Linux运维自定义View详解
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
9. ansible有哪些模块?功能是什么?
模块 | 功能 |
---|---|
copy | 拷贝文件到被控端 |
cron | 定时任务 |
fetch | 拷贝被控端文件到本地 |
file | 文件模块 |
group | 用户组模块 |
user | 用户模块 |
hostname | 主机名模块 |
script | 脚本模块 |
service | 服务启动模块 |
command | 远程执行命令模块 |
shell | 远程执行命令模块,command高级用法 |
yum | 安装包组模块 |
setup | 查看主机系统信息 |
10. nginx为什么比apache快?
- nginx采用epoll模型
- apache采用select模型
11. 四层负载和七层负载区别是什么?
- 四层基于IP+端口进行转发
- 七层就是基于URL等应用层信息的负载均衡
12. lvs有哪些工作模式?哪个性能高?
- dr:直接路由模式,请求由 LVS 接受,由真实提供服务的服务器直接返回给用户,返回的时候不经过 LVS。(性能最高)
- tun:隧道模式,客户端将访问vip报文发送给LVS服务器。LVS服务器将请求报文重新封装,发送给后端真实服务器。后端真实服务器将请求报文解封,在确认自身有vip之后进行请求处理。后端真实服务器在处理完数据请求后,直接响应客户端。
- nat:网络报的进出都要经过 LVS 的处理。LVS 需要作为 RS 的网关。当包到达 LVS 时,LVS 做目标地址转换(DNAT),将目标 IP 改为 RS 的 IP。RS 接收到包以后,仿佛是客户端直接发给它的一样。RS 处理完,返回响应时,源 IP 是 RS IP,目标 IP 是客户端的 IP。这时 RS 的包通过网关(LVS)中转,LVS 会做源地址转换(SNAT),将包的源地址改为 VIP,这样,这个包对客户端看起来就仿佛是 LVS 直接返回给它的。客户端无法感知到后端 RS 的存在。
- fullnat模式:fullnat模式和nat模式相似,但是与nat不同的是nat模式只做了两次地址转换,fullnat模式却做了四次。
13. lvs nginx haproxy keeplived区别,优缺点?
参考链接:https://blog.51cto.com/816885/2529993?source=dra
14. 如下url地址,各个部分的含义
- https: 使用https加密协议访问
- : 请求地址
- ?word&ie=utf-8: get请求的参数,多个参数&连接
15. tomcat各个目录含义,如何修改端口,如何修改内存数?
- bin 存放tomcat命令
- conf 存放tomcat配置文件
- lib 存放tomcat运行需要加载的jar包
- log 存在Tomcat运行产生的日志
- temp 运行过程中产生的临时文件
- webapps 站点目录
- work 存放tomcat运行时的编译后的文件
- conf/server.xml 修改端口号
- bin/catalina.sh 修改jvm内存
16. nginx反向代理时,如何使后端获取真正的访问来源ip?
在location配置段添加以下内容:
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
17. nginx负载均衡算法有哪些?
- rr 轮训
- weight 加权轮训
- ip_hash 静态调度算法
- fair 动态调度算法
- url_hash url哈希
- leat_conn 最小连接数
18. 如何进行压力测试?
例如:模拟10个用户,对百度首页发起总共100次请求。
测试命令: ab -n 100 -c 10
19. curl命令如何发送https请求?如何查看response头信息?如何发送get和post表单信息?
- 发送https请求:curl –tlsv1 ‘https://www.bitstamp.net/api/v2/transactions/btcusd/’
- response头信息 :curl -I
- get:curl 请求地址?key1=value1&key2=value2&key3=value3
- post: curl -d “key1=value1&key2=value2&key3=value3”
二、mysql
1. 索引的为什么使查询加快?有啥缺点?
默认的方式是根据搜索条件进行全表扫描,遇到匹配条件的就加入搜索结果集合。如果我们对某一字段增加索引,查询时就会先去索引列表中一次定位到特定值的行数,大大减少遍历匹配的行数,所以能明显增加查询的速度
缺点:
- 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加
- 索引需要占物理空间,除了数据表占用数据空间之外,每一个索引还要占用一定的物理空间,如果需要建立聚簇索引,那么需要占用的空间会更大
- 以表中的数据进行增、删、改的时候,索引也要动态的维护,这就降低了整数的维护速度
2. sql语句左外连接 右外连接 内连接 全连接区别
3. mysql数据备份方式,如何恢复?你们的备份策略是什么?
- 物理完全备份
备份所有数据库文件:/var/lib/mysql/*
备份所有binlog文件: /var/lib/mysql/mysql-bin.*
备份选项文件: /etc/my.cnf
- mysqldump逻辑备份
mysqldump -uroot -p –all-databases > /backup/mysqldump/all.db
- 物理备份恢复
mv /var/lib/mysql /var/lib/mysql.old #先把原来的数据目录改名
cp -a /backups/mysql /var/lib
- 逻辑备份数据恢复
mysql > use db_name
mysql > source /backup/mysqldump/db_name.db
4. 如何配置数据库主从同步,实际工作中是否遇到数据不一致问题?如何解决?
为每个服务器配置唯一值的server-id
- 主库
开启binlog日志
创建主从复制用户
查看master的状态
- 从库
change master to设置主库信息
start slave开始复制
5. mysql约束有哪些?
- 非空约束
- 唯一约束
- 主键约束
- 外键约束
6. 二进制日志(binlog)用途?
BINLOG记录数据库的变更过程。例如创建数据库、建表、修改表等DDL操作、以及数据表的相关DML操作,这些操作会导致数据库产生变化,开启binlog以后导致数据库产生变化的操作会按照时间顺序以“事件”的形式记录到binlog二进制文件中
7. mysql数据引擎有哪些?
- 常用的 myisam、innodb
- 区别:
InnoDB 支持事务,MyISAM 不支持,这一点是非常之重要。事务是一种高级的处理方式,如在一些列增删改中只要哪个出错还可以回滚还原,而 MyISAM就不可以了;
MyISAM 适合查询以及插入为主的应用,InnoDB 适合频繁修改以及涉及到安全性较高的应用;
InnoDB 支持外键,MyISAM 不支持;
MyISAM 是默认引擎,InnoDB 需要指定;
InnoDB 不支持 FULLTEXT 类型的索引;
InnoDB 中不保存表的行数,如 select count( ) from table 时,InnoDB;需要扫描一遍整个表来计算有多少行,但是 MyISAM 只要简单的读出保存好的行数即可。注意的是,当 count( )语句包含 where 条件时 MyISAM 也需要扫描整个表;
对于自增长的字段,InnoDB 中必须包含只有该字段的索引,但是在 MyISAM表中可以和其他字段一起建立联合索引;
清空整个表时,InnoDB 是一行一行的删除,效率非常慢。MyISAM 则会重建表;
InnoDB 支持行锁(某些情况下还是锁整表,如 update table set a=1 where user like ‘%lee%’
8. 如何查询mysql数据库存放路径?
mysql> show variables like 'datadir%';
+---------------+------------------------+
| Variable_name | Value |
+---------------+------------------------+
| datadir | /usr/local/mysql/data/ |
+---------------+------------------------+
1 row in set (0.00 sec)
9. mysql数据库文件后缀名有哪些?用途什么?
- myisam
.frm文件:保护表的定义
.myd:保存表的数据
.myi:表的索引文件
- innodb
.frm:保存表的定义
.ibd:表空间
10. 如何修改数据库用户的密码?
- mysql8之前
set password for 用户名@localhost = password('新密码');
mysqladmin -u用户名 -p旧密码 password 新密码
update user set password=password('123') where user='root' and host='localhost';
- mysql8之后
# mysql8初始对密码要求高,简单的字符串不让改。先改成:MyNewPass@123;
alter user 'root'@'localhost' identified by 'MyNewPass@123';
# 降低密码难度
set global validate_password.policy=0;
set global validate_password.length=4;
# 修改成简易密码
alter user 'root'@'localhost'IDENTIFIED BY '1111';
11. 如何修改用户权限?如何查看?
- 授权:
grant all on *.* to user@'%' identified by 'passwd'
- 查看权限
show grants for user@'%';
三、nosql
1. redis数据持久化有哪些方式?
- rdb
- aof
2. redis集群方案有哪些?
官方cluster方案
twemproxy代理方案
哨兵模式
codis
客户端分片
3. redis如何进行数据备份与恢复?
- 备份
redis 127.0.0.1:6379> SAVE
创建 redis 备份文件也可以使用命令 BGSAVE,该命令在后台执行。
- 还原
只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可
redis 127.0.0.1:6379> CONFIG GET dir
- “dir”
- “/usr/local/redis/bin”
4. MongoDB如何进行数据备份?
mongoexport / mongoimport
mongodump / mongorestore
5. kafka为何比redis rabbitmq快?
四、docker
1. dockerfile有哪些关键字?用途是什么?
2. 如何减小dockerfile生成镜像体积?
- 尽量选取满足需求但较小的基础系统镜像,例如大部分时候可以选择debian:wheezy或debian:jessie镜像,仅有不足百兆大小;
- 清理编译生成文件、安装包的缓存等临时文件;
- 安装各个软件时候要指定准确的版本号,并避免引入不需要的依赖;
- 从安全角度考虑,应用要尽量使用系统的库和依赖;
- 如果安装应用时候需要配置一些特殊的环境变量,在安装后要还原不需要保持的变量值;
3. dockerfile中CMD与ENTRYPOINT区别是什么?
- CMD 和 ENTRYPOINT 指令都是用来指定容器启动时运行的命令。
- 指定 ENTRYPOINT 指令为 exec 模式时,CMD指定的参数会作为参数添加到 ENTRYPOINT 指定命令的参数列表中。
4. dockerfile中COPY和ADD区别是什么?
- COPY指令和ADD指令都可以将主机上的资源复制或加入到容器镜像中
- 区别是ADD可以从 远程URL中的资源不会被解压缩。
- 如果是本地的压缩包ADD进去会被解压缩
5. docker的cs架构组件有哪些?
6. docker网络类型有哪些?
- host模式
- container模式
- none模式
- bridge模式
7. 如何配置docker远程访问?
- vim /lib/systemd/system/docker.service
- 在ExecStart=后添加配置,注意,需要先空格后,再输入 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
8. docker核心namespace CGroups 联合文件系统功能是什么?
- namespace:资源隔离
- cgroup:资源控制
- 联合文件系统:支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下
9. 命令相关:导入导出镜像,进入容器,设置重启容器策略,查看镜像环境变量,查看容器占用资源
- 导入镜像 docker load -i xx.tar
- 导出镜像docker save -o xx.tar image_name
- 进入容器docker exec -it 容器命令 /bin/bash
- 设置容器重启策略启动时 –restart选项
- 查看容器环境变量 docker exec {containerID} env
- 查看容器资源占用docker stats test2
10. 构建镜像有哪些方式?
- dockerfile
- 容器提交为镜像
11. docker和vmware虚拟化区别?
五、kubernetes
1. k8s的集群组件有哪些?功能是什么?
2. kubectl命令相关:如何修改副本数,如何滚动更新和回滚,如何查看pod的详细信息,如何进入pod交互?
- 修改副本数 kubectl scale deployment redis –replicas=3
- 活动更新kubectl set image deployments myapp-deploy myapp=myapp:v2
- 回滚kubectl rollout undo deployments myapp-deploy
- 查看pod详细信息kubectl describe pods/
- 进入pod交互kubectl exec -it -c bash
3. etcd数据如何备份?
- etcdctl –endpoints=“https://192.168.32.129:2379,https://192.168.32.130:2379,192.168.32.128:2379” –cacert=/etc/kubernetes/cert/ca.pem –key=/etc/etcd/cert/etcd-key.pem –cert=/etc/etcd/cert/etcd.pem snapshot save snashot1.db
- Snapshot saved at snashot1.db
4. k8s控制器有哪些?
- 副本集(ReplicaSet)
- 部署(Deployment)
- 状态集(StatefulSet)
- Daemon集(DaemonSet)
- 一次任务(Job)
- 计划任务(CronJob)
- 有状态集(StatefulSet)
5. 哪些是集群级别的资源?
- Namespace
- Node
- Role
- ClusterRole
- RoleBinding
- ClusterRoleBinding
6. pod状态有哪些?
- Pending 等待中
- Running 运行中
- Succeeded 正常终止
- Failed 异常停止
- Unkonwn 未知状态
7. pod创建过程是什么?
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SJ8ERoki-1685248088364)(https://api.cuiliangblog.cn/v1/public/imgProxy/?url=https://cdn.nlark.com/yuque/0/2020/jpeg/2308212/1606385821622-f36232c8-15a5-46dc-a750-bfc90624b205.jpeg#align=left&display=inline&height=524&margin=%5Bobject%20Object%5D&name=SAVE_20201126_181652.jpg&originHeight=524&originWidth=790&size=92836&status=done&style=none&width=790)]
8. pod重启策略有哪些?
Pod的重启策略有3种,默认值为Always。
- Always : 容器失效时,kubelet 自动重启该容器;
- OnFailure : 容器终止运行且退出码不为0时重启;
- Never : 不论状态为何, kubelet 都不重启该容器
9. 资源探针有哪些?
- ExecAction:在容器中执行一个命令,并根据其返回的状态码进行诊断的操作称为Exec探测,状态码为0表示成功,否则即为不健康状态。
- TCPSocketAction:通过与容器的某TCP端口尝试建立连接进行诊断,端口能够成功打开即为正常,否则为不健康状态。
- HTTPGetAction:通过向容器IP地址的某指定端口的指定path发起HTTP GET请求进行诊断,响应码为2xx或3xx时即为成功,否则为失败。
10. requests和limits用途是什么?
- “requests”属性定义其请求的确保可用值,即容器运行可能用不到这些额度的资源,但用到时必须要确保有如此多的资源可用
- ”limits”属性则用于限制资源可用的最大值,即硬限制
11. kubeconfig文件包含什么内容,用途是什么?
包含集群参数(CA证书、API Server地址),客户端参数(上面生成的证书和私钥),集群context 信息(集群名称、用户名)。
12. RBAC中role和clusterrole区别,rolebinding和 clusterrolebinding区别?
- Role 可以定义在一个 namespace 中,如果想要跨 namespace则可以创建ClusterRole,ClusterRole 具有与 Role相同的权限角色控制能力,不同的是 ClusterRole 是集群级别的
- RoleBinding 适用于某个命名空间内授权,而 ClusterRoleBinding 适用于集群范围内的授权
13. ipvs为啥比iptables效率高?
IPVS模式与iptables同样基于Netfilter,但是ipvs采用的hash表,iptables采用一条条的规则列表。iptables又是为了防火墙设计的,集群数量越多iptables规则就越多,而iptables规则是从上到下匹配,所以效率就越是低下。因此当service数量达到一定规模时,hash查表的速度优势就会显现出来,从而提高service的服务性能
14. sc pv pvc用途,容器挂载存储整个流程是什么?
- PVC:Pod 想要使用的持久化存储的属性,比如存储的大小、读写权限等。
- PV :具体的 Volume 的属性,比如 Volume 的类型、挂载目录、远程存储服务器地址等。
- StorageClass:充当 PV 的模板。并且,只有同属于一个 StorageClass 的 PV 和 PVC,才可以绑定在一起。当然,StorageClass 的另一个重要作用,是指定 PV 的 Provisioner(存储插件)。这时候,如果你的存储插件支持 Dynamic Provisioning 的话,Kubernetes 就可以自动为你创建 PV 了。
15. nginx ingress的原理本质是什么?
ngress controller通过和kubernetes api交互,动态的去感知集群中ingress规则变化,
然后读取它,按照自定义的规则,规则就是写明了哪个域名对应哪个service,生成一段nginx配置,
再写到nginx-ingress-controller的pod里,这个Ingress
controller的pod里运行着一个Nginx服务,控制器会把生成的nginx配置写入/etc/nginx.conf文件中,
然后reload一下使配置生效。以此达到域名分配置和动态更新的问题。
16. 描述不同node上的Pod之间的通信流程
17. k8s集群节点需要关机维护,需要怎么操作
- 进行pod驱逐:kubelet drain <node_name>
- 检查node上是否无pod运行,切被驱逐的pod已经在其他节点运行正常
- 关机维护
- 开机启动相关服务(注意启动顺序)
- 解除node节点不可调度:kubectl uncordon node
- 创建测试pod,并使用节点标签测试节点可以被正常调度
18. Calico和flannel区别
- Flannel(简单、使用居多):基于Vxlan技术(叠加网络+二层隧道),不支持网络策略
- Calico(较复杂,使用率少于Flannel):也可以支持隧道网络,但是是三层隧道(IPIP),支持网络策略
- Calico项目既能够独立地为Kubernetes集群提供网络解决方案和网络策略,也能与flannel结合在一起,由flannel提供网络解决方案,而Calico此时仅用于提供网络策略。
六、prometheus
1. prometheus对比zabbix有哪些优势?
**
2. prometheus组件有哪些,功能是什么?
3. 指标类型有哪些?
- Counter(计数器)
- Guage(仪表盘)
- Histogram(直方图)
- Summary(摘要)
4. 在应对上千节点监控时,如何保障性能
最后的话
最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!
资料预览
给大家整理的视频资料:
给大家整理的电子书资料:
如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
488874c34bac0f26bf6b812e1.png)
3. 指标类型有哪些?
- Counter(计数器)
- Guage(仪表盘)
- Histogram(直方图)
- Summary(摘要)
4. 在应对上千节点监控时,如何保障性能
最后的话
最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!
资料预览
给大家整理的视频资料:
[外链图片转存中…(img-9A4HK05E-1715275168593)]
给大家整理的电子书资料:
[外链图片转存中…(img-lAdsvkYb-1715275168593)]
如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!