解读《运维知识体系》,直面自动化运维的“灵魂八问”

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
云解析 DNS,旗舰版 1个月
简介: 阿里云MVP赵舜东带来的运维知识体系解读。

赵班长带领大家详细学习运维知识体系,介绍了缓存知识体系,抛出检测公司自动化运维承受度的“灵魂八问”,最后跟大家分享了运维的趋势和挑战。

想看精彩直播回放,请点击这里。

以下是精彩直播内容整理:

运维知识体系赵班长从2015年开始写,一直到现在,整个体系是按照HTTP的请求流程,从浏览器发出请求到最后收到响应,所经历的所有技术栈。

运维知识体系可以做什么?
第一,如果你想成为运维架构师,那么你需要掌握运维体系中所有内容;
第二,可以帮助运维朋友划清运维的边界,因为整个运维体系非常大,未来到底朝哪个方向发展?可以根据运维知识体系给自己画一个圈。

运维知识体系

从整体上看,运维知识体系是按照客户端层、外部层、网络层、接入层、应用服务层、存储层、基础服务层、容器层、操作系统层、基础设施层等结构编写,也是作者十年运维工作的总结。

客户端层
image.png
对于客户端层中的浏览器层,作为运维要掌握非常多的知识,比如浏览器的缓存协商,其中包括三种不同的缓存协商办法;浏览器还涉及到很多前端相关工作,比如cookie作用域,如何通过使用不同顶级域名来减少静态资源cookie的提交,以及前端性能的优化,比如如何实现Css和js请求合并,把多个请求合并成一个请求,还包括组件分离,如何针对静态资源来做不同的组件分离;浏览器还涉及到运维相关的一些工具,比如出现故障,给用户发送一个页面,通过页面可以做一些正常的路由检测、PING检测和DNS检测,也需要我们掌握HTTP协议相关东西。
image.png
浏览器层再往下就是DNS层。DNS需要掌握DNS缓存,比如浏览器DNS缓存,火狐或谷歌浏览器默认是60秒DNS缓存,还涉及到DNS服务器的DNS缓存,以及DNS缓存服务器;DNS还需掌握DNS知识,包括DNS基础知识,比如如何进行递归和迭代的查询,如何自建DNS,以及如何使用公共DNS,如图即是阿里公共DNS,公共DNS都需要什么样的技术等等。
image.png
DNS层之后就是客户端/APP层,浏览器是客户端,还有其它C/S结构的客户端及手机APP也作为客户端,在客户端层涉及到客户端的请求与访问,比如HTTP-DNS,即通过HTTP协议进行域名解析,可以解决local DNS不准确或者调度不准确和缓存等问题,客户端/APP还涉及到怎么去传输协议,以及怎么去做加密传输、打点日志和监控SDK;还有业务领域的一些知识,比如客户端/APP如何做消息推送、直播推流等场景。

外部层
image.png
一个请求通过客户端层之后就会到外部层,如外部CDN,之前我所在公司使用了公有云服务,有自己的托管机房,外部CDN就需要掌握CDN技术,包括全局负载均衡、反向代理缓存,包括CDN如何做分布式存储、如何做流量调度、配置管理,作为用户来说,我们还需要掌握CDN各类 API的调用,比如我们经常会集成各家CDN,如带宽监控、预缓存和缓存刷新等。
在外部安全防护层面,我们使用第三方安全解决方案,如阿里云的高防IP(防DDOS、防CC攻击、WAF等)。

网络层
image.png
在客户端层、外部层之后,请求就会流入网络层,因为我们有多机房建设,包括公有云、私有云。网络层包括由上到下包括互联层、核心层、汇聚层和接入层:

  • 互联层涉及到多机房互联(VPN、专线),现在还有SDY,即软件定义广域网,在互联层层面还涉及到整个架构部署,如异地灾备->异地多活->按SET部署等;
  • 核心层有防火墙、路由器、Ipsec VPN、链路负载均衡和高可用(CCNP级别);
  • 汇聚层主要是接入层的汇聚,由于之前我们是托管机房,每一个机柜上面都有接入层交换机,所有的接入层交换机都会连接到两个不同的汇聚层交换机上,汇聚层需要掌握CCNP级别的技术,比如三层交换、动态路由(OSPF协议)、静态路由协议、EC(端口汇聚)、MSTP+VRRP等;
  • 接入层大概需要掌握CCNA级别知识,包括二层交换(VTP、SPF、Trunk、端口安全)等。

