高级运维工程师面试题
“机会总是留给有准备的人的”,从作者这一周的面试经历来看,Linux运维工程师必备的基础知识可谓是由点及面、由浅入深。尤其是在云原生潮流趋势下,我们需要持续拥抱新技术、新思想,而不是在自己的舒适区原地踏步。
因此希望有需求的人能够抓住2021年的尾巴,夯实当下Linux运维工程师岗位的知识点,为明年的升值加薪做好准备!
0.0.0.1 一、linux
1.linux系统启动流程
- 第一步:开机自检,加载BIOS
- 第二步:读取MBR
- 第三步:Boot Loadergrub引导菜单
- 第四步:加载kernel内核
- 第五步:init进程依据inittab文件夹来设定运行级别
- 第六步:init进程执行rc.sysinit
- 第七步:启动内核模块
- 第八步:执行不同运行级别的脚本程序
- 第九步:执行/etc/rc.d/rc.lo
2.linux文件类型
3.centos6和7怎么将源码安装的程序添加到开机自启动?
- 通用方法:编辑/etc/rc.d/rc.local文件,在文件末尾添加启动服务命令
- centos6①进入到/etc/rc.d/init.d目录下;②新建一个服务启动脚本,脚本中指定chkconfig参数;③添加执行权限;④执行chkconfig –add 添加服务自启动;
- centos7①进入到/usr/lib/systemd/system目录下;②新建自定义服务文件,文件中包含[Unit] [Service] [Install]相关配置,然后添加下执行权限;③执行systemctl enable 服务名称;
4.简述lvm,如何给使用lvm的/分区扩容?
- 功能:可以对磁盘进行动态管理。动态按需调整大小
- 概念:
①PV - 物理卷:物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘,也可以是raid设备。
②VG - 卷组:卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。
③LV - 逻辑卷:逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。
添加图片注释,不超过 140 字(可选)
- 给/分区扩容步骤:
①添加磁盘
②使用fdisk命令对新增加的磁盘进行分区
③分区完成后修改分区类型为lvm
④使用pvcreate创建物理卷
⑤使用vgextend命令将新增加的分区加入到根目录分区中
⑥使用lvextend命令进行扩容
⑦使用xfs_growfs调整卷分区大小
5.为何du和df统计结果不一致?
- 用户删除了大量的文件被删除后,在文件系统目录中已经不可见了,所以du就不会再统计它。
- 然而如果此时还有运行的进程持有这个已经被删除的文件句柄,那么这个文件就不会真正在磁盘中被删除,分区超级块中的信息也就不会更改,df仍会统计这个被删除的文件。
- 可通过 lsof命令查询处于deleted状态的文件,被删除的文件在系统中被标记为deleted。如果系统有大量deleted状态的文件,会导致du和df统计结果不一致。
6.如何升级内核?
- 方法一
- 方法二
7.nginx日志访问量前十的ip怎么统计?
8.如何删除/var/log/下.log结尾的30天前的日志?
9.ansible有哪些模块?功能是什么?
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. tomcat各个目录含义,如何修改端口,如何修改内存数?
- bin 存放tomcat命令
- conf 存放tomcat配置文件
- lib 存放tomcat运行需要加载的jar包
- log 存在Tomcat运行产生的日志
- temp 运行过程中产生的临时文件
- webapps 站点目录
- work 存放tomcat运行时的编译后的文件
- conf/server.xml 修改端口号
- bin/catalina.sh 修改jvm内存
14. nginx反向代理时,如何使后端获取真正的访问来源ip?
15. nginx负载均衡算法有哪些?
- rr 轮训
- weight 加权轮训
- ip_hash 静态调度算法
- fair 动态调度算法
- url_hash url哈希
- leat_conn 最小连接数
16. 如何进行压力测试?
例如:模拟10个用户,对百度首页发起总共100次请求。
17. curl命令如何发送https请求?如何查看response头信息?如何发送get和post表单信息?
- 发送https请求:
- response头信息 :curl -I
- get:curl 请求地址?key1=value1&key2=value2&key3=value3
- post:curl -d “key1=value1&key2=value2&key3=value3”
0.0.0.2 二、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_namemysql > 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
- 区别:
(1)InnoDB 支持事务,MyISAM 不支持,这一点是非常之重要。事务是一种高级的处理方式,如在一些列增删改中只要哪个出错还可以回滚还原,而 MyISAM就不可以了;
(2)MyISAM 适合查询以及插入为主的应用,InnoDB 适合频繁修改以及涉及到安全性较高的应用;
(3)InnoDB 支持外键,MyISAM 不支持;
(4)MyISAM 是默认引擎,InnoDB 需要指定;
(5)InnoDB 不支持 FULLTEXT 类型的索引;
(6)InnoDB 中不保存表的行数,如 select count() from table 时,InnoDB;需要扫描一遍整个表来计算有多少行,但是 MyISAM 只要简单的读出保存好的行数即可。注意的是,当 count()语句包含 where 条件时 MyISAM 也需要扫描整个表;
(7)对于自增长的字段,InnoDB 中必须包含只有该字段的索引,但是在 MyISAM表中可以和其他字段一起建立联合索引;
(8)清空整个表时,InnoDB 是一行一行的删除,效率非常慢。MyISAM 则会重建表;
(9)InnoDB 支持行锁(某些情况下还是锁整表,如 update table set a=1 where user like ‘%lee%’
8. 如何查询mysql数据库存放路径?
- myisam
.frm文件:保护表的定义.myd:保存表的数据.myi:表的索引文件
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@’%’;
0.0.0.3 三、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
\4. MongoDB如何进行数据备份?
mongoexport / mongoimportmongodump / mongorestore
5. kafka为何比redis rabbitmq快?
0.0.0.4 四、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虚拟化区别?
0.0.0.5 五、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创建过程是什么?
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里,这个Ingresscontroller的pod里运行着一个Nginx服务,控制器会把生成的nginx配置写入/etc/nginx.conf文件中,
- 然后reload一下使配置生效。以此达到域名分配置和动态更新的问题。
16. 描述不同node上的Pod之间的通信流程
17. k8s集群节点需要关机维护,需要怎么操作
- 进行pod驱逐:kubelet drain
- 检查node上是否无pod运行,切被驱逐的pod已经在其他节点运行正常
- 关机维护
- 开机启动相关服务(注意启动顺序)
- 解除node节点不可调度:kubectl uncordon node
- 创建测试pod,并使用节点标签测试节点可以被正常调度
18. canal和flannel区别
- Flannel(简单、使用居多):基于Vxlan技术(叠加网络+二层隧道),不支持网络策略
- Calico(较复杂,使用率少于Flannel):也可以支持隧道网络,但是是三层隧道(IPIP),支持网络策略
- Calico项目既能够独立地为Kubernetes集群提供网络解决方案和网络策略,也能与flannel结合在一起,由flannel提供网络解决方案,而Calico此时仅用于提供网络策略。
0.0.0.6 六、prometheus
1. prometheus对比zabbix有哪些优势?
https://blog.csdn.net/wangyiyungw/article/details/85774969**
2. prometheus组件有哪些,功能是什么?
3. 指标类型有哪些?
- Counter(计数器)
- Guage(仪表盘)
- Histogram(直方图)
- Summary(摘要)
4. 在应对上千节点监控时,如何保障性能
- 降低采集频率
- 缩小历史数据保存天数,
- 使用集群联邦和远程存储
5. 简述从添加节点监控到grafana成图的整个流程
- 被监控节点安装exporter
- prometheus服务端添加监控项
- 查看prometheus web界面——status——targets
- grafana创建图表
6. 在工作中用到了哪些exporter
- node-exporter监控linux主机
- cAdvisor监控容器
- MySQLD Exporter监控mysql
- Blackbox Exporter网络探测
- Pushgateway采集自定义指标监控
- process exporter进程监控
0.0.0.7 七、ELK
1. Elasticsearch的数据如何备份与恢复?
2. 你们项目中使用的logstash过滤器插件是什么?实现哪些功能?
- date 日期解析
- grok 正则匹配解析
- overwrite 写某个字段
- dissect 分隔符解析
- mutate 对字段做处理
- json 解析
- geoip 地理位置解析
- ruby 修改logstash event
3. 是否用到了filebeat的内置module?用了哪些?
4. elasticsearch分片副本是什么?你们配置的参数是多少?
0.0.0.8 八、运维开发
\1. 备份系统中所有容器镜像
#备份镜像列表
\2. 编写脚本,定时备份某个库,然后压缩,发送异机
- 公共部分定义函数,如获取时间戳,配置报警接口
- 多使用if判断是否存在异常并处理,如数据库大,检测任务是否完成。检测生成文件大小是否是空文件
\3. 批量获取所有主机的系统信息
- 使用python的paramiko库,ssh登陆主机执行查询操作
- 使用shell脚本批量ssh登陆主机并执行命令
- 使用ansible的setup模块获取主机信息
- prometheus的node_exporter收集主机资源信息
\4. django的mtv模式流程
\5. python如何导出、导入环境依赖包
- 导出环境
pip freeze » requirements.txt
- 导入环境
pip install -r requirement.txt
\6. python创建,进入,退出,查看虚拟环境
- 安装软件包
pip3 install virtualenv
- 检测安装是否成功
virtualenv –version
- 创建虚拟环境
- cd到要创建虚拟环境的目录
cd github/test/venv/
- 创建虚拟环境
virtualenv test
- 激活虚拟环境
source test/bin/activate(activate路径)
- 退出虚拟环境
deactivate
\7. flask和django区别,应用场景
- Django功能大而全,Flask只包含基本的配置 Django的一站式解决的思路,能让开发者不用在开发之前就在选择应用的基础设施上花费大量时间。Django有模板,表单,路由,认证,基本的数据库管理等等内建功能。与之相反,Flask只是一个内核,默认依赖于两个外部库:Jinja2 模板引擎和 Werkzeug WSGI 工具集,其他很多功能都是以扩展的形式进行嵌入使用。
- Flask 比 Django 更灵活 用Flask来构建应用之前,选择组件的时候会给开发者带来更多的灵活性 ,可能有的应用场景不适合使用一个标准的ORM(Object-Relational Mapping 对象关联映射),或者需要与不同的工作流和模板系统交互
\8. 列举常用的git命令
- $ git init
- $ git config
- $ git add
- $ git commit
- $ git branch
- $ git checkout
- $ git tag
- $ git push
- $ git status
- $ git log
\9. git gitlab jenkins的CICD流程如何配置
- 开发者git提交代码至gitlab仓库
- jenkins从gitlab拉取代码,触发镜像构建
- 镜像上传至harbor私有仓库
- 镜像下载至执行机器
- 镜像运行
0.0.0.9 九、日常工作
\1. 在日常工作中遇到了什么棘手的问题,如何排查
- redis弱口令导致中挖矿病毒,排查,优化
- k8s中开发的程序在用户上传文件时开启进程,未及时关闭,导致节点超出最大进程数
\2. 日常故障处理流程
- 查看报警内容,快速定位大致故障主机,服务,影响范围
- 告知运维经理故障,并开始排查
- 如果需要修改配置文件,重启服务器等操作,告知相关开发人员
- 完成故障处理
\3. 修改线上业务配置文件流程
- 先告知运维经理和业务相关开发人员
- 在测试环境测试,并备份之前的配置文件
- 测试无误后修改生产环境配置
- 观察生产环境是否正常,是否有报警
- 完成配置文件更改
\4. 业务pv多少?集群规模多少?怎么保障业务高可用?
十、开放性问题
\1. 你认为初级运维工程师和高级运维工程师的区别?
\2. 你认为未来运维发展方向?
0.1 1.Linux常见系统发行版本及常见的服务器品牌和配置有哪些?
1 )发行操作系统:CentOS RedhatUbuntu SUSE等
2 )服务器品牌:DEll R720,IBM 3650、HP DL360等;
3 )2颗6核 CPU-Xeon至强 E5-2630 2.4Ghz,2U服务器应用服务器:
300Gx2 RAID 1,容量为 300G数据库服务器:4x300G,RAID 10,容量为600G
0.2 2.Linux系统启动流程是什么?
硬件加电质检–>BIOS检测–>加载 MBR硬盘分区–>加载 linux内核–>加载init启动级别—>加载 rc.d/init进程–>加载 rc.local–>进入 mini-login
0.3 3.系统密码忘记破解的方法
按 e 编辑–kernel–e—末尾加入 single 或者 1–回车–b 重启–进入单用户,执行命令 passwd,输入两次密码–reboot。
如果磁盘出现 read only 只读状态,进入 rescue 模式,fsck.ext4/dev/sda2 修复
0.4 4.Apache有几种工作模式,分别简述两种工作模式及其优缺点?
Apache有2种工作模式,分别是 worker和 prefork模式:
Worker模式:以多个线程提供服务,所有的线程共享内存空间,一个
down掉,整个进程奔溃,适合高并发的场景。
Prefork模式:多个进程提供服务,比较稳定,占用内存高,提供中小访问
并发。
编译安装整合LAMP的方法:
编译 PHP模块,需要在 apache配置文件中加入引用模块: LoadModule
modules/php5.so
AddType application/x-httpd-php .php
Aapache虚拟主机:NameVirtualHost *:80
0.5 5.EXT4的文件分区,当用touch新建文件时报错,错误信息是磁盘已满,但是使用 df -h查看分区信息时只使用了 50%,请分析具体原因?
Block块文件,inode存放我们基础的信息数据,权限、大小的信息。
挂载移动硬盘:mount -t ntfs-3g /dev/sdb1 /mnt
硬盘分区:fdisk /dev/sdb –>n—p—回车—w写入
Mkfs.ext4 /dev/sdb1;最后挂载使用。
0.6 6.mysql数据库的备份还原是怎么做的?
Mysqldump <200G数据,都可以使用 mysqldump备份,会锁表,不能往里面写入数据,只能查询。
0.7 7.Nagios和cacti的区别是什么,你们公司主要用于监控什么?Nagios监控URL关键词做过吗?
Nagios和Cacti监控的项目一致,可以监控服务器 CPU、内存、硬盘、网络流量等等;
区别是Nagios主要基于Nagios插件监控服务器主机状态监控,及时发送报警信息;
Cacti是基于rrdtool绘图通过 snmp抓取数据,更偏向网络流量图形展示;
0.8 8.Mysql主从原理?如何实现主从复制,简单步骤?
1) Slave上执行 slave start,Slave IO线程会通过在 Master创建的授权用户连接上至 Master,并请求 master从指定的文件和位置之后发送 bin-log日志内容;
2) Master接收到来自 slave IO线程的请求后,master IO线程根据 slave发送的指定 bin-log日志 position点之后的内容,然后返回给 slave的 IO线程。
3)返回的信息中除了bin-log日志内容外,还有master最新的binlog文件名以及在 binlog中的下一个指定更新 position点;
4) Slave IO线程接收到信息后,将接收到的日志内容依次添加到Slave端的relay-log文件的最末端,并将读取到的 Master端的bin-log的文件名和position点记录到 master.info文件中,以便在下一次读取的时候能告知master从响应的 bin-log文件名及最后一个 position点开始发起请求;
5)Slave Sql线程检测到 relay-log中内容有更新,会立刻解析relay-log的内容成在 Master真实执行时候的那些可执行的 SQL语句,将解析的 SQL语句并在 Slave里执行,执行成功后, Master库与Slave库保持数据一致。
0.9 9. Mysql创建用户和数据库均为 zabbix,同时授权 192.168.1.11 IP通过zabbix用户和密码thinkmo实现完全访问?
mysql
Create database zabbix;
grant all on zabbix.* to ‘zabbix’@’192.168.1.11’ identified by ‘thinkmo’;
flush privileges;
0.10 10.LAMP如何分开多台部署,如果有多台个网站怎么实现?
编译PHP的时候,执行./configure –help|grep mysql –with-pdomysql=mysqlnd –with-mysql=mysqlnd –with-mysqli=mysqlnd
0.11 11. Cacti监控网卡流量最大100M,这是为什么?
在Cacti管理页面中选择 Console->Data Source找到需要修改的端口(即流量大于100M的端口),修改Output TypeID为In/Out bits (64-bit counters)(原来为 In/Out bits)
0.12 12.Cacti实现客户端监控,需要哪些步骤?
snmpwalk -v2c -c public 192.168.1.11抓取客户端数据信息.
0.13 13.符号链接和硬链接的区别?
1 )软链接可以跨分区链接,软链接支持目录同时也支持文件的链接。软链接源文件与目标文件 Inode不相同,从某种意义上来,会消耗省 inode空间。
2 )硬链接不能跨分区链接,硬链接只能对文件生效,对目录无效,也即是目录不能创建硬链接。硬链接源文件与目标文件共用一个inode值,从某种意义上来,节省 inode空间。
0.14 14.linux系统,如何手动设置硬盘为 GPT格式?
parted
select /dev/sdb
mklabel gpt
mkpart primary 0 -1
0.15 15.Bin-log日志如何恢复 mysql数据?例如 bin-log文件名为:mysqlbin.0001。
Mysqlbinlog mysql-bin.0001 >backup.sql
Source backup.sql;
0.16 16.用一条命令查看目前系统已启动服务所监听的端口?如何查看已知某端口号占用的进程?
netstat -antl |grep “LISTEN”
lsof -i :80
ps -ef |grep java
0.17 17.查找/data目录 30天之前修改过的文件并删除?
find /data -type f -mtime +30 |xargs rm -rf {} ;
0.18 18.写一个脚本将当前目录下大于 100k的文件移动至/tmp下
find . -size +100k -exec mv {} /tmp ;
0.19 19.利用sed命令将 test.txt中所有的回车替换成空格?
sed -i ‘s/\r/ /g’ test.txt
0.20 20.在每周6的凌晨3:15执行/home/shell/collect.pl,并将标准输出和标准错误输出到/dev/null设备,请写出 crontab中的语句?
15 3 * * 6 /home/shell/collect.pl > /dev/null 2>&1
0.21 21.crontab在11月份内,每天的早上6点到12点中,每隔2小时执行一次/usr/bin/httpd.sh怎么实现?
0 6-12/2 * 11 * bash /usr/bin/httpd.sh
0.22 22.匹配文本中的 word字符,并打印出该行及下面的 5行?
grep -A5 word filename
0.23 23.dmesg命令中看到 ip_conntrack: table full, droppingpacket.,如何解决?
加大 ip_conntrack_max的值;
降低 ip_conntrack_timeout的时间;
0.24 24.file1里面空行的所在行号?
grep -n “^$” file1
0.25 25.查询 file1以 abc结尾的行?
grep -n “abc$” file1
0.26 26.打印出 file1文件第 1到第三行?
sed -n ‘1,3p’file1用 head -3 file1也可以。
0.27 27.修改文本中以 thinkmo结尾的替换成 ThinkMo
sed -e ‘s/thinkmo$/THinkMo/g’ test.txt
0.28 28.使用 vim编辑器将 httpd.conf文件中/usr/local/apache字段替换为/etc/httpd/,请写成替换方法:
:%s//usr/local/apache//etc/http//g
:%s#/usr/local/apache#/etc/httpd/#g
:%s:/usr/local/apache:/etc/httpd/:g
29.统计 Nginx访问日志,访问量排在前 20的 IP列表
netstat -an|awk ‘/^tcp/ {print $1}’|sort|uniq -c|sort -nt|head -20
0.29 30.sed将 selinux状态设置为 disabled,请写出方法:
sed -i ‘s/SELINUX/s/enforcing/disabled/g’ /etc/selinux/config
sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config
0.30 31.打印出一个文件里面最大和最小值,thinkmo.txt文件内容如下:
123 1 44 789 98
134 42342342 879879 -123
cat thinkmo.txt |sed ’s/ /\n/g’|grep -v “^$"|sort -nr|sed -n ‘1p;$p’
0.31 32.OSI 7层模型分别是什么?
物理层–数据链路层-网络层-传输层-会话层-表示层-应用层
0.32 33.如何批量执行客户端某个脚本或者命令?简述思路?
通过 PSSH、ansible、saltstack、puppet等工具,将客户端的 IP地址写入文件列表,通过工具读取列表调取不同的模块,执行相应的命令或者脚本;
0.33 34.企业服务器硬盘常见的RAID种类及每种RAID特点原理
RAID 0:无差错控制的带区组,将一个数据分为两份分别放在两块硬盘上。不需要计算校验码。
RAID 1:镜象结构,类似于备份模式,一个数据被复制到两块硬盘上。
RAID5:分布式奇偶校验的独立磁盘结构,它的奇偶校验码存在于所有磁盘上,任何一个硬盘损坏,都可以根据其它硬盘上的校验位来重建损坏的数据。支持一块盘掉线后仍然正常运行。
RAID10:高可靠性与高效磁盘结构,一个带区结构加一个镜象结构,因为两种结构各有优缺点,因此可以相互补充,主要用于容量不大,但要求速度和差错控制的数据库中。
0.34 35.你们公司的大概有多少台服务器呢?架构是怎样的呢?
服务器总数 20台:
Nginx+keepalived 2台,LAMP架构 8台,Mysql数据库 1主 2从(3台),其他系统 LAMP、nagios、cacti、管理机共7台。
0.35 36.你们公司的 PV、UV、出口带宽分别是多少?
PV10w UV 1w带宽 20M
0.36 37.简述运维工程师的职责?需要具备什么素质?
作为一名运维工程师,首先要有责任心、做事情要认真仔细,因为小小的失误操作会导致很大的事故,同时运维人还需要不断学习新技术满足公司飞快的发展。
0.37 38.查询 file1里面空行的所在行号命令:
grep -n ^$ file
0.38 39.查询 file1以 abc结尾的行命令:
grep abc$ file1
0.39 40.打印出 file1文件第 1到第三行命令:
sed -n \1,3p\
head -3 file1
0.40 41.将本机的 8080端口转发至其他主机,主机 IP:192.168.1.162,目标主机 IP和端口192.168.1.163:80,方法如下:
iptables -t nat -A PREROUTING -p tcp -m tcp –dport 8080 -j DNAT –todestination 192.168.1.163:80
iptables -t nat -A POSTROUTING -p tcp -m tcp –dport 80 -j SNAT –to-source 192.168.1.162:8080
echo 1 > /proc/sys/net/ipv4/ip_forward 同时开启 Linux 内核转发功能。
0.41 简述Keepalived体系主要模块及其作用?
keepalived体系架构中主要有三个模块,分别是core、check和vrrp。
core模块
为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析。vrrp模块
是来实现VRRP协议的。check
负责健康检查,常见的方式有端口检查及URL检查。
请描述Linux系统优化的几个步骤。 1、登录系统:不使用root登录,通过sudo授权管理,使用普通用户登录。
2、禁止SSH远程:更改默认的远程连接SSH服务及禁止root远程连接。
3、时间同步:定时自动更新服务器时间。
4、配置yum更新源,从国内更新下载安装rpm包。
5、关闭selinux及iptables(iptables工作场景如有wan ip,一般要打开,高并发除外)
6、调整文件描述符数量,进程及文件的打开都会消耗文件描述符。
7、定时自动清理/var/spool/clientmquene/目录垃圾文件,防止节点被占满(c6.4默认没有sendmail,因此可以不配。)
8、精简开机启动服务(crond、sshd、network、rsyslog)
9、Linux内核参数优化/etc/sysctl.conf,执行sysct -p生效。
10、更改字符集,支持中文,但是还是建议使用英文,防止乱码问题出现。
11、锁定关键系统文件(chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab 处理以上内容后,把chatter改名,就更安全了。)
12、清空/etc/issue,去除系统及内核版本登陆前的屏幕显示。
画出系统应用架构图
写出LVS与nginx的区别
当前数据库服务处理速度慢,你认为可能是什么原因导致的,并阐述一下对应的解决办法
说一下你知道的存储引擎,建表时如何决定表使用存储引擎
单张表过大有什么缺点,如何解决
给你50台服务器,阐述一下你的拓扑结构如何设计
如果你是数据库管理员,阐述一下你如何给服务器添加授权用户
若你是数据库管理员,阐述一下你如何对数据做备份
目前常见的数据库软件有哪些,搭建数据库集群的时候,你如何选择使用哪种软件
mysql数据库服务,数值类型宽度的作用是什么?
配置mysql主从同步前,如何保证主库与从库的数据一致
你觉得信息在传递中有哪些风险
监控一台服务器时,你觉得应该监控服务器的哪些资源
对称加密和非对称加密的区别
如何获知一台主机上的网站服务是否在运行
如何让系统的普通用户拥有root权限,什么情况下需要这么做?
一般来说,不建议直接将普通用户提升为root权限,因为这会带来潜在的安全风险。但如果确实需要在某些场景下使用root权限,可以通过sudo命令来实现,即在普通用户的环境下使用sudo执行某些需要root权限的命令。
在普通用户的环境下使用sudo执行某些需要root权限的命令。 举个例子可以是
user1 user2 属于appos组
user3 user4 属于dev组
user5 属于appos组 ,dev组
1 user1 用户 可以1:可以执行 /mnt/app1/下面的 sudo执行某些需要root权限的命令。 可以2 :执行 /mnt/app2/a 可以执行 但不可以写、看。
2 user3用户 要求: 目录/mnt/app1/下面的程序(/mnt/app1/属于appos组 )可以追加日志到 /mnt/dev1/app1.log,user3用户可以读app1.log,但user3不可以写操作,也不可以改,追加操作。
usermod -a -G appos,dev user3 。user3属于dev appos 组
设置了setfacl -m d:g:appos:rwx,g:dev:rx /mnt/app1/命令,
即可appos 组的用户可以读、写、执行 /mnt/app1/ 目录中的文件,dev 组的用户可以读取 /mnt/app1/ 目录中的文件 但不可以更改、追加或删除文件,并且新创建的子目录或文件会继承默认ACL权限设置。不需要执行chown :appos /mnt/app1/,chmod 750 /mnt/app1/命令。
setfacl -m d:g:appos:rwx,g:dev:rx /mnt/app1/ 【appos 组的用户可以读、写、执行 /mnt/app1/ 目录中的文件,dev 组的用户可以读取 /mnt/app1/ 目录中的文件,但不可以更改、追加或删除文件。同时,新创建的子目录或文件会继承默认 ACL 权限设置】
1
第一个命令 setfacl -R -m g:appos:rwx,g:dev:r /mnt/app1/ 会递归地将 ACL 权限设置应用到 /mnt/app1/ 目录下的所有文件和子目录中的文件,并给 appos 组和 dev 组的用户都授予读、写、执行权限,包括新建的子目录和文件。 第二个命令 setfacl -m d:g:appos:rwx,g:dev:rx /mnt/app1/ 则会将默认的 ACL 权限设置应用到 /mnt/app1/ 目录,并给 appos 组的用户授予读、写、执行权限,给 dev 组的用户授予读权限,同时,新创建的子目录或文件会继承默认 ACL 权限设置。 只会应用到新创建的子目录或文件上。而已经存在的子目录或文件需要使用setfacl -m命令进行手动设置,例如setfacl -m g:appos:rwx,g:dev:r /mnt/app1/file1。
因此,如果你想要在设置 ACL 权限的同时,让子目录和文件都继承相同的权限设置,可以使用第一个命令;如果你只需要在目录级别上设置默认权限,让子目录和文件继承这些默认权限设置,可以使用第二个命令。
usermod -a -G appos,dev user3 。你user3属于dev appos linux系统中 请实现上面的要求 命令。 3 另外 能不能 实现user4 只可以查看 读 、写、 /mnt/app3/ 和/tmp 2个目录 其它任何目录不可以看,读、写。目录限制有没有更好的管理方式。
mkdir /jail ; chown user4:user4 /jail ;chmod 700 /jail usermod -d /jail user4 chroot /jail su - user4 这样,用户4就被限制在/chroot目录中,不能访问系统的其它部分。 那 ssh登录 一般都是user4 加密码 登录。怎样普通方式登录但实际是 sudo chroot /jail su - user4这样呢。这样用户user4 还是之前正常的操作。
如果您想在没有执行上述命令的情况下以普通方式登录到用户user4的chroot jail中,则需要在服务器上配置ssh chroot jail。一种常用的方法是使用ssh的chroot sftp功能。您可以按照以下步骤进行操作:
在服务器上创建一个新的用户组,例如"jailusers”,并将需要访问chroot jail的用户添加到该组中。
在服务器上创建一个新的目录,例如"/jail",并将该目录设置为用户组"jailusers"的所有者,并将访问权限设置为750。
将所需的应用程序和库文件复制到"/jail"目录中,并确保在chroot jail中运行时可以访问它们。
在ssh服务器配置文件(通常为/etc/ssh/sshd_config)中添加以下行:
csharp Copy code Subsystem sftp internal-sftp Match group jailusers ChrootDirectory /jail X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp 这将限制属于"jailusers"组的用户的ssh访问权限,并将它们限制在"/jail"目录中。
重启ssh服务器以使更改生效。 此后,用户可以使用ssh登录到服务器,并且它们将被限制在chroot jail中。如果您需要使用sudo命令以用户user4的身份在chroot jail中执行命令,则可以使用以下命令:
bash Copy code sudo chroot /jail su - user4 这将使您在chroot jail中作为用户user4进行交互式shell。
openstack的组件有哪些?
OpenStack是一款开源的云计算平台,包含多个组件,其中常用的组件包括:Nova(计算服务)、Neutron(网络服务)、Cinder(块存储服务)、Glance(镜像服务)、Horizon(Web管理界面)、Keystone(身份认证服务)等。 配置httpd服务器时,如何快速添加新的虚拟主机?
快速添加新的虚拟主机可以通过在httpd的配置文件中添加虚拟主机配置来实现,具体步骤如下: 在httpd.conf或者一个单独的虚拟主机配置文件中添加一个新的虚拟主机配置。 在配置中指定虚拟主机的监听IP地址和端口号,以及文档根目录等参数。 重新启动httpd服务器,使新的虚拟主机配置生效。 杀死进程的命令有哪些?
在Linux系统中,常用的杀死进程的命令包括: kill:发送指定信号给进程,让进程退出。 killall:杀死指定名称的所有进程。 pkill:根据进程名称或其他条件来杀死进程。 xkill:使用图形界面的方式来杀死进程。 mysql的原理是什么?
MySQL是一款开源的关系型数据库管理系统,其核心原理包括: 存储引擎:MySQL支持多种存储引擎,不同存储引擎在存储数据时的方式和特点不同。 查询优化器:在执行SQL语句前,MySQL会通过查询优化器对SQL语句进行分析和优化,以提高查询效率。 事务处理:MySQL支持事务处理,保证在并发访问时数据的一致性和完整性。 锁机制:MySQL通过锁机制来保证并发访问时数据的一致性和完整性。
10月2日日考题
ELK分别表示什么? elasticsearch的特点是什么 kibana的特点和作用是什么 logstash的特点和作用是什么 ELK能做什么? ELK在你使用的过程中主要用来做什么? elasticSearch 中的集群,节点,文档,类型和索引是什么 elasticsearch中的分片是什么? es 的bulk 一次最大的处理数据量是多少 es的自动发现机制是什么? es的优化 ELK的安全插件,报警插件,管理和查询插件分别是什么 ELK邮件插件用的哪个 logstash input插件和output插件分别处理什么样 的数据 nginx优化怎么做的 ansible用了多少个节点 用ansible playbook编写过什么哪些 zabbix有哪些监控项 Python你用过哪些模块 都写过哪些shell脚本
10月3日日考题 用docker部署过哪些项目 docker常用的基础命令写15个 docker的网络模式有哪些? docker跟虚拟机有什么区别 传统的上线流程是怎样的? nginx lvs haproxy 三个有什么区别 redis持久化你们用的哪种方式 redis持久化的两种方式有什么区别 redis集群你用的哪种方式,几台服务器 keepalived是基于什么协议做的 LVS的算法有哪几个,你们用的是哪个? 301和302有什么区别 502是什么情况,有什么解决方案 MySQL主从原理是什么? MySQL数据备份怎么实现的 备份的数据量有多大 怎么保证备份的数据的可靠性和完整性 gitlab更新到什么版本了 logstash有两个工作模式是什么 centos系统调优怎么做的
10月4日日考题
DNS原理图 DNS轮询的作用? 递归查询和迭代查询分别是什么意思 在当前目录及子目录中,查找大写字母开头的txt文件 搜索最近七天内被访问过的所有文件 搜索超过七天被访问的文件 nginx与apache比有什么优点 nginx是如何处理请求的 nginx的正向代理和反向代理分别表示什么意思 什么是虚拟主机 你用过nginx的哪些模块 nginx 查看配置文件是否正确怎么查看 nginx重新加载配置文件的命令 nginx 状态码 499是什么意思 nginx状态码 502 错误可能的原因有哪些? nginx调优怎么做的 fastcgi和cgi有什么区别 nginx负载均衡的算法有哪些? nginx使用中,session不同步怎么办? nginx如何实现防盗链 为什么要做动静分离? 10月5日日考题
时间过的好快,转眼假期过半,这里的每一个题目都曾经是你们的师哥师姐们面试过程中遇到的面试题,大家认真对待。
MySQL慢查询怎么设置 MySQL的存储引擎有哪些 简述MySQL 的常见两种引擎的区别 SQL标准定义四个隔离级别是什么? MySQL备份有哪些备份方式或者方案 zabbix监控数据库监控哪些参数 MySQL主从一致性校验是怎么做的 truncate delete drop 的区别 reids的实现原理或者机制 你们公司的redis架构 shell脚本中$?的用途是做什么 如何调试shell脚本 MySQL不同步的处理方法 MySQL主从不同步的原因 如何修改Linux的最大文件句柄的限制 写shell脚本监控MySQL主从的思路 写shell脚本监控所有IP是否存活的思路 写shell脚本防范ddos攻击的思路 说说你在工作中最自豪的一件事情 说下你在工作中遇到的三个最棘手的事情 活在当下,你所付出的努力都不会白费 ! 10月6日日考题
你们的服务器在什么地方? 阿里云用过哪些产品 SLB是基于几层的负载均衡 为什么要做日志切割 NGINX有几种工作模式,都是哪几种 tomcat的版本用的啥 Redis在你们公司用来缓存什么数据 公司产品是什么,注册数有多少 Python用过哪些模块 你的离职原因是什么 你对加班怎么看的 你是如何理解运维这个岗位的 你对出差怎么看 你们的薪资构成是咋样的 你是五险一金是按照什么比例交的 OpenStack有哪些版本 OpenStack有哪些组件 如果让你入职,你打算怎么开展你的工作 你对未来有什么职业规划 你平时都有学习什么新的技术 你最近都看什么技术类的书籍,说一下书的名字 10月7日日考题
你们公司的存储用的什么 nginx日志切割怎么做的 备份的时候需要重启吗 nginx做了哪些优化 刚装好的系统做了哪些优化 MySQL有三种binlog格式,推荐用什么 数据库反应慢了如何查询 MySQL数据被误删除后,你尝试过使用哪些方法或者手段来挽回数据 三次握手,四次挥手的原理 memcached工作原理 radi原理 一致性哈希算法作用及原理 MySQL sleep线程过多如何解决 一主多从的环境,从库宕机,请问你如何恢复? MySQL集群和高可用方案有哪些,你在公司用过哪些方案? iptables工作流程及规则过滤顺序 iptables有几表几链 一台web服务器应该监控哪些指标 日常巡检都做什么? raid10 raid5 raid1 区别是啥,有什么优势 技术牛人博客你都关注过谁的 10月8日日考 请简述软连接和硬链接的区别 inode 和 block是什么东西,请简述解释 磁盘空间不够,如何利用凝练找出到底哪个文件占用磁盘过大 sed 命令的 -n -r 参数均表示什么意思 如果采购了一块硬盘,需要做哪些处理,才能正常使用磁盘 请说出这些符号的含义 » > 2> 2» # . … $ | && 企业中如果Linux服务器硬盘为300G,内存为16G,硬盘如何分区 解析网络中IP地址,子网掩码,网关地址,端口的概念 运维人员的标准工作流程 答: 操作前检查,操作前备份,进行操作过程,操作后确认,操作文档编写 OSI七层模式是那七层 301 和302跳转的区别 上一家公司是做什么的? 之前公司是什么业务 数据库增长量是多少 上家公司你主要负责哪些工作和职责 如果你入职了你能为我们公司带来什么? 你处理过印象最深刻的故障是什么 你最擅长的技术是什么 你平时工作日常都做什么 你还有什么要问我的? 请描述Linux系统优化的几个步骤。 1、登录系统:不使用root登录,通过sudo授权管理,使用普通用户登录。