运维前线:一线运维专家的运维方法、技巧与实践1.6 运维自动化系统的实现

1.6 运维自动化系统的实现


挑战自动化的极致场景(可视化),是运维人员对极致的追求。极致的自动化是运维事务全流程的自动化,运维事务全流程自动化是包含了一次应用完整交付所涉及的所有资源的自动化能力,比如说DNS资源、负载均衡资源、数据库资源、服务器资源、配置资源等。下面将列举几个典型的运维自动化系统以供大家参考。

1.6.1 DNS管理系统

DNS是Web形态下的一个重要入口,用户服务的访问严格依赖于这个服务入口。现在一般被称为GSLB(全局服务负载均衡调度),目前是CDN服务中的重要服务节点。实现的目标都是要解决运维从哪里来,到哪里去最快,当目标机房发生故障的时候,如何把服务调度走。

在移动APP大量应用的今天,DNS协议的缺点已经逐渐暴露出来了,DNS解析时间长,另外还经常会被劫持。因为有端的控制,现在逐渐开始走HTTPDNS的服务,通过HTTP服务的方式获取域名对应的IP地址,此时由DNS平台直接对外提供HTTP服务。在有端App的情况下,还可以借助端的数据挖掘技术,识别非权威DNS域名是否存在被劫持的情况。系统需要保持和业务的与时俱进。

这里还需要注意一个问题,内部DNS能否统一管理?理论上是可以的,把单个机房当作单个的view,不过我不建议将两个场景耦合在一起,尽管这样能够实现统一管理。

系统Demo如图1-7所示。

 

图1-7 DNS管理系统

1.6.2 CMDB管理系统

CMDB管理系统的建设这里就不展开介绍了,感兴趣的读者可以关注微信公众号“互联网运维杂谈”,并参阅《运维平台之CMDB系统建设》一文。

系统Demo如图1-8所示。

1.6.3 名字服务中心系统

“名字服务中心系统”的概念最初来自于Zookeeper,该系统结合实际情况,实现了名字服务中心。把程序接口之间的调用抽象成单个服务之间的调用,在服务中心实现调度的统一注册、鉴权、ACL、容灾容错控制。将其看作线上服务最核心的系统,一点也不为过,并且它还是收益最大的系统,可直接替换掉DNS、LVS,降低线上系统对运维系统的依赖性。

系统Demo如图1-9所示。

 

图1-8 CMDB管理系统

 

图1-9 名字服务中心系统

1.6.4 持续部署管理系统

持续部署是应用升级的核心系统,该系统每个月都承担着大量的变更。在系统规划之初,我们就给它设定了清晰的业务管理目标:持续交付的一部分,实现图1-10中的4个维度管理目标;也设定了具体业务的运维目标:升级所有的包和配置,且让业务运维彻底退出业务的变更流程。具体如图1-10所示。

系统Demo如图1-11所示。

持续部署系统是持续交付系统的核心(持续集成、持续测试、持续部署、持续反馈),它是产品发布到达生产环境的关键步骤。在这个平台的建设上,运维人员应该将它作为突破的第一个点。在该平台搭建完成之后,运维就可以从日常的部署事务中解放出来了。

 

图1-10 持续部署管理系统示意图

 

图1-11 发布系统

1.6.5 运维调度管理系统

运维调度平台又称为调度编排系统,编排是一种场景化的运维能力封装,是对复杂运维事务的封装。我们在平时的运维过程中能够看到很多复杂的运维场景,比如说容灾切换、故障处理、服务迁移等。这些场景,很多时候都不是单一的动作就能够完成的,往往需要借助多种运维能力组合,如图1-12所示。

在图1-12中,我们把Ops自动化调度下面的服务支撑层分解为三部分:工具平台OpsStore,用来编写日常的运维工具;外部服务,用于公共API对外提供封装;Ops发布,用于提供代码持续部署服务。

一个完整的自动化调度平台应具备能够对接一切服务的能力,例如通过配置管理来初始化内核、通过OpenStack来初始化资源、通过DNS来获取全局调度服务、通过存储来获取存储的服务,甚至还可以通过公有云API来获取外部公有云的资源服务能力,如图1-13所示。

 

图1-13 自动化调度平台示意图

还有数据库运维管理平台、分布式Cache管理系统等也都有相应的实现,由于篇幅所限,这里就不贴图介绍了。

时间: 2025-01-21 11:40:18

运维前线:一线运维专家的运维方法、技巧与实践1.6 运维自动化系统的实现的相关文章

《Oracle性能优化与诊断案例精选》——1.6 理想实践,开发运维一体化

1.6 理想实践,开发运维一体化 在数据行业那么久,我们总希望能够通过自己的努力,将好的想法落地,渐渐地改变行业中的不合理之处,让这个技术世界变得美丽一点点. 那么这个行业里有什么迫切需要改变的? 作为资深的DBA你可能会发现,我们10年前处理的问题和今天没有什么不同.针对数据库的运维巡检日复一日,SQL优化应对全表扫描或是隐式转换,转眼就耗费了经年的时光.所以我们有一个理想,不要让DBA重复在这些无休止的工作上,或者至少能够做得更有价值,也力争能够改变用户在使用数据库的过程中,屡见不鲜的事后救