接入层
请求接入网络后,就流到了接入层,接入层有负载均衡设备,负载均衡又分为四层负载均衡和七层负载均衡,四层负载均衡需要掌握LVS(IP负载均衡)+Keepalived、Haproxy,包括一些商业负载均衡:F5、Netscaler;七层负载均衡需要掌握反向代理:Haproxy、Nginx、Apache(根据HTTP协议支持的属性进行L7分发),还可以实现A/B Test Gateway、WAF等功能。
请求继续向下会涉及到反向代理缓存,包括ATS、Squid、Varnish、Nginx(缓存分级、预缓存、缓存刷新),现在反向代理缓存用的比较少了,因为CDN就是一种反向代理缓存。

应用服务层
请求再往下到达应用服务层,应用服务层最上面是web服务层,作为运维,我们要掌握不同的Web服务器(Apache、Nginx/OpenResty、Tomcat、Resin、Jboss)安全设置、性能优化,我们还要精通HTTP协议;
接着是应用服务层,包括不同软件的运行环境(PHP Python Java C C++)、性能优化、缓存(OPCache、LocalCache)、Session存储、代码部署等;
我在这里还划分了业务层,一个不懂业务的运维一定不是一个好运维,做应用运维必须要了解公司业务,不了解公司的运营模式,怎么能够更好的服务于公司业务呢?业务层又分为业务实现层和服务层。业务实现层我们要知道API网关、302调度、业务模块化(电商例:用户、商品、购物车、结算中心、价格等服务)、微服务等,一个电商可能有几十到上百个微服务模块;服务层需要看每家企业不同的微服务框架(istio、Spring Cloud),比如阿里开源的SOA框架(Dubbo),不同微服务框架使用不同的协议,目前主流使用RPC、RESTful等协议,我们还要关注框架安全、应用性能监控。
再往下到分布式层,主要讲分布式消息队列,做电商时严重依赖于消息队列,比如一些高并发或流量削峰场景都会用到,消息队列包括ActiveMQ(成熟)、RabbitMQ(成熟、案例多)、RocketMQ(业务应用)、Kafka(日志传输)、ZeroMQ(快)等。

存储层
image.png
存储层分为文件存储层、DAL层和数据存储层。
存储有三种类型,包括块存储、对象存储和文件存储。在这里我们按照独特的方式对文件存储层进行了划分,比如单机存储,机械硬盘、文件系统和LVM都属于块存储。当单机存储无法满足需求时,就需要单机存储扩展,涉及到文件分发、文件同步、DAS直连式存储等。还有NAS[NFS(Unix/Linux)]、FTP、SAN、iSCSI这类的共享存储,更有GlusterFS、MooseFS、Ceph、FastDFS(非对象存储)等的分布式存储。
文件存储层下面即是DAL数据访问层,越来越多的企业意识到数据访问层的重要性,因为随着数据量的增加,可能需要做数据库的分库分表,这时就需要有数据访问层解决多库多表问题。数据访问层有多种实现,最简单的是应用层分片,直接在应用层做分库分表,还有淘宝自己写的TDDL、开源的360(Atlas)、阿里(Cobar)、MyCat、MySQL-Proxy等。

最后是数据存储层,数据存储层按照很多方式存储:分布式缓存,如Memcached、Redis(客户端分片、Redis Cluster、Twemproxy、Codis)是我们需要掌握的;NoSQL如Redis、LevelDB(SSDB)、CouchDB、Mongodb、Couchbase 、Cassandra、TiDB(支持MySQL协议);作为运维还要理解时间序列数据库,做监控就特别适合使用时间序列数据库,因为我们采集的所有监控指标就是key、value、时间戳和标签,如RRDTool(还可以做绘图)、Graphite Whisper、OpenTSDB、InfluxDB、KairosDB、ElasticSearch、Hbase;关系型数据库如MySQL(PXC集群、MHA)、Oracle(DG、OGG、RAC)、PostgreSQL、SqlServer、SQLite、DB2;此外,还要涉及大数据的知识,比如Hadoop生态圈(HDFS、Hive、Hbase、Zookeeper、Pig、Spark、Impala、Kudu)、Mahout智能推荐。
到这里,整体架构基本就介绍完毕了,接着我们来看一看跟运维相关的其它层级。

基础服务层
image.png

