51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 229|回复: 0
打印 上一主题 下一主题

[原创] 运维面试秘籍:经验之谈与常见问题解析,开启成功之门

[复制链接]
  • TA的每日心情
    无聊
    4 天前
  • 签到天数: 1050 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2024-10-29 11:23:54 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    一、公司岗位要求


    (一)岗位职责
    1. 负责公司产品版本控制、构建和发布管理工作,保障发布流程顺畅。
    2. 对公司统一配置库进行管理,精确且及时地处理权限管理与分配,并定期完成配置备份,确保数据安全。
    3. 承担公司内部开发/测试服务器的运行管理工作,保证服务器正常运行。
    4. 负责 Linux 操作系统相关工作,包括安装、配置、监控、维护,能够有效处理问题、进行软件升级、数据备份、应急响应以及故障排除,保障线上环境稳定。
    5. 确保支撑平台 24×7 稳定运行,并对其进行前瞻性容量规划,提前预防可能出现的问题。
    6. 负责公司机房服务器日常维护和网络系统的安装、部署与维护。


    (二)岗位要求
    1. 计算机相关专业本科及以上学历,且有 2 年以上运维或配置管理工作经验。
    2. 至少熟悉一种监控系统搭建,如 Nagios、Zabbix 等。
    3. 至少熟悉一种集群管理工具,像 Ansible、SaltStack 等。
    4. 有使用集成发布工具(如 bamboo、Jenkins)发布构建经验者优先。
    5. 熟悉 Unix/Linux 操作系统、Weblogic、tomcat 等中间件,能编写 shell 脚本,了解软件开发过程及过程产品,具备一定网络基础。
    6. 熟悉 rsyslog、flume 等日志收集和处理系统。
    7. 有强烈安全意识、较强沟通协调与学习能力、良好团队合作精神,工作积极主动。


    二、面试过程


    我去面试的时候,前台把我带到了公司地下室,周围环境很容易让人注意到旁边像是机房,因为能听到服务器运行的声音。等了一会儿,面试官来了,他看起来比较瘦,和我身材差不多(估计体重不到 120),他说他负责运维部,然后就让我开始自我介绍,这几乎是面试的固定环节,所以大家一定要把自我介绍准备好。之后,面试官问了我不少问题,我记住了下面 10 个。


    (一)LVS 负载原理及与 Nginx 负载的区别
    这个问题我觉得面试官表述可以更准确些,正常会问“LVS 有哪些负载均衡技术和调度算法?”。我按这种理解回答的,面试官也频频点头。


    LVS 是 Linux 虚拟服务器的简称,通过它提供的负载均衡技术和 Linux 操作系统能构建高性能、高可用的服务器集群。一般 LVS 位于集群系统前端,由一台或多台负载调度器(Director Server)组成,负责将请求分发给应用服务器(Real Server)。它工作在 4 层(TCP/IP 传输层),基于 IP 负载均衡技术的 IPVS 模块实现。IPVS 有三种负载均衡机制:


    1. VS/NAT(Virtual Server via Network Address Translation)
    通过网络地址翻译技术实现虚拟服务器。当用户请求到达调度器时,调度器将请求报文的目标地址(虚拟 IP 地址)和目标端口改写为选定的 Real Server 的地址和相应端口,再将报文请求发送给 Real Server。服务器端返回数据时,Real Server 需要经过负载调度器将报文源地址和源端口改成虚拟 IP 地址和相应端口,再发给用户。这种方式下,随着用户请求增多,调度器处理能力可能成为瓶颈,因为用户请求和响应报文都要经过 Director Server 地址重写。


    2. VS/TUN(Virtual Server via IP Tunneling)
    即 IP 隧道技术实现虚拟服务器。它的连接调度和管理与 VS/NAT 类似,但报文转发方法不同。在 VS/TUN 方式中,调度器用 IP 隧道技术将用户请求转发到 Real Server,Real Server 直接响应用户请求,不再经过前端调度器。而且 Real Server 的地域位置不受限,可与 Director Server 在同一网段,也可在独立网络。这样,调度器只处理用户报文请求,大大提高了集群系统吞吐量。


    3. VS/DR(Virtual Server via Direct Routing)
    用直接路由技术实现虚拟服务器。其连接调度和管理与前两者一样,但报文转发方法不同。VS/DR 通过改写请求报文的 MAC 地址将请求发给 Real Server,Real Server 直接响应客户。这种方式性能最佳,但要求 Director Server 与 Real Server 有一块网卡连在同一物理网段。


    IPVS 还有八种负载调度算法,常用的有轮叫调度、加权轮叫调度、最少链接调度、加权最少链接调度这四种。把上述三种负载均衡技术讲清楚,面试官一般就比较满意了。


    下面说说 LVS 和 Nginx 的区别


    LVS 的优点:
    - 抗负载能力强,工作在第 4 层只做分发,无流量产生,这决定了它在负载均衡软件里性能最强,同时也保证了均衡器 IO 性能不受大流量影响。
    - 工作稳定,有完整双机热备方案,如 LVS + Keepalived 和 LVS + Heartbeat。
    - 应用范围广,可对所有应用做负载均衡。
    - 配置性低,这既是缺点也是优点,因为配置少,人为出错几率小。


    LVS 的缺点:
    - 软件本身不支持正则处理,不能做动静分离,相比之下,Nginx/HAProxy + Keepalived 有优势。
    - 若网站应用庞大,特别是有 Windows Server 应用的机器时,LVS/DR + Keepalived 的实施、配置和维护过程复杂,Nginx/HAProxy + Keepalived 则更简单。


    Nginx 的优点:
    - 工作在 OSI 第 7 层,可针对 http 应用制定分流策略,比如按域名、目录结构分流,其正则功能比 HAProxy 更强大灵活。
    - 对网络依赖小,理论上能 ping 通就能实现负载功能。
    - 安装和配置简单,测试方便。
    - 能承受高负载压力且稳定,一般能支撑几万次并发量。
    - 可通过端口检测服务器内部故障,比如根据服务器处理网页返回的状态码、超时等情况,把返回错误的请求重新提交到其他节点。
    - 不仅是优秀的负载均衡器/反向代理软件,还是功能强大的 Web 应用服务器。LNMP 环境很流行,Nginx 在处理静态页面和抗高并发方面比 apache 有优势。
    - 作为 Web 反向加速缓存越来越成熟,速度比传统 Squid 服务器快。


    Nginx 的缺点:
    - 不支持 url 检测。
    - 仅支持 http 和 Email。
    - Session 的保持和 Cookie 的引导能力相对较弱。


    (二)redis 集群原理、redis 分片实现及应用环境
    1. redis 集群原理
    redis 在 3.0 版本之前不支持集群,官方推荐最大节点数为 1000,至少需要 3(Master) + 3(Slave)才能建立集群。它是无中心的分布式存储架构,可在多个节点间共享数据,解决了 Redis 的高可用和可扩展问题。集群能自动将数据切分到多个节点,当某个节点故障时,redis 仍可继续处理客户端请求。


    2. redis 分片实现
    分片就是把数据拆分到多个 Redis 实例的过程,每个实例只包含部分键。当数据量大时,可分散存储到多个数据库,减轻单节点连接压力,实现海量数据存储。分片部署方式有以下三种:
    - 客户端分片:客户端确定要连接的 redis 实例并直接访问。
    - 代理分片:客户端不直接访问 redis 实例,也不知要访问哪个实例。客户端先向代理发送请求,代理通过分片算法确定要访问的 redis 实例,然后将请求转发过去,redis 实例将结果返回给代理,代理再返回给客户端。
    - redis 服务器端分片(查询路由)**:客户端随机选择一个 redis 实例发送请求,如果请求内容不在当前实例中,该实例可能负责将请求转交给正确的实例,也有的实现是将正确 redis 的信息发给客户端,由客户端再向正确实例发送请求。


    3. redis 应用环境
    在 java、php 环境中使用 redis,主要缓存登录用户信息数据、设备详情数据、会员签到数据等。


    (三)统计当前访问的 IP 并排序方法
    可以用 awk 结合 uniq、sort 过滤 access.log 日志来统计并排序访问 IP,当然还有其他统计方式,若能说出其他方法会是加分项。


    (四)使用的虚拟化技术
    我常用的虚拟化技术是 vmware vsphere 和 kvm。vmware vsphere 在生产环境用得多,它是原生架构虚拟化技术,可直接在硬件上运行,vcenter 管理方便,图形管理界面功能强大、稳定性强,适合企业。kvm 在测试环境使用,它是寄居架构虚拟化技术,依托系统运行,管理界面稍差,需要管理人员花时间学习维护管理技术。


    (五)排查调取后端接口特别慢的问题
    这种问题没有固定答案,关键是排查思路。首先,要问清楚是哪个服务应用或页面调取哪个接口慢,让相关人员把页面或 URL 发给你。最直观的是用浏览器按 F12,查看是 DNS 解析、网络加载、大图片还是某个文件内容导致过慢,然后针对性解决,比如图片慢就优化图片,网络慢就查看内网情况。其次,查看后端服务日志,用 tail -f 跟踪日志,同时点击测试访问接口使日志输出。最后,排查 sql,在 mysql 中执行 sql,看执行时间是否过长,若长则优化 SQL,比如用 explain 查看索引情况。如果数据量太大,可考虑分表分库。若 SQL 没问题,可能是逻辑代码问题,逐行审查代码,找到耗时部分进行改造优化。


    (六)解决 mysql 主从读写分离中从库无法读取或读取特别慢的问题
    我对这个问题回答得不太好,希望 mysql 高手能给些建议。我的思路是以解决问题为首要,先增加从库数量缓解问题,然后抓取 slow log 分析 sql 语句,进行优化。如果是硬件问题就升级硬件,如果是软件问题就调试优化,问题解决后再细化处理。


    (七)cpu 单核和多核的区别
    双核 CPU 能同时处理多份任务,可将任务顺序排成队列处理。单核 CPU 一次只能处理一份任务,按顺序轮流处理每个程序任务。双核的优势在于能同时处理多件事,比如可同时后台 BT 下载、前台看电影、拷贝文件和使用 QQ,而单核同时只能干一件事。


    (八)机械磁盘和固态硬盘的区别
    现在很少有问磁盘问题的了,但还是要回答。HDD 是机械硬盘,SSD 是固态硬盘。从性能上看,固态硬盘读写速度比机械硬盘快得多,这是因为二者构造完全不同。固态盘基本没噪音,机械盘噪音大。从市场情况看,目前机械盘容量大、价格低,固态盘容量小、价格高,但企业一般首选固态盘。


    (九)使用过的监控系统及 zabbix 和 nagios 的区别
    我曾用过 zabbix、nagios、cacit 等监控系统,这次面试只说了 zabbix 和 nagios。


    从 web 功能及画图来看:
    - Nagios 简单直观,报警和数据在同一页面,红色代表问题项,web 端无需配置。不过它需要额外安装插件,且插件画图不太美观。
    - Zabbix 的监控数据和报警是分开的,查看问题项要通过触发器,查看数据在最新数据查看。Zabbix 有很多其他配置项,自带画图功能,能手动将多个监控项集中在一个图中展示。


    从监控服务来看:
    - Nagios 自带监控项少,对多个分区、多个网卡等变动情况监控需要手动配置。
    - Zabbix 自带很多监控内容,对多个分区、多个网卡等能自动发现并监控,使用起来很省心。


    从批量配置和报警来看:
    - Nagios 对于批量监控主机,需要在 server 端用脚本新增 host,并拷贝 service 文件,修改所有主机的 services 文件来加入新增服务。
    - Zabbix 在 server 端配置自动注册规则后,新增 client 端无需对 server 端操作,只需在模板中手动新增监控项即可。


    总体而言,Nagios 写插件耗时,Zabbix 探索功能耗时。Nagios 更易上手,两天可掌握,Zabbix 则需要两周。Zabbix 的画图功能比 Nagios 更强大,在批量监控与服务更改方面,Zabbix 操作更简洁,不过 Nagios 如果写好自动化脚本也会很简单,但写脚本比较费神。


    (十)设计高可用、高并发架构
    如果环境部署在云端(如阿里云),可直接使用阿里云的 SLB + ECS + RDS 架构。对外服务用 SLB 负载均衡技术,由 SLB 分发到后端 ECS 主机;多台 ECS 主机部署应用,尽量细分服务。数据库用 RDS 高可用版本(一主一备)或 RDS 金融版(一主两备),结合阿里其他服务即可。业务量增加时,横向扩容 ECS 主机。


    如果环境托管在 IDC,就要从硬件和软件两方面考虑。硬件上,要实现高可用、高并发,公司需购买多套冗余的网络硬件设备(如负载设备 F5、防火墙、核心层交换、接入层交换),网络设计中设备间要有双线连接,否则一个设备故障可能导致网络瘫痪。软件方面,对外服务可采用成熟的开源方案 LVS + Keepalived 或 Nginx + Keepalived,缓存层考虑 redis 集群和 Mongodb 集群,中间件等其他服务用 kafka、zookeeper,图片存储用 fastDFS 或 MFS,如果数据量大且多,可采用 hadoop 方案,后端数据库采用“主从 + MHA”架构。


    三、面试总结
    总结一下面试需要注意的事项:


    第一,要对自己的简历内容非常熟悉。简历上写的技能自己必须能说出大概,因为面试官很多问题会围绕简历内容展开。比如写了“熟悉 mysql 数据库的部署安装及原理”,即便不太精通,也要了解原理,否则回答不上来会减分,面试成功几率就小了。


    第二,如果遇到不会的问题,直接说不太熟悉,没深入研究过,不要不懂装懂,东拉西扯只会让面试官反感。


    第三,要充分准备,尽量多记原理性知识,面试大多会问原理,很少问具体配置文件怎么配置。面试前要了解清楚“职位描述”和“岗位要求”,虽然可能不会问到岗位要求相关问题,但熟悉这些内容有备无患。


    第四,面试后要总结,尽量记住面试官的问题,如果有不会的,事后要及时查资料或请教朋友弄清楚,这样才能加深记忆,下次面试遇到相同问题就能回答了。希望这些经验能帮助运维工作的朋友们在面试中取得好成绩。

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-25 06:45 , Processed in 0.065557 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表