运维工程师面试题 55 道

1、请简述 OSI 七层网络模型有哪些层及各自的含义?
 

物理层:底层数据传输,比如网线、网卡标准

数据链路层:定义数据的基本格式,如何传输,如何标识。比如网卡 MAC 地址

网络层:定义 IP 编码,定义路由功能,比如不同设备的数据转发

传输层:端到端传输数据的基本功能,比如 TCP、UDP

会话层:控制应用程序之间会话能力,比如不同软件数据分发给不停软件

表示层:数据格式标识,基本压缩加密功能。

应用层:各种应用软件,包括 Web 应用。
 

2、在 Linux 的 LVM 分区格式下,请简述给根分区磁盘扩容的步骤?

这个分 3 种

第一种方法:

growpart /dev/vda 1

resize2fs /dev/vda1   

第二种方法:

partpeobe /dev/sda

resize2fs /dev/vda1   

第三种方法:

fdisk /dev/sdb   # n p 1 1 回车 回车 t 8e w

pvcreate /dev/sdb1

vgextend datavg /dev/sdb1

lvextend -r -L +100%free /dev/mapper/datavg-lv01

3、讲述一下 Tomcat8005、8009、8080 三个端口的含义?

8005 关闭时使用

8009 为 AJP 端口,即容器使用,如 Apache 能通过 AJP 协议访问 Tomcat 的 8009 端口来实现功能

8080 一般应用使用
 

4、简述 DNS 进行域名解析的过程?

迭代查询(返回最优结果)、递归查询(本地找 DNS)用户要访问 www.baidu.com,会先找本机的 host 文件,再找本地设置的 DNS 服务器,如果也没有找到,就去网络中找根服务器,根服务器反馈结果,说只能提供一级域名服务器.cn,就去找一级域名服务器,一级域名服务器说只能提供二级域名服务器.com.cn, 就去找二级域名服务器,二级域服务器只能提供三级域名服务器.baidu.com.cn,就去找三级域名服务器,三级域名服务器正好有这个网站 www.baidu.com,然后发给请求的服务器,保存一份之后,再发给客户端。
 

5、讲一下 Keepalived 的工作原理?

在一个虚拟路由器中,只有作为 MASTER 的 VRRP (虚拟路由冗余协议) 路由器会一直发送 VRRP 通告信息,BACKUP 不会抢占 MASTER,除非它的优先级更高。当 MASTER 不可用时 (BACKUP 收不到通告信息) 多台 BACKUP 中优先级最高的这台会被抢占为 MASTER。这种抢占是非常快速的 (<1s),以保证服务的连续性由于安全性考虑,VRRP 包使用了加密协议进行加密。BACKUP 不会发送通告信息,只会接收通告信息。
 

6、LVS、Nginx、HAproxy 有什么区别?工作中你怎么选择?

LVS:

抗负载能力强、工作在第 4 层仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的;无流量,同时保证了均衡器 IO 的性能不会受到大流量的影响;

工作稳定,自身有完整的双机热备方案,如 LVS+Keepalived 和 LVS+Heartbeat;

应用范围比较广,可以对所有应用做负载均衡;

配置简单,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率;

LVS 的缺点:

软件本身不支持正则处理,不能做动静分离,这就凸显了 Nginx/HAProxy+Keepalived 的优势。

如果网站应用比较庞大,LVS/DR+Keepalived 就比较复杂了,特别是后面有 Windows Server 应用的机器,实施及配置还有维护过程就比较麻烦,相对而言,Nginx/HAProxy+Keepalived 就简单多了。

Nginx:

工作在第 7 层,应用层,可以针对 http 应用做一些分流的策略。比如针对域名、目录结构。它的正则比 HAProxy 更为强大和灵活;

Nginx 对网络的依赖非常小,理论上能 ping 通就就能进行负载功能

Nginx 安装和配置简单

可以承担高的负载压力且稳定,一般能支撑超过几万次的并发量;

Nginx 不仅仅是一款优秀的负载均衡器 / 反向代理软件,它同时也是功能强大的 Web 应用服务器。Nginx 在处理静态页面、特别是抗高并发方面相对 apache 有优势;

Nginx 作为 Web 反向代理加速缓存越来越成熟,速度比传统的 Squid 服务器更快

Nginx 的缺点:

Nginx 不支持 url 来检测。

Nginx 仅能支持 http、https 和 Email 协议

Nginx 的 Session 的保持,Cookie 的引导能力相对欠缺。

HAProxy:

HAProxy 是支持虚拟主机的,可以工作在 4、7 层 (支持多网段);

能够补充 Nginx 的一些缺点比如 Session 的保持,Cookie 的引导等工作;

支持 url 检测后端的服务器;

它跟 LVS 一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲 HAProxy 更会比 Nginx 有更出色的负载均衡速度,在并发处理上也是优于 Nginx 的;

HAProxy 可以对 Mysql 读进行负载均衡,对后端的 MySQL 节点进行检测和负载均衡,不过在后端的 MySQL slaves 数量超过 10 台时性能不如 LVS;

HAProxy 的算法较多,达到 8 种;

工作选择:

HAproxy 和 Nginx 由于可以做七层的转发,所以 URL 和目录的转发都可以做在很大并发量的时候我们就要选择 LVS,像中小型公司的话并发量没那么大选择 HAproxy 或者 Nginx 足已,由于 HAproxy 由是专业的代理服务器配置简单,所以中小型企业推荐使用 HAproxy。
 

7、docker 的工作原理是什么,讲一下

docker 是一个 Client-Server 结构的系统,docker 守护进程运行在宿主机上,守护进程从客户端接受命令并管理运行在主机上的容器,容器是一个运行时环境,这就是我们说的集装箱。
 

8、docker 的组成包含哪几大部分?

一个完整的 docker 有以下几个部分组成:

docker client,客户端,为用户提供一系列可执行命令,用户用这些命令实现跟 docker daemon 交互;

docker daemon,守护进程,一般在宿主主机后台运行,等待接收来自客户端的请求消息;

docker image,镜像,镜像 run 之后就生成为 docker 容器;

docker container,容器,一个系统级别的服务,拥有自己的 ip 和系统目录结构;运行容器前需要本地存在对应的镜像,如果本地不存在该镜像则就去镜像仓库下载。

docker 使用客户端 - 服务器 (C/S) 架构模式,使用远程 api 来管理和创建 docker 容器。docker 容器通过 docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。
 

9、docker 与传统虚拟机的区别什么?

传统虚拟机是需要安装整个操作系统的,然后再在上面安装业务应用,启动应用,通常需要几分钟去启动应用,而 docker 是直接使用镜像来运行业务容器的,其容器启动属于秒级别;

Docker 需要的资源更少,Docker 在操作系统级别进行虚拟化,Docker 容器和内核交互,几乎没有性能损耗,而虚拟机运行着整个操作系统,占用物理机的资源就比较多;Docker 更轻量,Docker 的架构可以共用一个内核与共享应用程序库,所占内存极小;同样的硬件环境,Docker 运行的镜像数远多于虚拟机数量,对系统的利用率非常高;

与虚拟机相比,Docker 隔离性更弱,Docker 属于进程之间的隔离,虚拟机可实现系统级别隔离;

Docker 的安全性也更弱,Docker 的租户 root 和宿主机 root 相同,一旦容器内的用户从普通用户权限提升为 root 权限,它就直接具备了宿主机的 root 权限,进而可进行无限制的操作。虚拟机租户 root 权限和宿主机的 root 虚拟机权限是分离的,并且虚拟机利用如 Intel 的 VT-d 和 VT-x 的 ring-1 硬件隔离技术,这种技术可以防止虚拟机突破和彼此交互,而容器至今还没有任何形式的硬件隔离;

Docker 的集中化管理工具还不算成熟,各种虚拟化技术都有成熟的管理工具,比如:VMware vCenter 提供完备的虚拟机管理能力;Docker 对业务的高可用支持是通过快速重新部署实现的,虚拟化具备负载均衡,高可用、容错、迁移和数据保护等经过生产实践检验的成熟保障机制,Vmware 可承诺虚拟机 99.999% 高可用,保证业务连续性;

虚拟化创建是分钟级别的,Docker 容器创建是秒级别的,Docker 的快速迭代性,决定了无论是开发、测试、部署都可以节省大量时间;

虚拟机可以通过镜像实现环境交付的一致性,但镜像分发无法体系化,Docker 在 Dockerfile 中记录了容器构建过程,可在集群中实现快速分发和快速部署。

10、docker 技术的三大核心概念是什么?

镜像:镜像是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境 (包括代码、运行时需要的库、环境变量和配置文件等),这个打包好的运行环境就是 image 镜像文件。

容器:容器是基于镜像创建的,是镜像运行起来之后的一个实例,容器才是真正运行业务程序的地方。如果

你可能感兴趣的:(面试,运维,面试,职场和发展)