基础服务层又分为以下四点:

  • 业务决策:比如如何做灰度发布、服务降级、异地灾备、数据分析平台、智能扩容决策树(需要各层支持)、智能监控;
  • 运维相关:项目管理工具(Redmine、Jira、知识库、Bugzilla、CodeReview)、工单系统、运维操作平台、监控平台;
  • 应用相关:如何做持续集成、日志收集平台(ELKStack)、自动化部署平台、Job管理(调度)平台、安全扫描平台;
  • 系统相关:如内部的LDAP、内部DNS、DHCP、Mail、SMS、Gitlab、Yum仓库、操作审计(xenapp)、堡垒机。

容器层
再往下就涉及到系统了,最早是没有容器层的,由于容器技术的火爆,因此本知识体系加入了容器层。
容器层包括容器编排、容器和系统、网络和存储三部分。容器编排有最早的Mesos(Marathon、Chronos)、Kubernetes、Docker Swarm、Rancher、CoreOS(fleet)、OpenStack(Magnum)等;容器和系统也有很多,Docker只是其中一种,还有LXC、LXD、rkt等,系统有CoreOS、Atomic、RancherOS等;容器的网络和存储也是有不同的插件,像网络包括Calico、Flanel、Weave Net等,存储包括Ceph、Docker Registry(镜像管理)、Harbor等。

操作系统层
再往下就涉及到操作系统层,作为运维,我们需要掌握CPU、内存、IO内核。
CPU我们需要了解CPU运行级别、使用率、上下文切换、运行队列、进程调度、系统调用、CPU管理(进程管理、taskset、intel VT-X),如taskset,把一个进程绑定在不同CPU的kernel上,来减少cache miss等等;内存需要掌握linux虚拟内存,以及SWAP换入换出、内存寻址、内存管理(Buffer Cache、HugePages、ksmd、EPT);磁盘IO需要掌握缺页中断,如主缺页中断和次缺页中断,就是如何通过中断数据把磁盘数据载入到内存中,还涉及到IOPS(顺序IO、随机IO)、IO管理(IO调度算法、virtio)、VFS;网络IO需要掌握TCP/IP(三次握手、四次挥手、11种状态转换、TCP队列)、IO模型、网卡Bonding、Bridge、网络管理(iftop、tcpdump);以前做运维时,经常会做一些内核定制,包括内核参数的优化,以及脚本编程(AWK、Sed、Shell、Python、PHP、Perl、Ruby、Lua),这是运维必须掌握的知识。

基础设施层
基础设施层有IAAS(基础设施即服务),即有公有云、私有云(OpenStack/cloudstack+KVM/XEN、oVirt)、混合云;还有硬件管理,包括硬件选型、配件更换、资产录入、系统安装(Cobbler)、标签化、Raid构建、远程控制(KVM、iDrac、ILO、IMM);以及IDC托管,包括需求分析、IDC选型、网络测试、谈价格、签合同、设备采购(原厂vs渠道)、机柜和机位规划。
此外,还有数据中心选址、制冷、供电、网络、运维等管理。
以上即为整个运维知识体系内容,在此基础上,还囊括了产品方面的知识,比如基于DevOps产品思路、自动化运维产品思路,还总结了测试和开发相关的知识,作为运维工程师,可能还要协助开发测试人员工作,比如使用TCPCopy协助测试做性能测试,还协助做监控、环境规划等。

如果你想要从运维工程师变成运维主管、运维总监,那么你必须要掌握运维管理必会的ITSM、ITIL V3、IT Service CMM、Six Sigma、DevOps Master、项目管理(PMBok)、架构层面(知识体系、运维方案、容量规划、灾备规划、服务降级)等知识。

运维的发展趋势从小公司打杂开始,进而发展到运维开始分层,很多公司分为基础设施运维、系统运维、应用运维、运维开发、机房运维等,再进一步运维开始分场景分业务了,比如直播点播的运维、CDN运维等,最后,运维都是要实现自动化、智能化。

