1.        基础操作:面试和笔试的时候肯定会问到,频率最高的命令有:mkdir find awk sed uniq sort tail head mkfs chmod crontab lsofnetstat route tcpdump tar等主要考察为后面参数的选择以及格式

2.        基础服务:dns dhcp nfs vpn apache ftp 工作原理、nfs的三个模块的作用,dns的各种记录名称以及作用、dhcp的四个过程、apache虚拟主机的创建(有的面试官会要求现场写配置文件)、ftp的主动模式和被动模式

3.        软硬raid的区别 raid的各种级别,各种级别的优缺点、大小的计算、备份恢复情况、最多可以坏多少个

4.        源码包编译的时候、大致的过程、系统都做了些什么事情

5.        Tcp的三次握手和四次分手的过程和详细的状态以及报文段的考察(要求非常熟悉,基本每个公司都会问,或者笔试都会考)、osi七层模型每层的功能、每层中都各有那些协议族,那些协议是面向连接的,那些是不面向连接的。

运维面试docker 运维面试基础知识_运维面试docker

运维面试docker 运维面试基础知识_职场和发展_02

6.        软硬连接的区别,具体怎么连接的命令

7.        Linux系统的七个启动级别、操作系统启动过程。

Linux下的7个运行级别:


0:系统停机状态,系统默认运行级别不能设置为0,否则不能正常启动,机器关闭。 1:单用户工作状态,root权限,用于系统维护,禁止远程登陆,就像Windows下的安全模式登录。 2:多用户状态,没有NFS支持。 3:完整的多用户模式,有NFS,登陆后进入控制台命令行模式。 4:系统未使用,保留一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。 5:X11控制台,登陆后进入图形GUI模式,XWindow系统。 6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动。运行init6机器就会重启。 POST-->BIOS-->MBR(GRUB)-->Kernel-->Init-->Runlevel。


标准的Linux运行级别为3或5

8.        Iptables的三表五链,怎么将本机的80端口转发到8080等类似的问题。

9.        服务器性能指标的查看(内存、cpu、磁盘、网络流量、虚拟内存swap、etc下的proc)free各个字段的含义、top各个字段的含义、ps、iftop各个字段的含义等都要十分清楚

10.    Shell中文本处理命令的用法(cut、tr、diff、uniq、awk、sed、wc、grep等命令以及参数的选择要非常熟悉),shell中$? 、$0 、$#、$@、$!、$$、$*等各种$的含义。循环for的书写、if的书写以及其中的各种判断要非常熟悉。

11.    find命令的使用要非常熟悉。

12.    crontab命令的使用。

13.    基本权限以及权限中u+s g+s o+t 的设定以及含义、为什么有的是大写的s,有的是小写的s 特殊权限的i权限

14. Nginx与apache与lighttpd的区别和各自的优缺点。nginx的虚拟主机创建、负载均衡、反向代理实现,需要能够时刻写出来(迅雷面试直接给你环境、让你现场写配置文件),nginx的日志文件记录的级别。

15. Lvs的拓扑图,四种模式的具体实现过程,四种模式的对比优缺点,十种算法。

16. 几种常见的服务的端口号(ftp ssh telnet snmp pop3 IMAP rsync等)

17. DNS的工作原理原理以及实现过程。

18. kill命令的-9与-15的区别

SIGNKILL(9) 的效果是立即杀死进程. 该信号不能被阻塞, 处理和忽略。
SIGNTERM(15) 的效果是正常退出进程,退出前可以被阻塞或回调处理。并且它是Linux缺省的程序中断信号。

19. route的使用要非常熟悉。

添加到指定网段的路由 route add -net 10.0.0.0 netmask 255.255.255.0 dev eth0

20. puppet的实现以及配置文件的语法-资源的定义(类、函数、节点)资源中的file、package、exec、service。

21. hadoop中amenode、datanode、MapReduce 、jobtracker、tasktracker。以及hdfs的存储策略-块,mapreduce实现的大概过程。Mfs对比hdfs。

22. 反向代理软件squid、varnish、nginx的原理以及各软件的优缺点。

23. 怎样实现mysql数据库的健壮与稳定。Mysql全备份与还原,密码的忘记与修改,mysql内增删改查、授权等的具体实现命令,在深入一点可以看看命令的执行先后顺序。

24. fastab文件中各个字段代表的意义。

25. 我们公司的官方主页访问特别慢或者不能访问怎么办,你怎么处理(这个问题要思路清楚、从前端到后端依次说明可能出现的问题)

26. 如果你有一台云主机,你将会做些什么来保证这台主机的安全性。

