基于python的自动化运维系统设计与实现.doc
《基于python的自动化运维系统设计与实现.doc》由会员分享,可在线阅读,更多相关《基于python的自动化运维系统设计与实现.doc(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、摘要自动化运维系统能够为运维人员提供对大规模服务器群集进行可视化运维操作的平台,通过自动化运维系统运维人员可以更直观清晰的了解和记录主机信息,并进行管理。本文设计并实现了一个自动化运维系统。系统设计开发使用VIM开发工具,Python开发语言,MySQL数据库,使用了集中化运维管理工具SaltStack,基于web.py的架构完成,该系统设计实现的功能包括:账户管理,主机管理,已加入SaltStack的主机信息采集,Master监控,本系统同时提供对于远程主机的命令管理。关键词: Python; SaltStack; 自动化运维Abstract The automated operation
2、and maintenance system can provide a platform for the operation and maintenance personnel to visualize the operation and maintenance of large-scale server clusters. Through the automatic operation and maintenance system, the operation and maintenance personnel can understand and record the host info
3、rmation more intuitively and clearly, and manage it.This paper designs and implements an automated operation and maintenance system. The system design and development uses VIM development tools, Python development language, MySQL database, and uses the centralized operation and maintenance managemen
4、t tool SaltStack, which is completed based on the web.py architecture. The functions designed and implemented by the system include: account management, host management, and has joined SaltStack The host information collection, Master monitoring, the system also provides command management for the r
5、emote host.Key words: Python; Saltstack; Automated operations目 录第一章 绪论11.1 研究意义与目的11.2 研究背景和现状11.3系统内容综述与论文结构21.3.1本文主要内容21.3.2本文主要结构2第二章 系统分析与设计42.1 需求分析42.2系统总体设计42.2.1开发结构设计42.2.2系统架构设计42.2.3总体功能架构52.3 SaltStack综述62.3.1简介62.3.2 SaltStack基本原理62.3.3 SaltStack的部署架构72.3.4为何选择 SaltStack92.4开发技术综述92.4.
6、1 Python编程语言92.4.2 web.py框架102.4.3 Mako模板102.4.4 psutil库102.4.5 Dmidecode工具102.4.6 MySQL数据库102.5系统所需环境及数据库设计102.5.1 系统运行时所需环境112.5.2环境配置112.5.3数据库表分析112.5.4概念模型设计122.5.5数据库表结构设计12第三章 自动化运维系统的详细设计与实现153.1用户模块的设计与实现153.1.1登陆注册流程153.1.2用户模块的介绍与实现163.2模块的设计与实现173.2.1主页功能流程173.2.2主页模块的介绍与实现183.3主机登记模块的设计
7、与实现183.3.1主机登记功能流程183.3.2主机登记模块的设计与实现193.4 SaltStack模块的设计与实现193.4.1 SaltStack模块功能流程193.4.2 SaltStack模块的设计与实现21第四章 系统测试224.1 运行环境224.2 测试过程22第五章 总结与展望285.1 总结285.2 未来展望28参 考 文 献29附 录30致 谢33广东东软学院本科生毕业设计(论文)第一章 绪论1.1 研究意义与目的随着互联网时代的飞速发展,特别是在发展中飞速融入了人们的生活中。在这其中产生的信息也是越来越大,越来越多,云计算与大数据也就这么随着发展,而在发展中跟上来的
8、挑战就是所需要管理的主机集群也愈发庞大,而作为在这后面提供支持的运维人员所需面临的就是如此多的主机,而这有许多工作都是繁琐,重复的,而所需要处理的如此多且重复,那么就很容易出现错误。该自动化运维系统基于WEB开发,用户可以通过在该系统中看到主节点的资源信息,以及将所有的机器进行一个登记,以及对各个主机的信息可以进行查看,并且在WEB中通过SaltStack管理工具可以通过批量的命令发送来进行对旗下主机的一些重复性操作进行批量处理。因此该选题还是有必要的,因为这样就可以通过一个可视化的WEB界面来直观的让使用人员了解所有的主机情况,并且让一些重复繁琐的操作一次就能实现,减少出错的概率,因此这对于
9、运维人员来说是具有实用性的【1】。通过使用WEB来开发该自动化运维平台,该课题主要是有以下的几点目的:1、在大学的时候所学的一些相关专业课程的基础上,将所学的知识与实践结合使用,来进一步巩固相关专业的知识以及实操的能力,从而达到对学习过的知识了解的更清晰,运用更熟练,这是对于已学习过的知识进行更深的挖掘;2、随着互联网时代的飞速发展,为此提供支持的主机数量也越来越庞大,完成该选题是为了给使用人员提供一个自动化运维平台,能够减低运维人员的一些重复繁琐的工作量,以及更好的对主机集群进行更好的管理;3、自动化运维领域目前较为热门,这能够帮助我们掌握Python的一部分知识,以及对于MySQL,Sal
10、tStack运维管理工具等进行学习,在之后的职业选择中有更多的选择,在进行相关的运维工作能有更好的帮助。通过该选题的设计与实现,可以有效的增强我们对于新知识的学习与使用、对相关资料的查询以及使用,以及找出问题分析并解决、综合实践使用相关知识等能力,这有利于我们的学习能力、专业技能能力以及逻辑能力的进一步加强。1.2 研究背景和现状在互联网用户及内容的规模还不如现在的过去,为这些行为提供服务的主机数量并不多,因此运维人员通过逐台的登陆主机进行维护或者进行部署服务等都是游刃有余。而随着互联网的逐渐发展,伴随着的就是信息数据量的逐渐增多以及需要上线的项目也变得越来越多,这时候就需要逐渐的扩大主机群的
11、规模,在面对逐渐扩大的主机集群时,运维人员则通过shell脚本以及Python来对这些主机进行维护等处理。而到了现在,又伴随这云计算大数据等的到来,以及人工智能等行业的火热,运维人员所需要面临的挑战就大了,因此就有了Ansible、Chef、Puppet、Fabric、SaltStack等的自动化运维工具来为人们提高效率。为了完成该自动化运维平台,通过学习、研究、分析,本自动化运维系统主要功能有用户可以通过在该系统中看到主节点的资源信息,将所有的机器进行一个登记,以及对各个主机的信息可以进行查看,并且我们可以使用SaltStack管理工具通过批量的命令发送来对旗下主机的一些重复性操作进行批量处
12、理,这有助于提高人们的工作效率,让一些重复、繁琐的工作减少出现错误。该自动化运维平台使用Python语言进行编码与实现,后台则采用web.py的框架,存储方面则使用MySQL数据库来为数据提供存储以及通过SaltStack运维工具来实现功能,通过这些相关工具和技术的结果使用来完成该系统。1.3系统内容综述与论文结构1.3.1本文主要内容本系统是一个基于Python开发的WEB项目,是一个自动化运维的WEB应用。前端使用Mako进行开发,后台使用web.py进行开发,数据库使用MySQL,并结合了SaltStack自动化运维工具。可以通过本系统来进行对主节点的资源信息展示的,以及远程命令、查询子
13、节点的信息、批量部署等等功能。1.3.2本文主要结构本论文的主要结构介绍如下:第 1 章:绪论,主要是论述自动化运维平台研究的意义与目的、课题的背景与现状以及对本论文的主要内容进行简单的概述第 2 章:系统分析与设计,主要是对该系统的功能模块来进行需求的分析,然后设计出一套符合本系统的架构模式和结构模式,介绍集中化运维工具SaltStack介绍以及开发本系统时使用到的一些技术还有系统所需要的环境以及数据库设计。第 3 章:自动化运维系统的详细设计与实现,首要是详细介绍本系统的各个功能模块 的设计思路以及核心代码的实现,主要有功能实现、关键技术和关键的业务逻辑等第 4 章:系统测试,主要写了对于
14、整个系统进行测试第 5章: 总结与展望,对于本论文进行归纳总结以及提出展望。第二章 系统分析与设计2.1 需求分析用户模块:用户登陆、注册、修改信息、退出。主页模块:展示主节点当前各类信息。显示当前时间。主机登记模块:登记所需记录的主机详细信息。修改所需记录的主机详细信息。删除所需记录的主机详细信息。SaltStack模块:显示当前加入SaltStack的子节点信息。通过SaltStack命令执行功能实现远程命令、批量部署等功能。2.2系统总体设计2.2.1开发结构设计设计、创建该WEB的模式使用了MVC模式,该模式的是指Model View Controller即模型-视图-控制器。关于该模
15、式作用如下:1. Model即模型,它表示的即是核心的对于数据的操作或者对于数据库的操作;2. Controller即控制器,它负责的根据收到的请求而调用所需要的Model来完成请求;3. View即视图,它则与用户进行交互并根据所接受到的数据来呈现到用户面前。2.2.2系统架构设计本自动化运维系统的架构由客户端和服务端组成,客户端面对的是使用该自动化运维平台并进行交互的用户,所有功能的实现则由客户端、服务端、数据库以及SaltStack之间的交互完成。如下图2-1所示,为该自动化运维系统的总体架构:图2-1 系统架构图2.2.3总体功能架构根据 2.1 的功能需求分析,如图2-2所示,此为该
16、自动化运维系统的功能模块:图2-2 系统功能模图2.3 SaltStack综述2.3.1简介SaltStack是一个在2011年建立的开源项目,这是一个功能强大,能适应与大规模的进行批量管理服务器的C/S自动化集中管理工具,该工具是基于Python语言实现,实现它的底层网络架构,进行通信的则是轻量级消息队列ZeroMQ。通过对于SaltStack的部署以及使用,我们能够对大量服务器做到任务执行以及配置管理以及基于这两大功能延伸的另外的一些功能如采集服务器数据等等。2.3.2 SaltStack基本原理SaltStack所使用的模式是C/S模式,即客户端/服务端的模式,其中客户端是指SaltSt
17、ack中的minion子节点,服务端指Saltstack中的Master主节点,主节点Master与子节点minion之间的通信是利用的轻量级消息队列ZeroMQ。当主节点和子节点的SaltStack对应组件下载安装完后,配置完对应配置和hosts启动服务后,子节点minion会连接主节点Master将自己的pub key发送过去,请求它为其签发证书,而这时的主节点Master则通过salt-key 命令可以查看并且接受子节点minion的key,为它签发证书,而等到证书签发完毕后,就代表这主节点Master和子节点minion之间已经互相信任了。这时候我们就可以通过主节点Master端发送任
18、何指令让匹配的子节点minion执行,子节点minion执行完命令后则返回结果。在这之间完成任务是通过4505以及4506两个端口实现的,其中4505端口对于的是轻量级消息队列ZeroMQ的PUB system,它的功能是用来发送消息的,而4506端口则是REP system,它的功能则是用来接受消息的。SaltStack的主节点与子节点之间的的消息是通过轻量级消息队列ZeroMQ的发布-订阅模式来进行传递的,它们之间的连接方式有tcp以及icp两种。SaltStack的命令通过salt.client.LocalClient.cmd_cli发布到主节点Master,并以此来获取一个jobid,
19、而命令执行得到的结果则是根据此jobid来获取的。主节点Master 接收到该命令后,则通过ZeroMQ在发送到子节点minion上,并通过接受到的消息得到需要执行的命令在通过minion._handle_aes处理,其会发起一个本地线程来执行命令。在处理完命令后,调用minion._return_pub方法,将执行结果返回给主节点Master。主节点Master接受到了子节点minion返回的结果后,在通过使用Master._handle_aes方法,将结果写的文件中。在最后获取到结果并最终输出到终端的则是salt.client.LocalClient.cmd_cli通过轮询获取Job执行结
20、果【2】。在SaltStack中的还包含了State、Grain、Pillar、Highstate、Modules等模块。其中,State模块是通过在服务器Master中的/srv/salt路径下编写.sls函数关于配置管理等的一些指令,在通过命令调用该函数实现对与目标服务器的配置管理等。Grain是在SaltStack中的以key value形式存储的一种静态的数据库,它存储的是由客户端minion要返回给服务端的数据,这部分数据是静态的,包含一些如操作系统类型、版本或者一些硬件属性的不经常改变的数据。Pillar是在SaltStack中的以key value形式存储的一种动态的数据库这里面
21、存储的数据是比较私密的,它存储的是客户端minion需要向服务器索要的数据,这些数据是只有指定的某个minion客户端才能看到的关于自身的Pillar数据,而别的是无法看见的。Highstate的功能与State模块功能类似,但是却是能通过top.sls来对多个服务器来进行更为仔细的管理。Modules模块则是包含的SaltStack的指令,包括命令行cmd模块指令、cp模块指令、service模块指令等等,通过这些指令来完成SaltStack的功能【3】。2.3.3 SaltStack的部署架构在SsltStack中,它包含的角色有三种,其中最重要的两个角色分别是处于中心控制系统的Maste
22、r角色,以及被管理的客户端minion,还有一个角色是syndic,它的作用类似与代理,即只负责分发任务下去给客户端minion执行。而基于这三种角色,SaltStack则有四种部署的架构【4】:第一种:Master服务器与所有客户端minion直连,minion通过消息队列直接接受来自于Master服务器分发下来的命令,并执行命令或者完成配置管理,具体结构图如图2-3所示:图2-3单Master直连第二种:Master服务器通过syndic节点来将命令发布给旗下的客户端minion,在该架构中,Master服务器通过syndic来对客户端进行管理,通过这种结构,则可以进行更加多级的扩展以此来
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 python 自动化 维系 设计 实现
限制150内