天津理工大学软件工程大作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
天津理工大学
计算机与通信工程学院
大作业报告
(含实验报告)
2016至2017学年第一学期
课程名称《软件工程》实验地点作业
课程代码0668046专业计算机科学与技术
题目名称自动化部署管理系统
角色学号学生姓名年级班号
A20146049卢洪利20141
实验时间2016年9月1日至2016年12月22日共64学时
主讲教师宁红云
辅导教师宁红云
目录
1.开题报告 (3)
2.自动化部署管理系统的需求分析报告 (8)
实验报告一需求分析与用例建模 (15)
3.自动化部署管理系统的软件设计报告一 (22)
实验报告二系统分析与对象类建模 (22)
4.自动化部署管理系统的软件设计报告二 (26)
实验报告三系统设计与对象动态交互模型 (26)
5.自动化部署管理系统的软件设计报告三 (30)
实验报告四系统动态建模、集成和实现 (30)
6.自动化部署管理系统的测试方案 (36)
7.系统帮助与使用说明手册 (38)
8.大作业小结 (39)
天津理工大学本科毕业设计开题报告
届:2014届学院:计算机与通信工程学院专业:计算机科学与技术2016年10月9日毕业设计题目基于C/S架构的服务器自动化部署管理系统的设计与实现
学生姓名卢洪利学号20146049
指导教师宁红云职称教授
一、背景及意义
随着各种业务对互联网的依赖性逐渐加重以及云计算技术的普及,企业平均的IT 基础架构规模不断扩张,这种扩张在公有云提供企业中显得更加疯狂,比如阿里云和腾讯云。对于其他互联网企业,如果完全采用私有云,也会有可能在几星期内增加几千台服务器;也有像新浪微博这样,采用混合云架构实现弹性扩展。这些对运维而言,都是前所未有的挑战,传统的人工方法不仅麻烦、效率低下,而且非常不利于维护和扩展,而且从现实来看,传统的方法也是不切实际的。
即使是在一些传统的企业当中,日常的备份、服务器状态监控和日志处理等,通过手动的方式来进行的效率也非常低,会造成人力的极大极大浪费。因此,自动化运维早已是每个运维人员都必须掌握的看家本领。
运维自动化的价值在于,减少重复枯燥的工作,减少人为错误、及时报警与故障恢复、提高业务可用性。归纳起来就是:把零碎的工作集中化,把复杂的工作简单有序化,把流程规范化,最大化解放生产力,也就是解放运维人员。
二、发展现状
对于大多企业,都是选择开源的各种工具加以整合和二次开发。Linux下好用的开源工具有:
1.预备类工具
Kickstart
Kickstart是RedHat开创的按照配置全自动化系统安装的方式,分为光盘、硬盘和网络安装。
Cobbler
Cobbler是一个小巧的网络安装Linux的服务,经过调整后也支持Windows。该工具也支持管理DHCP、DNS以及yum源。
Spacewalk
Spacewalk可管理Fedora、RedHat、CentOS、SUSE与Debian服务器,管理补
丁、登陆和更新。
2.配置管理类工具
Puppet
Puppet是一个开源的软件自动化配置和部署工具,使用简单功能强大,得到了越来越多的关注,现在很多大型IT公司都是在使用Puppet对集群中的软件进行管理和部署。
Ansible
Ansible是新出现的运维工具,基于Python研发,融合了众多老牌运维工具的优点,实现了批量操作系统配置、批量程序部署、批量运行命令等功能。
3.监控类工具
Zabbix
Zabbix基于WEB界面,提供分布式系统监视以及网络监视功能,是企业级的开源解决方案。Zabbix后台基于C,前台由PHP编写,可以与多种数据库配合使用,拥有完善的报警机制。
Canglia
Canglia是一个针对高性能分布式系统(如集群、网络、网格、云计算等)所设计的可扩展监控系统。允许用户远程监控系统的实时或历史状态,包括CPU负载均衡、网络利用率等。
三、本课题的研究内容
本题采用C/S架构,开发具有统一界面的自动化运维工具,实现:安装自动化、部署自动化、监控自动化、发布自动化、升级自动化、安全管控自动化、优化自动化、数据备份自动化。主要分为以下几个模块:
1.运维流程管理模块
发布变更流程管理:做为系统接口与其他角色的工作衔接。并提供审批环节控制发布变更的风险。流程管理工具并不负责具体的业务操作的执行,只是作为单据系统跟踪流程和确保闭环。
告警和突发管理:体现业务受损的告警自动建单管理。人工确认之后升级为突发单。通过建单管理告警和突发确保流程的闭环,以及每次故障都能够总结出经验,并未度量业务的可用性提供KPI。
2.运维发布变更模块
版本管理工具(数据库):所有的发布应该以版本管理为起点。研发给的版本包先入版本管理工具,再从版本管理工具分发到现网发布。杜绝rsync一台服务器发布另外一台的做法。
配置管理工具(数据库):版本加配置等于现网每台机器的状态。最粗粒度的配置
管理是到IP级别,相当于对机器做资产管理,分组到不同的业务,模块和大区等业务概念上。细粒度一点会管理到进程以及进程的相关的配置。
配置和版本下发工具:把指定的版本,结合配置好的配置下发到现网的机器上。不同的版本和配置方式需要完全不同的下发方式。以ssh/fabric为代表的下发方式是以脚本为中心的。以puppet/chef为代表的下发方式是以配置为中心的。
现网状态同步工具:为了规避现网状态漂移,与管理工具内的记录不一致。需要有一个工具定时上报现网的实际状况
服务调度工具:发布变更经常需要一个串行的流程,先做A模块,再做B模块。很多机器的时候,需要把能并发的操作并发执行,不能并发的操作确保串行执行。同时很多发布变更流程需要操作管理范围外的服务,比如云端的DNS服务器记录等。这就需要有一个服务调度工具统一调度配置和版本下发工具,流程单据工具,以及其他系统的API接口共同组装成一个流程。
资源管理和隔离工具:以xen/kvm为代表的工具让运维可以更灵活的切割资源。比如虚拟机的快速起停,ip在idc内的漂移等。以lxc/docker为代表的工具让运维可以进一步的切割资源到进程级别。资源隔离代理的细粒度的资源控制可以获得更好的资源利用率,以及更容易进行可伸缩的资源配置。
发布变更统一WEB界面:包装所有的下层工具,提供简单的界面完成标准化的发布变更操作。
3.运维监控告警模块
采集:一般是采集日志文件,也可以是定时轮询DB或者其他系统的接口。流行的开源方案是logstash。
收集:采集工具上报给收集工具。或者由开发直接修改代码上报指标给收集工具。流程的开源方案还是logstash。
统计入库:上报可能是每次调用就上报一次,统计工具负责统计出一分钟内的次数。上报也可能是每5秒上报一次数值,统计工具负责统计出一分钟内的最大值。统计工具的存在是为了上报的方便。流行的开源方案是statsd,也有大公司基于storm来做二次开发的。
时间序列数据库:所有定时指标会落地到数据库里。监控告警所需要的数据库需要能够支撑非常大的数据量,但是并没有很严格的ACID要求。
运维事件数据库:记录所有的告警。包括从其他系统获得告警,以及对现网的所有变更操作记录。这些数据用于支撑告警的原因定位。
指标异常检测:基于数学模型发现指标是否与过去的稳定模式背离,而推测出现网状态的变化。
拨测:定时PING或者HTTP GET,模拟实际用户发现服务是否中断,产生告警。同时也产生指标上报给收集系统。拨测又分为本地拨测,和远程拨测。本地拨测可