27. 监控方面你不管写几个监控,基本上都会问你最熟悉那个或者你最感兴趣的是哪一个,然后在你说的这个上面问你一些问题,主动还是被动、用的什么协议等问题。

28. 介绍一下你在平时实验或者搭建这些东西的时候遇到的问题。

29. 谈谈运维工作的将来发展趋势或者你对将来运维工作的规划。

30. 技术运维面试官一般会采取三种面试策略:1-问你最感兴趣的是什么,然后就在你说的这个东西上面深挖坑,千万不要说你什么都感兴趣或者什么都不感兴趣,要挑选一个你完全掌握的来说。2-拿着简历问,你写什么就问什么,有的时候会全部问,有的问一部分。3-针对他们公司的实际情况来问跟他们相关的东西,所以去那家公司面试提前总结做好准备。

31. 你要会python就会非常好,可以考虑自己学,不会就是不会,但是要说明自己在开始学习。如果技术面试官问你算法,你会就不说什么了,如果死问你算法你不会那就是要专门要挂掉你,做好心里准备。

32. 多练习自己的表达能力,表达要清晰明了,特别是hr面的时候,不要在这最后一关上面失败,那就得不偿失了。不管你也谁在面试,表现一定要谦虚,有礼貌,最重要的是要有眼色,不要做一个死木疙瘩。

33. 无论几面的面试官基本都会在最后问你你有什么要询问他的,一定要有问题,不要直接问薪水问题和待遇问题,我自己觉得最好的一个问题是:我想咨询一下公司在对运维岗位的某个方面没有特别什么要求,比如python、mysql、存储等方面。或者问问公司针对新人有哪方面的培训或者培养方式。

nginx反向代理的几种模式?
nginx反向代理一共以下5种模式,前3种使用的比较多:

1)轮询:每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。

2)权重:指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

3)ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

4)fair(第三方):按后端服务器响应时间来分配,时间短的优先分配。

5)url_hash(第三方):按访问url的hash结果来分配请求,使同样的url定向到同一个后端服务器,后端服务器为缓存时比较有效。

3.MySQL主从有哪几种模式?
1)基于SQL语句的复制(statement-based replication, SBR)。

2)基于行的复制(row-based replication, RBR)。

3)混合模式复制(mixed-based replication, MBR)。

4.说说tomcat调优?
 

5.有哪些原因会导致mysql主从同步出问题?该如何解决?
原因:

1.主数据库binlog日志未开启或binlog日志更新未开启。

2.主从数据库结构不一致。

3.防火墙没有开放端口。

5.对应的IP地址写错了。

6.mysql数据库版本不一致。

解决办法:

1.强制同步。

2.如果数据不一致,比较少的时候可以插入数据使一致。

3.如果数据库比较小,可以将数据库导出并重新导入一次。

6.说说mysql的备份?
1)按照数据影响分:

热备 xtrabackup,只能备份InnoDB和XtraDB两种引擎表

冷备

温备

2)按照备份后的文件内容分:

逻辑备份 mysqldump,数据量大不建议使用,备份后内容可读,一般是文本文件,里面是SQL语句或表的实际数据

裸文件备份 拷贝数据库物理文件,mysqlhotcopy,最快,但是只能是myisam引擎.本质是使用锁表语句后再使用cp或scp拷贝数据库.适合大数据

3)按照备份数据库的内容来分:

完全备份

增量备份 xtrabackup,只能备份InnoDB和XtraDB两种引擎表

日志备份 二进制日志的备份,主从复制

7.查看http的并发请求数及TCP连接状态?
[root@Bob10 ~]# netstat -ap | grep httpd | awk '{printf $6}' #查看链接状态

[root@Bob10 ~]# netstat -an |grep ESTABLISH | grep "192.168.1.10:80" #查看并发请求数

8.统计出Apache的access_log中访问量最多的5个IP?
cat /var/log/httpd/access_log | awk '{print $1}' | uniq -c |sort -n|tail -5

9.Linux开机启动顺序?
1)加载BIOS: 根据设定取得第一个可开机引导设置如:光驱,硬盘,网络,USB。

2)MBR引导: 通过主引导扇区读取主引导程序、硬盘分区表和和硬盘有效标志.系统找到BIOS所指定的硬盘的MBR后,就会将其复制到地址所在的物理内存中。

3)读取grub: 读取内存中的grub配置信息,并依照此配置信息来启动不同的操作系统。

4)加载内核: 系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。

5)读取inittab: 运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作.inittab最主要的就是确定运行等级。

6)执行rc.sysinit: 就是说这是来准备软件执行的作业环境的。

7)执行rcN.d: 根据运行级别的不同,系统会运行/etc/rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。

8)执行rc.local: rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。

9)执行/bin/login 执行后进入登录状态。

