DevOps:运维体系建设
简介
运维体系的建设的目的在于方便运维工作,通过自动化、规范化、流程化的操作方法提高运维效率,打造一个安全、可靠、高效、可追踪、可回溯的运维环境,实现一个高可用、高并发、具备高容错、自我修复、故障能快速定位的生产环境的运维生态环境(DevOps Ecosystem)。本篇文章将从三个方面来讨论运维体系的建设,账号权限管理、发布流程CI/CD、系统监控预警,文中可能多有理解不透、涉及不到甚至错误之处,希望有见解的小伙伴留言交流。
基于OpenLDAP的统一账号管理
LDAP(Lightweight Directory Access Protocol)轻量级目录访问协议,是一个开放的,中立的,工业标准的应用协议,通过IP协议提供访问控制和维护分布式信息的目录信息。
OpenLDAP是轻型目录访问协议 LDAP 的自由和开源的实现,在其OpenLDAP许可证下发行,并已经被包含在众多流行的Linux发行版中。 OpenLDAP的一个常用用途是单点登录,用户可以在多个应用平台中使用同一个账户密码,通常用于公司内部网站的登录中。
在运维工作中,主要用其单点登录、用户分组、配合业务支撑系统实现权限管理和准入控制。更重要的是,目前大部分系统均支持LDAP,公司中使用的Gitlab、Jenkins、Jira、Jumpserver、Docker harbor、Zabbix、OpenVPN、甚至包括nginx均可实现和LDAP的对接。
下图基本公司业务支持的系统之间通过OpenLDAP实现的互通互联的逻辑关系。
自动化运维CI/CD
所谓DevOps,我的理解是所有的工作内容也是通过版本控制工具来管理,配置、脚本、文件放置于版本仓库,继而触发持续集成工具,发布到相应的环境中。所有的更改和操作清晰、透明,均可通过记录查询以及通过版本回滚。
自动化,就云上开辟新主机为例,可以通过一个清单,包含所需要建立机器的区域、CPU、内存、磁盘、主机名、使用的镜像等,提交至gitlab,gitlab自动触发Jenkins构建,调用云API创建主机,同时进行初始化,安装监控客户端等,将监控指标推送到监控系统,同时Jenkins将该主机的信息添加到Jumpserver中,方便管理,从而实现整个闭环。
对于CI/CD(持续集成/持续部署),Jenkins有三个环境的Job,分组呈现,不同分组的人员可看到不同的Job,从而实现权限的控制,对于开发环境的Job来自于Gitlab仓库中dev分支的代码,测试环境的代码来自于master分支,线上环境的Job来自于master上分支上打过tag的代码,开发测试人员无法看到线上环境的Job,当需要升级时,开发人员将tag交给运维,运维升级完成验证同时通知开发。
灰度发布,灰度发布有赖于系统架构,原则上需要系统架构支持高可用、负载均衡、方便横向扩展;比如,公司采用阿里巴巴公司开源的一个高性能优秀的服务框架Dubbo(使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。
Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。)可将各功能拆解为单个模块,模块可多节点部署,模块启动自动注册到同一管理平台zookeeper,成为生产者或消费者,RPC调用实时查询zookeeper。如此便可逐台发布,实现发布过程的业务不中断;对于前端页面,发布至web服务器上,web服务器处在lb后端,可作多节点,实现高可用和负载均衡,从而保证业务的稳定性。Jira工单系统,除Bug跟踪和需求管理之外,Jira系统可以作为公司知识库,各部门人员均可使用;就比如运维人员,将平常自己解决的技术问题记录到该平台上,下次再遇到,就可以查询自己的处理记录,既方便又锻炼文档的书写能力;也可以将自己的经验分享给其他小伙伴查看,互相学习,共同进步;另外,Jira又有创建子任务的功能,将一个大问题拆解成若干小问题,逐个攻破。
该自动化CI/CD体系可根据不同的公司规模作出调整,去掉有些功能或模块,但对于大公司,整个体系建立的越完整,工作就会越高效,越方便。
系统监控预警
Zabbix监控,将所有主机加入监控,时刻掌握他们的状态,一旦有指标不正常,触发器触发告警,可通过微信、钉钉、邮件方式收到告警,详细有效的监控报警是保证系统正常运行不可少的工具,防患于未然,快速定位故障。
ELK日志收集,日志的收集和监控也是很有必要的,当集群环境壮大之后,某一个模块可能会部署多个节点,再登录到机器上查看某一模块的日志就变得很困难,此时,可以将日志收集至ELK等平台上,按模块分类。另外,有些故障只能从日志中定位,比如Java程序,程序仍在运行,但服务已不可用,这个时候,监控日志中的错误信息,实时报警,就能及时定位故障,加快问题处理的速度。
总结
运维体系这个课题比较庞大,包罗万象,不追求完美,以我现在的认知,将其拆解为三个模块,模块之间多有交叉,每个模块又有很多的点组成,希望能够对需要的伙伴有用,对运维工作的整体有所认知。当然运维体系绝不仅仅如此,比如说,备份、安全等,就备份来说,数据库、配置文件的备份可在灾难爆发时,让你不至于走头无路,另外,使用gitlab实时备份一些应用的配置也是一种很有效的方式。
参考文档
- 搞懂OpenLDAP:https://segmentfault.com/a/1190000014683418
- VisualParadigm: https://online.visual-paradigm.com
- OpenLDAP Document: https://www.openldap.org/doc
DevOps:运维体系建设的更多相关文章
- 蚂蚁金服互联网IT运维体系实践
摘要: 本文来自蚂蚁金服首席技术架构师,基础技术部负责人胡喜.从2010年支撑双十一最高交易峰值2万笔/分钟到2015年双十一的8.59万笔/秒,蚂蚁金服的技术架构和运维体系一直都在不断摸索和实践.本 ...
- 阿里巴巴毕玄解密AIOps:一文读懂阿里巴巴运维体系的前世今生
[编者按]林昊(毕玄),阿里巴巴研发效能事业部负责人.2007年加入阿里,10年间打造了阿里目前使用最为广泛的核心中间件之一的服务框架:建设了阿里的HBase团队,发展到今天HBase已经是阿里最重要 ...
- 从零开始搭建运维体系 - ansible
从零开始搭建运维体系 - ansible 基本配置好了局域网内的机器后,第一个遇到的问题就是如何批量操作这么多台机器,ansible就是这么一个自动化运维工具. ansible是一个基于ssh的批量远 ...
- 实战:阿里巴巴 DevOps 转型后的运维平台建设
导读:阿里巴巴DevOps转型之后,运维平台是如何建设的?阿里巴巴高级技术专家陈喻结合运维自身的理解,业务场景的分析和业界方法论的一些思考,得出来一些最佳实践分享给大家. 前言 “我是这个应用 ...
- 阿里巴巴 DevOps 转型后的运维平台建设
原文:http://www.sohu.com/a/156724220_262549 本文转载自公众号「DevOps 时代」,高效运维社区致力于陪伴您的职业生涯,与您一起愉快的成长. 作者简介: 陈喻( ...
- devops 运维平台相关知识
1.https://choerodon.io/zh/community/ (代码 https://github.com/choerodon/choerodon) 猪齿鱼 2.https://www.o ...
- DEVOPS 运维开发系列
DEVOPS 运维开发系列四:ITIL事态管理流程.事态监控系统设计以及基于Devops的效率提升实践 - watermelonbig的专栏 - CSDN博客https://blog.csdn.net ...
- 运维CMDB建设思路
在我们日常的运维工作中,面对着大量的基础设施和软件服务,该如何管理?这个管理的原则又是什么?粒度该如何控制?我们是否可以建立一个统一的标准模型来管理以上对象?管理过程中,如何降低人力成本?资源对象的生 ...
- 目前市面上比较流行的devops运维平台汇总
1,spug 1,Spug简介 Spug是面向中小型企业设计的无 Agent的自动化运维平台,整合了主机管理.主机批量执行.主机在线终端.应用发布.任务计划.配置中心.监控.报警等一系列功能.演示地址 ...
随机推荐
- 【一起学源码-微服务】Feign 源码二:Feign动态代理构造过程
前言 前情回顾 上一讲主要看了@EnableFeignClients中的registerBeanDefinitions()方法,这里面主要是 将EnableFeignClients注解对应的配置属性注 ...
- 2017CCPC杭州(ABCDJ)
所有的题目在这里<--- 待补... Problem A. HDU6264:Super-palindrome 题意: 题目定义了一个超级回文串,这个串满足:它的任一奇数长度的串都是回文串. 现在 ...
- OpenJ_Bailian 2815 城堡问题(DFS)
题目传送门OpenJ_Bailian 2815 描述 1 2 3 4 5 6 7 ############################# 1 # | # | # | | # #####---### ...
- c++ beep 演奏一次质量不高的天空之城
beep函数用法: beep(HZ,time); hz是发出多少赫兹声音,time是发声时间(ms) 话不多说,上代码 #include <cstdio> #include <win ...
- windows环境下使用python3.x自带的CGI服务器测试cgi脚本(转)
1.在桌面上新建一个文件夹作为服务器目录文件夹(文件夹名称自定义,文件夹位置自定义),在www文件下再建一个文件夹,文件夹名为“cgi-bin”,须是这个文件名,其他试过不行(原因暂时未知)
- get_字段_display()
gender_choices = ((1, '男'), (2, '女')) gender = models.IntegerField(verbose_name='性别', choices=gender ...
- Python学习,第三课 - 数据类型
前言. 本次针对Python中的数据类型,做详细的总结 1.数字 2 是一个整数的例子. 长整数 不过是大一些的整数. 3.23和52.3E-4是浮点数的例子.E标记表示10的幂.在这里,52.3E- ...
- python读取文件使用相对路径的方法
场景描述: python传统的读取文件的方法,通过读取文件所在目录来读取文件,这样出现的问题是,如果文件变更了存储路径,那么就会读取失败导致报错 如下方脚本 def stepb(a):#写入txt f ...
- Day8-Python3基础-Socket网络编程
目录: 1.Socket语法及相关 2.SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台网络互通的电脑之间,架设一个通道,两台电脑通过这个通道 ...
- Navicat premium 12 for mac 无限试用
Mac 终端输入 sudo rm -Rf ~/Library/Application\ Support/PremiumSoft\ CyberTech 重启电脑 成功