整个运维知识体系并没有严格的上下层级关系,除了整个体系之外,我还在每一层面编写了对应的监控体系、自动化体系和云计算体系。

  • 监控体系中,客户端和外部层涉及到舆论监控、外部网络监控和APM,网络层涉及到设备监控、网络质量监控,接入层涉及到服务监控,应用服务层涉及到业务监控(API)、流量分析(Piwik)、服务监控(API)、安全监控(WAF),存储层涉及系统监控、软件自带监控、数据库监控和服务监控,还有一些容器监控和系统级别的一些监控工具的使用;
  • 自动化体系中,每一层都有自动化的实现,比如配置管理、数据库运维平台等;
  • 现在所有的运维知识内容都可以在公有云上找到对应的产品,云计算的时代来临,运维的竞争对手根本不是运维本身,而是公有云,因为公有云产品基本把用户所有需要的内容都实现了。如果有刚接触运维工作的同学,学习运维知识有一个特别好的方式,即打开阿里云,你想学的某一方面知识可以直接看产品简介,产品简介中就有基础内容。

缓存知识体系

除了运维知识体系,接下来向大家介绍缓存知识体系。
image.png

缓存知识体系包括用户层、代理层、web层、应用层、数据层、系统层和物理层。其中包括DNS缓存、浏览器缓存、反向代理缓存、解释器和web服务器缓存、动态内容缓存、页面静态化缓存以及local cache,还包括数据库缓存、操作系统中CPU和内存缓存,物理层有Raid卡和磁盘缓存,默认情况下磁盘缓存都是关闭的,在Raid卡中控制,Raid卡中有电池,机器如果断电,所有数据都可以保留。整个缓存知识体系不包含缓冲,只有cache,没有buffer。

提问式工作法(灵魂八问)

检验我们工作做得如何最好的方式就是提问题。以下总结出如何快速评测公司自动化运维承受度的灵魂八问。

问题:如果将生产中一台Web服务虚拟机直接删除掉,是否可以使用自动化手段恢复?通过这个问题来检测公司自动化运维承受度。
1.是否能够自动化创建一台新的虚拟机?
打开阿里云云主机,点击新建控制台这不算是自动化创建,调用阿里云API自动化创建可以。
2.是否能够自动化配置应用运行环境?
将它做成虚拟机镜像也可以。
3.是否能够自动化部署应用的当前版本?
4.是否能够自动化添加监控?
监控包括主机监控、应用监控和应用运行环境监控。
5.是否能够自动化完成日志采集?
人工登录做配置进行日志采集是不可以的。
6.是否能够自动化执行冒烟测试?
7.是否能够自动化添加新节点到集群中?
8.以上所有步骤是否涉及到CMDB的资产添加和状态变更。

很多做自主化运维都有CMDB,从第一部开始,CMDB里就有一个新的资产产生,随着2、3、4、5、6、7的状态变化,资产的状态是否发生变更。
灵魂八问其实是一个自动化场景,如何去评估你的自动化做得好不好,就是要看整个场景中是真自动化还是手工的。之前我们有很多自动化工具,很多企业把自动化工具玩转的都很好,但是工具自动化并不是真正意义上的全链路自动化。如果你使用k8s,这八问你可能会得5分,比如第一步,一个pod挂了会自动创建一个新的,第二、三步,k8s会把运行环境和代码都打包到docker镜像中,第七步,k8s会自动发添加新节点到集群中,我们再努努力,就会保证5分及格。

运维趋势和挑战

企业多云战略不可忽视
image.png
现在很多企业都在考虑多云战略,根据第三方统计,有84%的企业考虑多云战略,其中,有9%考虑多个私有云,17%考虑多个公有云,58%考虑用混合云。

容器化趋势不可阻挡
image.png
经过2019调研,66%企业正在使用容器,其中60%企业在使用kubernetes做容器编排,还有27%正在计划使用它。因此,容器已经成为一个大的发展趋势。

DevOps挑战必须面对
image.png
很多人觉得DevOps比较虚,都是忽悠人的,其实不是。从CI、CD到CO,持续集成、持续交付/持续部署到持续运营,包含了从计划、编码、集成、测试、发布、部署到运维整个应用开发和服务的生命周期。DevOps实际上是把应用和服务的生命周期关联起来了,希望大家必须去面对这个趋势,不要逃避。

运维转型的盛宴不要缺席
运维研发工程师这个职位未来会更名,因为未来所有运维都将具备研发能力。“会写python的人没什么了不起”,会的人可以用来自嘲,不会的人哪来的勇气说?我们要将自己的观念从传统运维向新运维方向去转型,可以参考google的SRE如何去做运维变革的,现在很多企业也在从事AIOps方面的内容。

扫描下方二维码,加入开发与运维钉钉交流群,查看更多精彩内容。
开发与运维技术群.jpg