10.写一个脚本,实现判断192.168.1.0/24网络中当前在线的IP有哪些,能ping通则认为在线?
[root@Bob10 ~]# vim /root/ping.sh

#!/bin/bash

i=0

while [ $i -le 255 ]

do

        ping -c 3 192.168.1.$i &> /dev/null

        if [ $? == 0 ]

        then

                echo "192.168.1.$i"

        fi

        ((i++))

done

[root@Bob10 ~]# chmod +x /root/ping.sh 

11.写一个脚本,要求从本地的/data目录下的所有文件备份到远程服务器的/data目录下,备份完成后发送邮件到backup.meihua.info,邮件内容要显示备份数据的大小,并且每天凌晨1点开始执行?
[root@Bob10 ~]# vim /root/back.expect

#!/usr/bin/expect

set ip "192.168.1.11"

set passwd 123456

set timeout 30

spawn scp -r /root/data/ $ip:/root/

expect {

        "(yes/no)?" { send "yes\r";exp_continue }

        "password:" { send "$passwd\r";exp_continue }

}

[root@Bob10 ~]# vim /root/back.sh

#!/bin/bash

expect /root/back.expect

if [ $? -eq 0 ]

then

        size=`du -sh /root/data/ | awk '{print $1}'`

        echo "backup success\!the size is $size" | mail -s "backup info" backup.meihua.info

else

        echo "bacukp failed\!" | mail -s "backup info" backup.meihua.info

fi

12.说说MySQL优化?
1.硬件优化:

1)cpu:64位,高主频,高缓存,高并行处理能力.

2)内存:大内存,高主频,尽量不要用swap.

3)硬盘:固态,高转速.

4)网卡:万兆,光口.

2.磁盘io优化:

1)做raid10

2)磁盘分区:将数据放在独立的分区上.做主从时,binlog单独放在一个分区

3.操作系统优化:

1)使用64位系统

2)使用网卡绑定

3)设置TCP连接数限制

4)优化mysql用户打开文件数限制

5)禁用不必要的服务自启动

6)可以给数据分区一个单独的文件系统,一般为xfs(红帽6需要安装支持xfs的软件xfsprogs),在挂载分区时可以考虑启用noatime.

7)最小化原则:

安装系统最小化

开启服务最小化

操作最小化

登录最小化

权限最小化

4.数据库设计与规划:

1)专机专用

2)做主从同步,负载均衡,高可用集群等

3)选择合适的数据库引擎.如myiasm适合读多写少的表,innodb适合读少写多的表.做主从时主使用innodb引擎,从使用myisam引擎

5.my.cnf内的参数优化:

总原则:赋予mysql适当的资源,一般40%给系统,60%-70%给mysql.

1)启用mysql慢查询,分析sql语句,找到影响效率的sql:

vim /etc/my.cnf

log-slow-queries=/var/lib/mysql/slow.log

log_query_time=5

2)对查询进行缓存:

vim /etc/my.cnf

query_cache_size=32m

3)强制限制mysql资源配置,例如:

vim /etc/my.cnf

max_connections=500 #限制最大连接数

wait_timeout=10 sleep #mysqld将终止等待时间(空闲时间)超过10秒的连接

max_connection_error=10 #如果一个主机在连接到服务器时有问题,并重试很多次后放弃,那么这个主机就会被锁定,直到执行:mysql> FLUSH HOSTS;

4)表高速缓存:

vim /etc/my.cnf

table_cache=23 #缓存23个表.在 2G 内存以下的机器中的值默认从 256 到 512个

5)关键字缓存:

vim /etc/my.cnf

key_buffer=512M #只跑了一个mysql服务.结合所有缓存,mysql整体使用的缓存可以是物理内存的80%

6)关闭dns反查功能:

skip-name-resolve #该选项就能禁用DNS 解析,连接速度会快很多。不过,这样的话就不能在MySQL 的授权表中使用主机名了而只能用ip 格式。

6.sql语句优化:

1)建表:

表结构合理,不要太大,类型精确.

2)索引:

建立合适的索引.

3)查询:

减少逻辑运算,精确查询(不要查询不需要的数据).

适当的将多个小查询合并为一个大的查询.

适当的将某些过于复杂的查询拆解成多个小查询,和刚才的相反.

4)事务:

减小事务包的大小.

5)存储过程:

适当的建立并优化存储过程

13.软件包的安装方式有哪几种?该如何正确的选用哪种安装方式?
1.yum安装:功能性软件,如openssh

2.源码编译:高并发的软件,例如mysql集群

3.二进制安装:开发测试的软件

14.myisam和innodb的区别是什么?
mysql默认使用的是myisam

1)myiasm不支持事物