vfp报表中如何动态显示打印二维码,每条记录的值有可能重复,比如姓名用二维码显示打印。

问题描述 vfp报表中如何动态显示打印二维码,每条记录的值有可能重复,比如姓名用二维码显示打印. vfp报表中如何动态显示打印二维码,每条记录的值有可能重复,比如姓名用二维码显示打印.求关注求转发求收藏qq:1280737814https://shop67511955.taobao.com/ 解决方案 http://bbs.bccn.net/thread-436671-1-1.html 解决方案二: 二维码打印JS

Groovy探索之MOP 八 运行期内给类和对象添加属性或方法

我们都知道,在Groovy语言中,我们可以使用MOP特性在运行期内添加属性或方法. 这种添加包括两个层面的添加: 第一, 是给一个类添加属性或方法.也就是说,如果我们在运行期内给一个类添加了属性或方法,那么添加了以后,所有这个类实例化的对象,都将拥有了这个属性或方法. 第二, 第二,是给一个对象添加属性或方法.也就是说,如果我们在运行期内给一个对象添加了属性或方法,那么添加了以后,只有这个对象才拥有这个属性或方法.换句话说,如果我们再给这个对象的类实例化一个对象,那么该对象则不能拥有我们刚添加的

编写一个方法,返回一个double型二维数组

问题描述 编写一个方法,返回一个double型二维数组,数组中的元素能过解析字符串参数获得.如字符参数:"1,2;3,4,5;6,7,8"写出对应的数组我编了,可是调不出来帮帮我!!!publicclassArr{publicstaticvoidmain(String[]args){Strings="1,2;3,4,5;6,7,8";double[][]ss=d(s);for(inti=0;i<ss.length;i++){for(intj=0;j<ss

通过查询Timer类的方法,解决以下问题当程序运行时,

问题描述 通过查询Timer类的方法,解决以下问题当程序运行时, 通过查询Timer类的方法,解决以下问题: 当程序运行时,如果是每月的最后一天的下午5点,就自动调用某个任务 解决方案 在Timer_Tick里面写 if (DateTime.Now.AddDays(1).Month == DateTime.Now.Month + 1 && DateTime.Now.Hour == 17) { ... Timer1.Stop(); } 解决方案二: 设置schedule task,不需要自己

运维前线:一线运维专家的运维方法、技巧与实践2.5 使用Django快速构建CMDB系统

2.5 使用Django快速构建CMDB系统 2.5.1 Django介绍 Django是一个免费的.开源的Web框架,由Python语言编写,由于其是在一个快节奏的新闻编译室环境中开发出来的,因此它的设计目的是让普通开发者的工作变得简单.Django遵循模型-视图-控制器(MVC)框架模式,目前由一个非盈利的独立组织的软件基金会(DSF)维持. Django鼓励快速开发和干净实用的设计.Django可以更容易更快速地构建更好的Web应用程序.它是由经验丰富的开发人员来创建的,省去了Web开发的

运维前线:一线运维专家的运维方法、技巧与实践3.3 利用批处理与Shell脚本简化逻辑节点的搬迁

3.3 利用批处理与Shell脚本简化逻辑节点的搬迁 3.3.1 逻辑节点切换脚本的思路 众所周知,对于服务器的搬迁,不只会涉及物理层面的设备搬迁.在物理设备搬迁到新机房后,往往还需要对虚拟机中的多种参数进行相关调整. 如果管理的服务器台数比较少的话,则可以采用手工设置的方式逐一更改参数.但是,如果手中管理的Windows和Linux虚拟机有数千台的话,那么这些繁琐的参数调整一定会让你头疼不已.其中需要调整的参数如下: IP GATEWAY DNS WSUS NTP HOSTS 也许大家要问,像

望、闻、问、切”四大技巧轻松搞定IT运维管理

中华医学博大精深,精髓莫过于"望.闻.问.切",这四大法宝成为调查了解疾病过程中重要的手段,可谓各司其职,各尽其能,相辅相成,缺一不可.中医大夫在应诊时,只有将 它们有机地结合起来,即"四诊合参"才可能全面而系统地了解病情,从而做出正确判断,果断采取措施.是否有是曾相识的感觉?事实上 IT运维管理跟中医诊疗法有异曲同工之处,一套完整的.基于事前管理的网络运维管理系统针对日常运维工作的特点,能做到及时发现网络中潜在的故障隐患,并能够进行及时处理,以保证整个系统的正常运

跟老男孩学Linux运维:Shell编程实战3.4 变量定义技巧总结

3.4 变量定义技巧总结 可以多学习和模仿操作系统自带的/etc/init.d/functions函数库脚本的定义思路,多学习Linux系统脚本中的定义,有经验的读者最终应形成一套适合自己的规范和习惯. (1)变量名及变量内容定义小结 变量名只能为字母.数字或下划线,只能以字母或下划线开头. 变量名的定义要有一定的规范,并且要见名知意. 示例: OldboyAge=1 #<==每个单词的首字母大写的写法 oldboy_age=1 #<==单词之间用"_"的写法 oldboy