什么是环境管理?
环境是指应用程序运行所需要的所有资源和配置信息。
比如下面的配置信息:
- 服务器的硬件信息,比如 CPU 的类型和数量、内存大小、硬盘和网卡信息,以及服务器之间互联使用的交换机信息。
- 操作系统的信息,操作系统的类型和版本,操作系统的优化配置,如文件描述符的数量。
- 应用程序运行所需要的中间件信息,如消息中间件 Kafka 的版本及配置信息。
- 应用程序本身的版本、数据及配置信息。
环境管理就是准备部署环境的过程以及部署之后对环境的管控。既能保证准备环境的快速和一致性,又使得部署后的环境能够有效利用。希望你学习完本课之后能够达到这个目标。
为什么需要环境管理?
在之前的开发过程中,环境部署基本都是 IT 人员手动完成的。手动部署环境就会导致很多问题,比如:
- 手动配置环境很容易出错。由于环境的配置项较多,哪怕是改错一个配置项,都会让整个应用无法启动,或者影响服务的性能。
- 手动配置环境非常低效。通常以周为单位,拖慢了开发、测试的进度。
- 手动配置环境不方便测试验证。如果出现问题,很难复现,因此给测试验证带来了很大的困难。
因此,我们需要一种能够完全自动化的创建环境的过程。这不仅降低了环境管理的成本和风险,能够快速的交付环境,并且自动化的过程使得环境的部署是可重复的、时间是可预测的。
环境管理实践
为了解决上面提到的问题,每个企业的实施方案并不完全一样。这就要根据落地 DevOps 的过程,采用中因地制宜的方法。有的企业环境的数量、用途是固定的,SIT 测试环境就是用来做集成测试的;性能测试的环境就是用来做性能测试的。一般情况下,环境的物理服务器、操作系统是不会经常发生变化的,变化的只是上层应用程序以及依赖的中间件服务。
基于 Git 的配置管理方式来快速创建环境
这个方案主要包含三个内容,Git 仓库、配置管理数据库(CMDB)和部署平台。
- Git 仓库:用于存储创建环境的部署脚本,并能够实现版本控制。部署脚本中尽可能将变化的信息抽取成变量,在部署的时候从 CMDB 中获取。比如,在哪些服务器上部署,部署哪些服务,用哪个操作系统镜像等。因此,这里的部署脚本可以理解为模板。
- CMDB:用于存储每个环境相关的配置信息。包含硬件信息,如物理服务器的信息,CPU型号和数量,内存大小,以及硬盘、网卡等信息;软件信息,如部署哪些应用服务以及服务本身的启动参数和运行参数(数据库连接池大小等)。为了实现模块化部署,每个服务可以设置是否安装等参数。
- 部署平台:用于从 Git 仓库克隆部署脚本模板,从 CMDB 获取指定环境的硬件配置信息和软件配置信息,用 CMDB 中的数据填充部署脚本模板中的变量。然后执行具体的部署任务,创建出符合要求的环境。
这种基于 Git 版本控制系统存储脚本模板,利用CMDB存储个性化的配置项,最终通过部署平台进行组装的方式,可以快速地、可重复地创建一致性的环境。即通过这种方式,每次创建的环境 A 都是一样的。如果这个环境的配置信息发生改变,只需要在 CMDB 中进行变更即可,再次部署时就会应用到新的环境中。