2)myisam不支持行锁表

3)myisam不支持外键

4)myisam支持全文索引

5)myisam支持gis数据,如surface等

6)myisam主键范围比innodb小,最小是其1/2

15.如何批量删除指定的文件夹下以.txt结尾的文件?
find /root/ -name "*.txt" -exec rm -rf {} \;

16.如何筛选指定文件夹下大于10M的文件?
find /root/ -size +10M

squid  缓存命中率怎么查看及清空缓存?

squidclient -h localhost -p 3128 mgr:info

squidclient -h 192.168.0.1 -p 80 -m PURGE http://www.baidu.com/

-h指定检索的主机,-p为squid开放的端口,-m即为请求方法,删除缓存使用的是PURGE请求,URL即为需要删除的缓存。

LVS的工作原理是什么?有哪些算法?

1.NAT模型:

运维面试docker 运维面试基础知识_职场和发展_03

①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP(客户端IP),后面统称为CIP),目标地址为VIP(负载均衡器前端地址,后面统称为VIP)。

②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的目标地址改为了后端服务器的RIP地址并将报文根据算法发送出去。

③.报文送到Real Server后,由于报文的目标地址是自己,所以会响应该请求,并将响应报文返还给LVS。

④.然后lvs将此报文的源地址修改为本机并发送给客户端。注意:在NAT模式中,Real Server的网关必须指向LVS,否则报文无法送达客户端

2DR模型:

运维面试docker 运维面试基础知识_面试_04

①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。

②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的源MAC地址改为自己DIP的MAC地址,目标MAC改为了RIP的MAC地址,并将此包发送给RS。

③.RS发现请求报文中的目的MAC是自己,就会将次报文接收下来,处理完请求报文后,将响应报文通过lo接口送给eth0网卡直接发送给客户端。注意:需要设置lo接口的VIP不能响应本地网络内的arp请求

3.TUN模型:

运维面试docker 运维面试基础知识_职场和发展_05

①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。

②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将在客户端请求报文的首部再封装一层IP报文,将源地址改为DIP,目标地址改为RIP,并将此包发送给RS。

③.RS收到请求报文后,会首先拆开第一层封装,然后发现里面还有一层IP首部的目标地址是自己lo接口上的VIP,所以会处理次请求报文,并将响应报文通过lo接口送给eth0网卡直接发送给客户端。注意:需要设置lo接口的VIP不能在共网上出现

LVS的调度算法分为静态与动态两类。

1.静态算法(4种):只根据算法进行调度 而不考虑后端服务器的实际连接情况和负载情况

①.RR:轮叫调度(Round Robin)
  调度器通过”轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。

②.WRR:加权轮叫(Weight RR)
  调度器通过“加权轮叫”调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

③.DH:目标地址散列调度(Destination Hash )
  根据请求的目标IP地址,作为散列键(HashKey)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

④.SH:源地址 hash(Source Hash)
  源地址散列”调度算法根据请求的源IP地址,作为散列键(HashKey)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

2.动态算法(6种):前端的调度器会根据后端真实服务器的实际连接情况来分配请求

①.LC:最少链接(Least Connections)
  调度器通过”最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用”最小连接”调度算法可以较好地均衡负载。

②.WLC:加权最少连接(默认采用的就是这种)(Weighted Least Connections)
  在集群系统中的服务器性能差异较大的情况下,调度器采用“加权最少链接”调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

③.SED:最短延迟调度(Shortest Expected Delay )
  在WLC基础上改进,Overhead = (ACTIVE+1)*256/加权,不再考虑非活动状态,把当前处于活动状态的数目+1来实现,数目最小的,接受下次请求,+1的目的是为了考虑加权的时候,非活动连接过多缺陷:当权限过大的时候,会倒置空闲服务器一直处于无连接状态。

④.NQ永不排队/最少队列调度(Never Queue Scheduling NQ)
  无需队列。如果有台 realserver的连接数=0就直接分配过去,不需要再进行sed运算,保证不会有一个主机很空间。在SED基础上无论+几,第二次一定给下一个,保证不会有一个主机不会很空闲着,不考虑非活动连接,才用NQ,SED要考虑活动状态连接,对于DNS的UDP不需要考虑非活动连接,而httpd的处于保持状态的服务就需要考虑非活动连接给服务器的压力。

⑤.LBLC:基于局部性的最少链接(locality-Based Least Connections)
  基于局部性的最少链接”调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接”的原则选出一个可用的服务器,将请求发送到该服务器。

⑥. LBLCR:带复制的基于局部性最少连接(Locality-Based Least Connections with Replication)
  带复制的基于局部性最少链接”调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不同之处是它要维护从一个目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按”最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。