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的自动化运维平台,整合了主机管理.主机批量执行.主机在线终端.应用发布.任务计划.配置中心.监控.报警等一系列功能.演示地址 ...
随机推荐
- 8.在python中用data_only=True设置显示excel表格中公式的结果为None的解决方法
在用python调用excel文件显示带公式的表格内容,有两种显示结果:第一种是直接显示表格中公式人内容:另一种是显示其表格中公式的结果. 显示第一种,可以这样输入代码: 显示第二种,可以这样输入代码 ...
- 【转】基于ArcGIS for javascript api 轨迹回放
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
- PGSQL 日期时间的比较
pgsql支持日期时间的比较,但是需要注意的是,我们写sql的时候传入的参数一般是字符串类型,我们需要把把字符串转化为Date类型,否则会查不到内容. 例子: select * from user w ...
- js去除字符串的前后空白
使用gravatar生成邮箱的头像时需要对邮箱地址哈希化,其中需要去除邮箱地址的首尾空白,查找了一些资料,总结一下 使用 js 提供的函数 trim() trim() 方法会删除一个字符串两端的空白字 ...
- Java8 通关攻略
点赞+收藏 就学会系列,文章收录在 GitHub JavaEgg ,N线互联网开发必备技能兵器谱 Java8早在2014年3月就发布了,还不得全面了解下 本文是用我拙劣的英文和不要脸的这抄抄那抄抄,熬 ...
- CSP-S rp++
心无旁骛 认真思考 努力骗分(哈哈) I Love CSP! 反正像我这种大菜鸟也考不了多少 尽力打 本次考试期望 day1 100 70-100 30-? day2 100 ? ? 总:300-? ...
- 为什么 K8s 在阿里能成功?| 问底中国 IT 技术演进
作者: 曾凡松 阿里云云原生应用平台高级技术专家 张振 阿里云云原生应用平台高级技术专家 导读:本文描述了阿里巴巴在容器管理领域的技术演进历程,解读了为什么 K8s 最终能够大获成功的原因,以及到今年 ...
- Collections中的常用方法
collections中的常用方法 public class CollectionsTest { public static void main(String[] args) { List list ...
- PHP——数组
数组的定义 数组能够在单个变量中存储多个值. 创建空数组: $arr = array();//表示创建一个空数组,并把创建的空数组赋值给变量$arr 数值数组 自动分配 ID 键(ID 键总是从 0 ...
- Java解析XML文件的方式
在项目里,我们往往会把一些配置信息放到xml文件里,或者各部门间会通过xml文件来交换业务数据,所以有时候我们会遇到“解析xml文件”的需求.一般来讲,有基于DOM树和SAX的两种解析xml文件的方式 ...