相关实践学习
Serverless极速搭建Hexo博客
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
1月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
52 4
|
4天前
|
机器学习/深度学习 数据采集 人工智能
智能运维:从自动化到AIOps的演进与实践####
本文探讨了智能运维(AIOps)的兴起背景、核心组件及其在现代IT运维中的应用。通过对比传统运维模式,阐述了AIOps如何利用机器学习、大数据分析等技术,实现故障预测、根因分析、自动化修复等功能,从而提升系统稳定性和运维效率。文章还深入分析了实施AIOps面临的挑战与解决方案,并展望了其未来发展趋势。 ####
|
13天前
|
机器学习/深度学习 数据采集 运维
智能化运维:机器学习在故障预测和自动化响应中的应用
智能化运维:机器学习在故障预测和自动化响应中的应用
38 4
|
1月前
|
存储 运维 监控
高效运维:从基础架构到自动化管理的全面指南
【10月更文挑战第11天】 本文将深入探讨如何通过优化基础架构和引入自动化管理来提升企业IT运维效率。我们将从服务器的选择与配置、存储解决方案的评估,到网络的设计与监控,逐一解析每个环节的关键技术点。同时,重点讨论自动化工具在现代运维中的应用,包括配置管理、持续集成与部署(CI/CD)、自动化测试及故障排除等方面。通过实际案例分析,展示这些技术如何协同工作,实现高效的运维管理。无论是IT初学者还是经验丰富的专业人员,都能从中获得有价值的见解和实操经验。
61 1
|
1月前
|
运维 监控 测试技术
构建高效运维体系:从监控到自动化的实践之路
【10月更文挑战第9天】 在当今信息技术飞速发展的时代,运维作为保障系统稳定性与效率的关键角色,正面临前所未有的挑战。本文将探讨如何通过构建一个高效的运维体系来应对这些挑战,包括监控系统的搭建、自动化工具的应用以及故障应急处理机制的制定。我们将结合具体案例,分析这些措施如何帮助提升系统的可靠性和运维团队的工作效率。
50 1
|
1月前
|
运维 jenkins 持续交付
自动化部署的魅力:如何用Jenkins和Docker简化运维工作
【10月更文挑战第7天】在现代软件开发周期中,快速且高效的部署是至关重要的。本文将引导你理解如何使用Jenkins和Docker实现自动化部署,从而简化运维流程。我们将从基础概念开始,逐步深入到实战操作,让你轻松掌握这一强大的工具组合。通过这篇文章,你将学会如何利用这些工具来提升你的工作效率,并减少人为错误的可能性。
|
1月前
|
存储 运维 监控
高效运维管理:从基础架构优化到自动化实践
在当今数字化时代,高效运维管理已成为企业IT部门的重要任务。本文将探讨如何通过基础架构优化和自动化实践来提升运维效率,确保系统的稳定性和可靠性。我们将从服务器选型、存储优化、网络配置等方面入手,逐步引导读者了解运维管理的核心内容。同时,我们还将介绍自动化工具的使用,帮助运维人员提高工作效率,降低人为错误的发生。通过本文的学习,您将掌握高效运维管理的关键技巧,为企业的发展提供有力支持。
|
1月前
|
运维 监控 安全
构建高效运维体系:从监控到自动化的全面指南在当今数字化时代,运维作为保障系统稳定性和效率的重要环节,其重要性不言而喻。本文将深入探讨如何构建一个高效的运维体系,从监控系统的搭建到自动化运维的实施,旨在为读者提供一套完整的解决方案。
本文详细介绍了高效运维体系的构建过程,包括监控系统的选择与部署、日志分析的方法、性能优化的策略以及自动化运维工具的应用。通过对这些关键环节的深入剖析,帮助运维人员提升系统的可靠性和响应速度,降低人工干预成本,实现业务的快速发展和稳定运行。
|
1月前
|
运维 监控 网络安全
Python 在网络运维方面的自动化应用实例
Python 在网络运维方面的自动化应用实例
|
1月前
|
机器学习/深度学习 运维 监控
提升运维效率:自动化工具与实践的融合
【10月更文挑战第3天】 在当今信息技术迅猛发展的时代,运维作为保持系统稳定性和性能的关键角色变得越来越重要。本文将探讨如何通过结合自动化工具和最佳实践来优化运维流程,实现高效、可靠的运维管理。从基础监控到高级自动化,我们将一步步引导您了解如何搭建和维护一个高效的运维体系。
35 3

热门文章

最新文章