智慧运维深度报告(主动式运维思考)
智慧运维深度报告(主动式运维思考)c)业务运维工作细则:b)工作职责如下:设计评审、服务管理、资源管理、例行检查、预案管理、数据备份;运维包括应用运维、系统运维、运维研发、数据库运维、安全运维几大类。1.应用运维(SRE):a)应用运维负责线上服务的变更、服务状态监控、服务容灾和数据备份等工作,对服务进行例行排查、故障应急处理等工作;
运维是指大型组织已经建立好的网络软硬件的维护,保证业务的上线与运做的正常,在它运转的过程中,对它进行维护。主动式运维是当下比较流行的一种理念,我认为就是在故障发生之前,提前处理好一切可能将要发生故障的因素。解决的是项目正常运作的问题,主动预警获取问题信息。如果没有主动运维,总是等待问题出现后再解决,这样被动的方式会对项目的正常运转会受到比较大的影响。
运维工作可深可浅,全在自己选择,有很多人不愿意做运维,因为他们觉得运维的入门门槛太低,但是他们却没有看到运维的深度和高度,思维决定高度。下面我就整理提高运维能力所需要的能力和理解,改变一些初学者错误的理解。
基本能力运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务上的上线与运作的正常。在运转的过程中,对它进行维护,集合了网络、系统、数据库、开发、安全、监控于一身的技术。
1.基础分类
运维包括应用运维、系统运维、运维研发、数据库运维、安全运维几大类。
1.应用运维(SRE):
a)应用运维负责线上服务的变更、服务状态监控、服务容灾和数据备份等工作,对服务进行例行排查、故障应急处理等工作;
b)工作职责如下:设计评审、服务管理、资源管理、例行检查、预案管理、数据备份;
c)业务运维工作细则:
i.监控线上的服务质量;
ii.响应异常/处理突发故障;
iii.在线发布/升级产品;
iv.和相应产品线的研发和测试协调处理产品问题。
2.系统运维(SYS):
a)负责IDC、网络、CDN和基础服务的建设(LVS、NTP、DNS);
b)负责资产管理,服务器选型、交付和维修,网络建设、LVS负载均衡和SNAT建设。
3.运维开发:
a)是给应用运维开发运维工具和运维平台的;
b)主要包含的平台:工单系统、CMDB、监控系统、ELK日志系统、CI/CD、LDAP、FAQ、培训系统、OpenStack平台。
4.数据库运维(DBA):
a)数据库运维负责数据存储方案设计、数据库表设计、索引设计和SQL优化;
b)对数据库进行变更、监控、备份、高可用设计等工作,详细的工作内容如下;
c)设计评审、容量规划、数据备份与灾备、数据库监控、数据库安全、数据库高可用和性能优化;
d)自动化系统建设、运维研发、运维平台、监控系统、自动化部署系统。
5.运维安全(SEC):
a)运维安全负责网络、系统和业务等方面的安全加固工作;
b)进行常规的安全扫描、渗透测试,进行安全工具和系统研发以及安全事件应急处理;
c)工作内容如下:安全制度建立、安全培训、风险评估、安全建设、安全合规、应急响应。
2.发展过程
运维的发展:
1.手工管理阶段;
2.工具批量操作阶段;
3.平台管理阶段;
4.系统自调度阶段。
3.常见工作
1.服务监控技术:包括监控平台的研发、应用,服务监控准确性、实时性、全面性的保障;
2.服务故障管理:包括服务的故障预案设计,预案的自动化执行,故障的总结并反馈到产品/系统的设计层面进行优化以提高产品的稳定性;
3.服务容量管理:测量服务的容量,规划服务的机房建设,扩容、迁移等工作;
4.服务性能优化:从各个方向,包括网络优化、操作系统优化、应用优化、客户端优化等,提高服务的性能和响应速度,改善用户体验;
5.服务全局流量调度:接入服务的流量,根据容量和服务状态在各个机房间分配流量;
6.服务安全保障:包括服务的访问安全、防攻击、权限控制等;
7.服务自动发布部署:部署平台/工具的研发,及平台/工具的使用,做到安全、高效的发布服务;
8.服务集群管理:包括服务的服务器管理、大规模集群管理等;
9.服务成本优化:尽可能降低服务运行使用的资源,降低服务运行成本;
10.数据库管理(DBA):通过设计、开发和管理高性能数据库集群,使数据库服务更稳定、更高效、更易于管理;
11.平台化的开发:k8s、docker等平台的开发管理,及服务接入技术。
运维思维一个优秀的运维工程师应该有大量的闲暇来思考和优化现有的技术架构,学习先进的技术与理念,更透彻地理解业务需求,让技术架构能够更好的服务于当前和未来的业务发展,而不是频繁被眼前的琐事打断,视野局限在一个非常狭窄的范围。
1.总体方向
复杂的事情简单化,简单的事情重复化,重复的事情自动化,完成了这些就基本能够满足要求。
1.复杂的事情简单化:主旨就是对于一些难以一蹴而就的事情进行分步处理。将事情拆解成小的、简单的步骤后往往就变得可行;
2.简单的事情重复化:如何将一个简单的事情变得可重复呢,方法就是将简单的操作标准化,以便于反复调用或反复执行。标准的意义在于统一规范后对接成本变低,为更大规模更大范围的协作带来了可能,同时尽量避免了个体的不确定性给系统带来的潜在隐患;
3.重复的事情自动化:主旨就是尽量交给机器来完成,人不仅速度慢,还容易出错,也容易情绪化但是机器是可以不睡觉的,可以持续工作并且不会有怨言,绝大部分逻辑处理,人的速度是根本没法和机器匹敌的,只要我们可以将它序列化、代码化,就可以实现自动化。
2.工具使用
人类社会发展到今天是用工具来划分时代的:石器时代、青铜时代、铁器时代、蒸汽时代、电气时代、信息时代,可见工具的重要性,作为生产力的基础之一,工具可以极大改变整体的生产效率和资源分配格局。充分使用现有工具是运维人员必备的基本素质,工具可以极大拓展和提升个体的能力边界,编写脚本就是一个创造工具的过程。
3.文档编写
不管是开发还是运维都应该具有文档编写的能力,作为运维人员必须要会写系统运维手册、常见问题手册,这个习惯必须养成,方便自己快速运维,以及后续交付他人后,其他运维人员可以快速接手运维工作。
运维机制运维原则、整体运维、贯穿流程、这几种要素可构成一套运维机制。要素如下:
1.运维原则
1.事前:讲计划、重承诺;
2.事中:讲规范、重控制、有反馈;
3.事后:重效率、能应急、有保障。
2.整体运维
1.软件支撑系统;
2.应用系统;
3.计算机硬件设备;
4.机房和环境。
3.贯穿流程
1.事件流程;
2.问题流程;
3.配置管理流程;
4.变更流程;
5.发布流程。
创造价值任何工作都有它的价值,运维也是如此,可以通过运维与客户沟通,了解目前的需求和后续合作的发展,如果因为运维促成了项目的合作,这就是创造了价值。
1.经验价值
运维最宝贵的就是处理问题的经验,但是大部分运维人员只是让它躺在自己的文档中,我们需要将它灵活地运用在生产中,比如报警预警预案、断电服务自启、出现故障匹配历史问题,给予对应参考。
2.二次销售
下意识对客户进行二次销售。在运维过程中,向客户渗透公司其他产品,推动后续合作。如果只是解决客户反馈的问题,只能说明你是一个合格的运维人员,想要进一步提升自己,学会二次销售是必不可少的技能。通过二次销售,推动客户与公司的合作,进而提高自己在公司的能力和地位。
3.掌握语言
作为一个运维人员,虽然不必像开发一样得精通一门或好几门语言,但是基本的编码能力还是要有的。如果懂得一些基础的编程技巧,就可以为自己的日常工作带来便利,一些重复性的工作也可以交由代码来完成,使自己的工作不必那么枯燥,同时也少了很多潜在的风险,因为相对于机器,人的速度太慢了,人并不擅长处理重复性的工作,人也更容易出错。
工作思考前面提到的都是一些显而易见的道理,但是从显而易见或司空见惯的事物中挖掘出营养却是一个非常值得努力的方向。因为这些司空见惯的事物太多了,但我们未必真懂得其中的内涵或蕴藏的智慧,哪怕只深挖一层,将会发现遍地都是宝藏。
1.后续工作
后续运维工作还有很多需要完善,典型的就是一键部署的脚本(k8s一键部署、drbd高可用一键部署、外围产品一键部署)。安全检测脚本(服务自动预警、系统参数查询、服务运行状态检测)。而且运维文档需要不断地完善,整理各个项目的运维资料,统一管理。
2.阶段总结
作为运维,不仅要学习各种层出不穷的新技术,还要不断提炼和总结,才能适应这个日新月异的环境。这条路很长,没有尽头,我依旧在途中,我很乐意将自己看到的风景拿出来与大家分享。
3.职业发展
从行业的发展角度来讲,随着互联网的快速发展,尤其是移动互联网的渗透,各行各业对信息化的需求越来越成为一种刚需,企业的系统规模也越来越大,架构也越来越复杂,对运维工程师的需求越来越大,尤其是那些经验丰富,既熟悉架构又了解业务的从业人员。
纯运维工程师是基础的运维岗位,不负责写代码,只负责基础的系统维护,包括应用环境搭建,基础的业务运营过程中的故障排查。这个职位大部分是面向经验尚浅的工作者。一个好的运维工程师,肯定应当具备较强的开发能力,希望大家在发展过程中,具备了基础的Linux知识之后,一定要学习一些开发技能,比如必备的shell编程能力,另外还要掌握一门高级语言,比如热门的python语言,是一个不错的选择。
本文由@数通畅联原创,欢迎转发,仅供学习交流使用,引用请注明出处!谢谢~