《DevOps实战:VMware管理员运维方法、工具及最佳实践》——1.2 采用系统思维

简介:

本节书摘来自华章计算机《DevOps实战:VMware管理员运维方法、工具及最佳实践》一书中的第1章,第1.2节,作者:小特雷弗 A. 罗伯茨(Trevor A. Roberts Jr.)乔希·阿特韦尔(Josh Atwell)埃格勒·西格勒(Egle Sigler)著,更多章节内容可以访问云栖社区“华章计算机”公众号查看

1.2 采用系统思维

系统思维意味着将涉及软件发行版本部署的所有团队当成一个紧密相连的单位,而不是日程安排相互冲突的多个分散团队。这些团队包括信息安全、运营、开发、质量保证(QA)、产品管理等。
在我们的讨论中所提到的系统指的是经历整个软件开发生命期(规划、开发、QA、部署和维护)的任何项目,不管这些项目是供内部还是外部消费的。
1.2.1 改变团队的互动方式
我们将焦点放在第一件应该做的事:成为开发团队的顾问。和负责定期规划会议的开发团队领导(在敏捷的术语中称为产品负责人和敏捷教练)对话,要求加入他们的一些回忆。主动倾听可能需要基础设施采购/部署的任何团队目标或者可交付成果。下面的几段强调来自开发团队的需求/规格示例,说明了在这种会议期间你所能提供的反馈/专业意见。
“我们需要用于客户源代码的长期数据存储。”
开发团队不一定直接说出他们需要一个新的磁盘阵列,甚至没有意识到需要采购存储设备。但是,对存储系统的认识会提示你,有必要和存储主题专家(SME)一起进行容量规划。
你还需要在开发人员讨论用户数据生命期管理时考虑不同的存储层次。
“我们需要在生产环境中运行独立于客户使用实例的Taao项目实例。”
这立即让你想起附加虚拟网络或者虚拟防火墙的需求,这能够使生产和客户数据流量与内部流量分隔开。你还需要咨询信息安全团队,了解提供客户数据分离保证的审计过程。
“在我们的最后一个发行周期中,代码在我的便携电脑上成功编译和运行,但是在部署到生产环境时崩溃。”
开发人员可能提出一个在之前的代码部署中遇到的问题,提交的代码在她的便携电脑上工作正常,但是在生产部署时发生故障。她的本地开发环境运行的是Ubuntu虚拟机(VM),和非军事区(DMZ)中的CentOS服务器上实施的安全补丁或者防火墙规则不匹配。所以,需要立即打补丁以满足最后限期(对于开发团队和运营团队都是一个漫长的夜晚)。你对Vagrant和Packer等环境构建工具和Puppet、Chef及Ansible等配置管理工具的认识,使你能够构建一个用于开发人员便携电脑且匹配生产服务器规格的标准测试环境。
由于开发团队领导了解了运营团队在发行周期早期为了缓解开发环境问题所做出的努力,你在协调与此努力相关的一些活动时就会更容易一些。首先,这意味着开发团队需要确保其成员不会将任务推给其他团队。(也就是说,“现在是周五下午5点了,我不知道代码能不能在生产环境中正常工作,但是无论如何,我都会把它提交到存储库!”)
某组织在最近的PuppetConf上发表讲话,分享其代码部署策略:当代码部署到生产环境时,编写代码的开发人员参与更改窗口期的轮班。这样,如果代码中出现任何复杂现象,他们可以立即协助运营团队查错和解决。坦率地说,这也使开发人员有动力编写更好的代码,避免在凌晨3点接到电话去修复缺陷。
在继续之前,对于可能阅读本书的经理,Jez Humble强烈建议:不要构建新的DevOps团队!雇用在DevOps方法学上有专业能力的开发人员、QA工程师、运营人员是个好主意,但是创建不同于组织其余团队的全新DevOps团队只会带来新的“竖井”,可能对你的目标造成反作用。相反,应该像前面提到的那样,继续更好地协调各个团队,使他们像一个团队那样思考和行动,而不是各自寻求自己的最大利益。
1.2.2 改变基础设施部署方法
数据中心的一些扰人而又常见的现象可能妨碍系统的进展:手工制作的“金映像”、雪花服务器和易碎箱。
服务器(不管是物理还是虚拟服务器)部署的常用方法是维护一组包含必要更新、补丁、设置等内容的操作系统配置,人工运用这些配置使系统立刻为部署做好准备。这些配置被称作“金映像”,传统上采用ISO形式,已经根据某个运行手册人工应用补丁。最近,金映像已经采用模板VM的形式保存。但是,老实说:金映像也可能生锈!
金映像本身没有什么问题。但是,构建它们的方式可能带来问题。如果人工构建,该过程可能是一个全职工作,必须跟踪模块更新、安全补丁等,然后重新配置ISO/模板VM供以后使用。必须有一种更有效的方法,也的确有!
使用第4~13章介绍的配置管理技术,可以自动构建映像。随着服务器配置更改并登记到Git(第3章中介绍)等存储库,Jenkins(参见第18章)等持续集成(CI)系统可以输出一个更新的金映像。CI系统可以使用Packer等工具生成用于Vagrant、虚拟化管理器和云提供商的模板VM。
Martin Fowler提出了“雪花服务器”的思路,雪花服务器是一台物理机器或者VM,最初是为了保持标准化的良好愿望。但是,不管是为了完成故障报告而进行快速修复、高管要求的特殊项目还是其他原因,这种服务器都变成高度定制的。这些特殊更改解决了短期问题,但是会造成长期的麻烦。当对这些服务器上的软件包升级时会发生什么?安全补丁甚至操作系统升级又会发生什么?
如何解决雪花服务器的问题?首先,我们通过登录到服务器命令行界面强制避免任何更改;不允许一次性执行前端和软件包更新工具或者更改配置文件。所有服务器更改都只能通过配置管理技术进行。
对于现有的雪花服务器,必须进行一些乏味而不必要的工作。首先,检查服务器配置,以便准确地知道需要修改的配置文件、需要安装的软件包和其他需要包含在配置管理脚本中的关键设置。多次迭代构建和测试服务器,每次都对配置管理脚本进行调整,直到测试环境与雪花服务器完全相同。将更改提交到源代码库,就可以拥有一个可在生产服务器无法恢复时使用的可重复构建过程。
易碎箱这一术语来源于Nassim Nicholas Taleb的《Antifragile》一书,描述了一台运行关键软件栈的物理或者虚拟服务器,每个人都害怕接触它,因为业务可能因此遭遇重大故障。通过许多支持电话/专业服务,这台服务器已经达到了一个稳定状态,糟糕的是,管理该服务器的SME离开了公司。
如果稳定性确实是个考虑因素,进行物理-虚拟转换或者虚拟-虚拟迁移到VMware vSphere平台是个好主意。这样,你可以利用分布式资源调度器(DRS)、存储DRS、高可用性(HA)等VMware基础设施可靠性机制。在服务器转换且拥有成功的业务持续性工作流(备份、快照)后,就可以考虑是否可以利用前面雪花服务器的弥补措施复制这一服务器。开发和QA工程师就可以很容易地构建一个测试环境而不接触易碎箱。
1.2.3 改变软件开发和部署方法
我们已经解决了基础设施部署的速度和质量问题,那么团队如何减少从开发、展示到生产阶段代码移动引起的缺陷?众所周知,在开发周期中越早发现缺陷,修复的代价就越低。这就是我们首先要有QA团队的原因。
但是,如果我们可以在代码移交给QA工程师之前就捕捉到缺陷,又会如何?这就是前面提到的持续集成系统的用途所在。我们后面会更详细地讨论CI,基本要点是,当你将源代码提交到存储库时,CI系统可以修改并设置为自动执行对提交代码的一系列单元测试。在过程结束时,可以构建一个软件包并自动分发给QA团队,实施他们的全面测试。
1.2.4 经常收集和响应有用的系统反馈并相应调整
系统思维的转变只有在有能力监控和分析系统性能时才能成功。业务的变化节奏似乎是指数级的,消费者对系统响应能力和正常运行时间有更高的预期,被动的问题解决方案不再成为选择;相反,你的团队必须在问题发生之前预测到它们,以维护系统稳定性。
日志分析可能是最重要的工具之一,尤其是在启用了二进制代码的调试选项时。如果你的环境由较多的服务器组成,就应该采用某种形式的自动化日志分析。这方面的选择很多,包括VMware vRealize Log Insight、Splunk甚至Logstash、Elasticsearch和Kibana等开源工具(第17章中介绍)。这些解决方案使系统管理员能够检查重复的事件与低下的性能关联。当团队更加熟悉这些工具,且更擅长识别问题时,系统的实用性就会提升。

