e-works数字化企业网  »  文章频道  »  基础信息化  »  云计算和虚拟化

一名运维者的思考:云计算时代的自动化运维走向

2017/7/12    来源:AIX专家俱乐部    作者:覃健祥      
关键字:运维者  云计算时代  
关于题目“云计算时代的自动化运维”,用通俗的话讲,就是应用的自动化部署。
    关于题目“云计算时代的自动化运维”,用通俗的话讲,就是应用的自动化部署。
 
    第一个关键词是自动化,自动化代表高效率、低成本;第二个关键词是应用部署。即,不涉及讲物理基础设施的运维(如机房基建、能源、消防、安保、布线等等)。
 
    假设一个企业要做一个电商网站,典型的运维流程是这样:
 
    1. 购买硬件设备:服务器、交换机。可能还有路由器、负载均衡器、防火墙,不一一穷举了。
 
    2. 在服务器上安装操作系统
 
    3. 在服务器上安装配置基础环境(数据库、Web服务器、搜索引擎等)
 
    4. 在服务器上安装配置应用软件(用Java、PHP开发的电商软件)
 
    5. 把硬件设备送进机房托管,开通公网访问
 
    6. 监控运维中的业务,并做日常备份、扩容/缩容、迁移、升级
 
    如果是使用公有云,则没有第1,2,5步,直接购买公有云的虚拟机、容器、平台服务(文件存储、关系数据库、内容分发等)
 
    应用环境和应用软件部署是指第3步和第4步。
 
    1 操作系统自动化部署
 
    第2步是物理祼机的部署,现在市面上的主流服务器,都支持IPMI管理,通电接上管理端口就可以完成BIOS设置,再辅以DHCP, TFTP, KickStart可以实现无人值守的自动化安装操作系统。
 
    目前虚拟化、私有云、公有云已经相当普及,除了一些对特殊硬件有要求的场合,和一些历史遗留场合,其它大部分场合都可以用虚拟机,物理机上安装的是宿主操作系统,应用软件装在虚拟机里,这样物理祼机就只需要安装宿主操作系统,需求相对简单,没有应用部署那么复杂。装完之后不会经常去改动,运行稳定。
 
    2 应用部署
 
    与操作系统部署相比,应用部署复杂性高得多,主要表现在:
 
    · 场景繁多
 
    一个小型的B2C网站,有负载均衡器、Web服务器、应用服务器、缓存服务器、搜索引擎、分布式文件系统、监制中心、日志中心、VPN服务器等十多种服务器角色
 
    · 依赖复杂
 
    软件包之间有依赖,服务器之间有通信依赖
 
    · 配置各异
 
    除标准的ini,xml, yaml, json, properties文件外,iptables, sysctl, nginx, haproxy, pptpd等都有自己独特的配置文件格式,多达上百种。文档描述和运维脚本编写都有相当大的难度。
 
    3 应用部署技术发展历程
 
    下面以在CentOS上安装nginx为例,回顾一下应用部署技术的发展历程:
 
    3.1 手工安装配置
 
    这是最古老的部署方式,直到今天也被广大小规模团队广泛采用。部署过程往往会产生这样一份文档供日后参考:
 
一名运维者的思考:云计算时代的自动化运维走向
 
    3.1.1 优点
 
    3.1.1.1 灵活性高
 
    可以安装任何想要的版本,启用任何想要的模块(包括自行开发的私有模块)
 
    3.1.1.2 学习门槛低
 
    文档是自然语言写成,阅读和书写都很简单,不需要额外学习其它技术语言。安装配置用到的工具、命令也较少,主要是网络下载、解压缩、编译、文本编辑几种,容易掌握。
 
    3.1.2 缺点
 
    作为最古老的部署技术,缺点也是显而易见的:
 
    3.1.2.1 文档不精确
 
    由于文档是自然语言写的,是写给运维工程师阅读的,而不是给机器执行的。文档写的是什么,跟机器上实际执行的是什么,并不是100%一致的,需要人肉转换。在长期版本变更、人员更替中极容易出现疏漏。当然,可以从行政管理上解决这类隐患。很多大公司都喜欢搞流程,用测试审核流程来督促人少犯错。然而,只要是这个文档是给人看而不是给机器执行的,这个文档就会一直面临笔误、表达不精确、更新不及时等隐患,要用流程来彻底杜绝这些隐患,成本很高。
 
    3.1.2.2 效率低
 
    上述5个步骤都是串行的,必须做完一步才能进行下一步。第1步和第3步是比较耗时的,若网速不快,或者编译时间太长,运维工程师会浪费时间等待。
 
    另一方面,若有多台机器需要执行同样的部署操作,也无法减少重复性操作。
 
    3.2 自动化部署:shell脚本
 
    若服务器稍有规模的团队里,上述手工部署就成了一个大问题。
 
    人肉阅读的文档急需转换成机器执行的代码。最早也最广泛运用的自动化部署技术便是shell脚本。以bash为例,上述5步写成bash shell就像这样(示例代码,未经测试):
 
一名运维者的思考:云计算时代的自动化运维走向
 
    直接运行这个脚本,就可以自动安装配置好nginx了。
 
    相比手工部署,使用shell脚本的缺点只有两点:一是写代码需要一定学习门槛。二是维护的技术难度会略高。
 

责任编辑:李欢
本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。
e-works
官方微信
掌上
信息化
编辑推荐
新闻推荐
博客推荐
视频推荐