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的自动化运维平台,整合了主机管理.主机批量执行.主机在线终端.应用发布.任务计划.配置中心.监控.报警等一系列功能.演示地址 ...
随机推荐
- Bandicam(班迪录屏)高清视频录制工具
Bandicam(班迪录屏)简单好用的录屏幕,录游戏,录视频的功能强大的屏幕录像软件,比起其他软件其性能更加卓越. 与其他软件相比,用Bandicam录制的视频大小更小, 不仅保证原文件的质量.
- 顺丰丰桥软件开发工具包 (.NET)
丰桥 - 一站式对接服务平台, 打通客户与顺丰系统之间的信息流, 实现物流供应链一体化. 随着一个电商项目和顺丰合作, 信息流对接就是我们开发的事了. 顺丰通过丰桥提供了一些开放接口, 不过丰桥提供的 ...
- vue学习--组件之间的传值方式
1.概述 vue由多个组件构成页面,在不同的组件中有不同的联系,组件之间的传值是十分有必要的 2.父子组件之间传值 --props和$emit 父传子:通过props 方法:子组件:props:['m ...
- STM32动态内存分配需要注意的地方
STM32进行动态内存分配是需要注意动态内存分配大小不要超过.S文件中设置Heap Size大小 如图所示: 0x4000 :可以分配得最大字节是16384bytes 这个地方malloc的大小超过了 ...
- 权限认证基础:区分Authentication,Authorization以及Cookie、Session、Token
1. 认证 (Authentication) 和授权 (Authorization)的区别是什么? 这是一个绝大多数人都会混淆的问题.首先先从读音上来认识这两个名词,很多人都会把它俩的读音搞混,所以我 ...
- dp-完全背包(题)
理解了这道题 , 我感觉对背包又有了一个更深的认识 …… HDU 2159 最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务.久而久之xhd开始对杀怪产生的厌恶感, ...
- PTA - 堆栈模拟队列
设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q. 所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数: int IsFull(Stack S):判断堆栈S是否已满,返回1或0: in ...
- Android栈溢出漏洞利用练习
在Github上看到一个Linux系统上的栈溢出漏洞利用练习项目: easy-linux-pwn.在原项目基础上,我稍微做了一些改动,将这个项目移植到了Android 9.0系统上: easy-and ...
- ORM执行原生SQL语句
# 1.connectionfrom django.db import connection, connections cursor = connection.cursor() # cursor = ...
- 异数OS 星星之火(一)-- 异数OS-织梦师云 用户使用手册
. 异数OS 星星之火(一)– 异数OS-织梦师云 用户使用手册 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 6 ...