陈晓,某银行自动化运维项目架构师、项目经理,主要负责自动化运维管理平台、监控平台以及流程平台的建设和维护。
1.自动化运维建设背景随着IT技术的快速发展,IT系统的运维复杂度不断增加,IT部门的体量不断扩大,传统的人工操作和借助管理流程的方式已不能满足日益增长的运维工作量。而智能时代的到来,无论是DevOps的思想还是AIOps思想,自动化就像人的“手”一样,决定着最终这些技术思想的是否能够落地,决定着未来一个IT运维的生产力。
而从银行IT架构、运维的特殊性考虑,也需要结合银行自身的特点,对于双模的架构、双模的运维方式也要兼备在稳态和敏态下的自动化运维方案。
自动化运维可以带来的益处:
降低成本-没有一家公司是不想降低成本的,而自动化运维可以通过提高效率、减少人为错误和人力需求,降低企业IT成本。
提高生产力-自动化运维几乎不需要手动工作,这也就意味着它不仅可以提高产出,还可以将运维人员从复杂的传统运维工作中释放出来,将其知识和技能应用于更有价值的工作和任务上。此外,通过减少周转时间,每天可处理工作量也提高了。
高可用-系统宕机可能会使企业损失惨重,无论是金钱上,还是声誉上。运维优先要保障的便是高可用,这也是自动化运维的一大目标。例如通过自动化保存和恢复机制,全天候系统监控和远程通信,以大幅降低网络停机时间;或是快速恢复,减少故障带来的损失。
更可靠-运维常常包括一些重复的但完全必要的工作,这也就是为什么它容易出错。当人为因素从这个过程中消除时,那些昂贵的人为错误也自然消失了,这对于具有多个操作系统的大型网络尤其有用。自动化运维可以明显提高可靠性,减轻运维人员繁琐的手动任务。
性能优化-运维专家面临的另一个问题是,让执行任务和工作流程变得更快、更高效、具备更高工作负载。传统运维方式想要满足这些需求是很困难的,而自动化运维工具则可以填补此类需求,在无需雇佣更多员工的情况下,最大限度的提高性能。
基于以上业务发展的需要以及自动化运维的收益,结合自身IT发展的形势,某银行在自动化运维方面进行了探索和实践。
2.自动化运维平台设计2.1需求分析建立自动化运维管理作业平台,集成自动化部署、批量变更、资源管理、资产信息自动发现等功能。
实现物理机一站式批量部署,包括服务器部署以及操作系统UX、Linux以及Windows操作系统的部署。
实现基于虚拟化平台OpenStack和VMWare的基础环境的自动化部署。
实现Windows安全补丁的批量安装和管理。
实现基于操作系统的批量变更的功能,包括Windows安全补丁安装、批量推送配置、批量安装软件等。
实现基于操作系统层面资产信息的自动发现。
实现基于操作系统的自动化巡检功能。
与流程平台、配置平台的对接,实现流程数据和资源数据的整合实现资源管理功能。
与流程平台对接,实现工单驱动自动化部署和变更的半自助服务。
2.2系统架构1.总体设计思路系统运维自动化的应用架构及关键业务流程的总体规划及设计如下:
建设自动化作业管理平台是本项目的主要工作目标,底层对接资源层,使用各类技术工具以实现自动化操作,横向对接配置管理平台、流程平台、监控平台和数据管理平台,贯穿整体统一运维管理框架,以实现自动化部署、批量变更、配置发现、自动巡检、资源管理的功能。
2.总体应用逻辑架构设计下图是系统运维自动化的总体逻辑架构图
解释说明:
整体架构分为资源层、工具层、平台层和应用层。底层根据企业特点,目前主要是基于私有云环境以及物理裸机,私有云主要使用VmWare和OpenStack等虚拟化平台,而容器平台也逐渐将作为一种资源类型纳入到资源层的管控中。而基于金融行业的特殊性,物理裸机的部署依旧占用比重很大。在设计上依旧需要考虑物理裸机的自动化部署。
在工具层根据底层资源的类型以及特性选择相应的技术工具,如X86服务器的部署选择Cobbler,虚拟化平台选择Ansible、虚拟化平台API或是命令对接的方式实现资源的自动化部署和资源管控。对接流程管理平台主要实现环境交付和变更的半自助服务,以及实现资源管控的流程信息的分类和管理。对接监控信息实现故障自愈以及资源回收。对接配置平台,是通过信息的自动发现保证配置信息的准确性。
在平台层建立自动化作业管理平台,也是本期实施的主要部分。在金融企业内部基本已建立了流程平台、配置平台、监控平台。作业管理平台,主要面向运维人员,可提供自动化操作和配置界面。
而在应用场景方面,主要需要解决的问题,一是环境的自动化部署交付、二是批量变更、三是主机信息的自动化发现、四是自动化巡检、五是资源管控。
3.关键应用实施方案物理服务器部署根据实际需求情况,由于物理服务器的操作系统版本没有高度统一,如RedHat、CentOS、Exsi等各类版本,故物理服务器一站式部署的实质是要形成X86物理资源池,再按需下发部署操作系统。
要实现Cobbler的自动化下推操作系统,必须提供DHCP网络环境,根据现有的网络环境,按如下方案实施:
Cobbler服务器根据其业务功能将其部署在数据中心的业务管理区(或某一个业务区中),Cobbler提供X86服务器基于PXE的自动引导安装功能,同时提供DHCP服务,并定义跨区域的多网段IP地址段。
由于Cobbler的网络引导需要在DHCP网络内进行,而在目前业务网中采用的是固定IP分配方式,故采取在每个业务区建立一个Vlan作为物理服务器的预安装区,在这些区域内单独开启DHCP服务。Cobbler服务器本身作为DHCP服务器,每个区域预安装区Vlan的服务器通过本区域的接入交换机的中继服务向DHCP服务器申请IP地址。
裸机上电上架时业务口先接入预安装区Vlan,该Vlan网络与同区业务网络通过接入交换机隔离。已接入各业务区Vlan的待安装裸机,在启动时会广播请求DHCP服务以获取IP地址,通过每个区汇聚层的DHCP中继服务,将其指向业务管理区(Cobbler服务器所在业务区)的DHCP服务器(部署在Cobbler服务器上)以获取IP地址,获取IP地址后会继续请求引导文件,获取镜像文件等后续操作系统部署动作。在完成操作系统的自动安装后,将该裸机服务器的业务IP由预安装Vlan切换至正式业务环境。
Cobbler在kickstart的基础上集成了电源管理功能,故每台X86服务器在批量上电上架后配置带外口配置,可以实现批量部署物理服务器形成物理资源池,再按需实现操作系统部署。无需在上电上架时人为开机进行引导操作系统,将批量部署和按需下发的动作分离,形成物理资源池。
具体网络结构如下图:
4.主要工具简介CobblerCobbler是一个系统启动服务(bootserver),可以通过网络启动(PXE)的方式用来快速安装、重装物理服务器和虚拟机,支持安装不同的Linux发行版和Windows。该工具使用python开发,小巧轻便(才15k行代码),使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理DHCP,DNS,以及yum包镜像。
Cobbler使用命令行方式管理,也提供了基于Web的界面管理工具(cobbler-web),还提供了API接口,可以方便二次开发使用。
Ignite-UXIgnite-UX是HP-UX的系统管理工具,可以利用该工具通过镜像备份恢复的方式从网络引导并安装HP-UX操作系统。
WSUSWSUS是个微软推出的网络化的补丁分发方案,是个免费的工具。WSUS支持微软公司全部产品的更新。通过WSUS这个内部网络中的Windows升级服务,所有Windows更新都集中下载到内部网的WSUS服务器中,而网络中的客户机通过WSUS服务器来得到更新。这在很大程度上节省了网络资源,避免了外部网络流量的浪费并且提高了内部网络中计算机更新的效率。WSUS采用C/S模式,客户端已被包含在各个WINDOWS操作系统上。从微软网站上下载的是WSUS服务器端。通过配置,将客户端和服务器端关联起来,就可以自动下载补丁了。这个配置几乎就是使用WSUS的全部工作了。
Ansibleansible是自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
3.Ansible的应用在整个自动化运维管理平台中,除了集成部分由专业开发团队外包集成外,Ansible是由我们目前研究的方向和目标。而基于Ansible基本实现了自动化运维平台的后端核心部分,下面的章节主要就Ansible研究和探索的内容进行分享和探讨。
3.1Ansible的特点Ansible在