相关文章
|
29天前
|
运维 Devops 持续交付
自动化运维的魔法:打造高效DevOps流水线
【10月更文挑战第34天】在数字化时代的浪潮中,DevOps成为企业追求敏捷、高效和稳定的关键。本文将通过一个真实案例,展示如何构建一个高效的DevOps流水线,实现从代码提交到部署的全自动化流程。我们将探讨流水线设计的哲学、工具选择以及面临的挑战,并分享实际的代码示例和操作步骤,帮助读者理解自动化运维的精髓。
42 2
|
1月前
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第26天】Prometheus与Grafana是智能运维中的强大组合,前者是开源的系统监控和警报工具,后者是数据可视化平台。Prometheus具备时间序列数据库、多维数据模型、PromQL查询语言等特性,而Grafana支持多数据源、丰富的可视化选项和告警功能。两者结合可实现实时监控、灵活告警和高度定制化的仪表板,广泛应用于服务器、应用和数据库的监控。
178 3
|
2月前
|
运维 Linux Apache
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
64 3
|
2月前
|
运维 监控 安全
高效运维管理:提升系统稳定性的策略与实践
【10月更文挑战第2天】 在当今数字化时代,运维管理成为企业IT部门的重要任务。本文将探讨如何通过高效的运维管理策略和最佳实践,提升系统的稳定性,确保业务持续平稳运行。通过分析常见问题、预防措施以及应对策略,我们将揭示高效运维的关键要素,助您打造一个可靠的IT环境。
|
22天前
|
运维 监控 应用服务中间件
自动化运维的利器:Ansible实战应用
【10月更文挑战第41天】在现代IT运维领域,自动化已成为提高效率、减少错误的关键。Ansible作为一种简单而强大的自动化工具,正被越来越多的企业采纳。本文将通过实际案例,展示如何使用Ansible简化日常运维任务,包括配置管理和批量部署等,旨在为读者提供一种清晰、易懂的自动化解决方案。
26 1
|
27天前
|
运维 Ubuntu 应用服务中间件
自动化运维工具Ansible的实战应用
【10月更文挑战第36天】在现代IT基础设施管理中,自动化运维已成为提升效率、减少人为错误的关键手段。本文通过介绍Ansible这一流行的自动化工具,旨在揭示其在简化日常运维任务中的实际应用价值。文章将围绕Ansible的核心概念、安装配置以及具体使用案例展开,帮助读者构建起自动化运维的初步认识,并激发对更深入内容的学习兴趣。
52 4
|
28天前
|
缓存 运维 监控
【运维必备知识】Linux系统平均负载与top、uptime命令详解
系统平均负载是衡量Linux服务器性能的关键指标之一。通过使用 `top`和 `uptime`命令,可以实时监控系统的负载情况,帮助运维人员及时发现并解决潜在问题。理解这些工具的输出和意义是确保系统稳定运行的基础。希望本文对Linux系统平均负载及相关命令的详细解析能帮助您更好地进行系统运维和性能优化。
50 3
|
29天前
|
消息中间件 运维 UED
消息队列运维实战:攻克消息丢失、重复与积压难题
消息队列(MQ)作为分布式系统中的核心组件,承担着解耦、异步处理和流量削峰等功能。然而,在实际应用中,消息丢失、重复和积压等问题时有发生,严重影响系统的稳定性和数据的一致性。本文将深入探讨这些问题的成因及其解决方案,帮助您在运维过程中有效应对这些挑战。
32 1
|
1月前
|
运维 监控 中间件
数据中心运维监控系统产品价值与优势
华汇数据运维监控系统面向IT基础架构及IT支撑平台的监控和运维管理,包含监测、分析、展现和告警。监控范围涵盖了网络设备、主机系统、数据库、中间件和应用软件等。
56 4
|
1月前
|
运维 Devops 测试技术
自动化运维的魔法——打造高效的DevOps流程
【10月更文挑战第28天】在数字化浪潮不断推进的今天,企业对运维效率的追求如同古人探索魔法一般充满好奇与渴望。本文将带你走进自动化运维的世界,揭秘如何通过DevOps实践,实现从代码到部署的无缝连接,提升企业的IT运营效能。我们将一起探索自动化工具的选择与配置,以及如何构建一个既能快速响应业务需求,又能保障系统稳定性的高效流程。