简介

运维体系的建设的目的在于方便运维工作,通过自动化、规范化、流程化的操作方法提高运维效率,打造一个安全、可靠、高效、可追踪、可回溯的运维环境,实现一个高可用、高并发、具备高容错、自我修复、故障能快速定位的生产环境的运维生态环境(DevOps Ecosystem)。本篇文章将从三个方面来讨论运维体系的建设,账号权限管理、发布流程CI/CD、系统监控预警,文中可能多有理解不透、涉及不到甚至错误之处,希望有见解的小伙伴留言交流。

基于OpenLDAP的统一账号管理

  1. LDAP(Lightweight Directory Access Protocol)轻量级目录访问协议,是一个开放的,中立的,工业标准的应用协议,通过IP协议提供访问控制和维护分布式信息的目录信息。

  2. OpenLDAP是轻型目录访问协议 LDAP 的自由和开源的实现,在其OpenLDAP许可证下发行,并已经被包含在众多流行的Linux发行版中。 OpenLDAP的一个常用用途是单点登录,用户可以在多个应用平台中使用同一个账户密码,通常用于公司内部网站的登录中。

  3. 在运维工作中,主要用其单点登录、用户分组、配合业务支撑系统实现权限管理和准入控制。更重要的是,目前大部分系统均支持LDAP,公司中使用的Gitlab、Jenkins、Jira、Jumpserver、Docker harbor、Zabbix、OpenVPN、甚至包括nginx均可实现和LDAP的对接。

下图基本公司业务支持的系统之间通过OpenLDAP实现的互通互联的逻辑关系。

自动化运维CI/CD

  1. 所谓DevOps,我的理解是所有的工作内容也是通过版本控制工具来管理,配置、脚本、文件放置于版本仓库,继而触发持续集成工具,发布到相应的环境中。所有的更改和操作清晰、透明,均可通过记录查询以及通过版本回滚。

  2. 自动化,就云上开辟新主机为例,可以通过一个清单,包含所需要建立机器的区域、CPU、内存、磁盘、主机名、使用的镜像等,提交至gitlab,gitlab自动触发Jenkins构建,调用云API创建主机,同时进行初始化,安装监控客户端等,将监控指标推送到监控系统,同时Jenkins将该主机的信息添加到Jumpserver中,方便管理,从而实现整个闭环。

  3. 对于CI/CD(持续集成/持续部署),Jenkins有三个环境的Job,分组呈现,不同分组的人员可看到不同的Job,从而实现权限的控制,对于开发环境的Job来自于Gitlab仓库中dev分支的代码,测试环境的代码来自于master分支,线上环境的Job来自于master上分支上打过tag的代码,开发测试人员无法看到线上环境的Job,当需要升级时,开发人员将tag交给运维,运维升级完成验证同时通知开发。

  4. 灰度发布,灰度发布有赖于系统架构,原则上需要系统架构支持高可用、负载均衡、方便横向扩展;比如,公司采用阿里巴巴公司开源的一个高性能优秀的服务框架Dubbo(使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。
    Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。)可将各功能拆解为单个模块,模块可多节点部署,模块启动自动注册到同一管理平台zookeeper,成为生产者或消费者,RPC调用实时查询zookeeper。如此便可逐台发布,实现发布过程的业务不中断;对于前端页面,发布至web服务器上,web服务器处在lb后端,可作多节点,实现高可用和负载均衡,从而保证业务的稳定性。

  5. Jira工单系统,除Bug跟踪和需求管理之外,Jira系统可以作为公司知识库,各部门人员均可使用;就比如运维人员,将平常自己解决的技术问题记录到该平台上,下次再遇到,就可以查询自己的处理记录,既方便又锻炼文档的书写能力;也可以将自己的经验分享给其他小伙伴查看,互相学习,共同进步;另外,Jira又有创建子任务的功能,将一个大问题拆解成若干小问题,逐个攻破。

该自动化CI/CD体系可根据不同的公司规模作出调整,去掉有些功能或模块,但对于大公司,整个体系建立的越完整,工作就会越高效,越方便。

系统监控预警

  1. Zabbix监控,将所有主机加入监控,时刻掌握他们的状态,一旦有指标不正常,触发器触发告警,可通过微信、钉钉、邮件方式收到告警,详细有效的监控报警是保证系统正常运行不可少的工具,防患于未然,快速定位故障。

  2. ELK日志收集,日志的收集和监控也是很有必要的,当集群环境壮大之后,某一个模块可能会部署多个节点,再登录到机器上查看某一模块的日志就变得很困难,此时,可以将日志收集至ELK等平台上,按模块分类。另外,有些故障只能从日志中定位,比如Java程序,程序仍在运行,但服务已不可用,这个时候,监控日志中的错误信息,实时报警,就能及时定位故障,加快问题处理的速度。

总结

运维体系这个课题比较庞大,包罗万象,不追求完美,以我现在的认知,将其拆解为三个模块,模块之间多有交叉,每个模块又有很多的点组成,希望能够对需要的伙伴有用,对运维工作的整体有所认知。当然运维体系绝不仅仅如此,比如说,备份、安全等,就备份来说,数据库、配置文件的备份可在灾难爆发时,让你不至于走头无路,另外,使用gitlab实时备份一些应用的配置也是一种很有效的方式。

参考文档

DevOps:运维体系建设的更多相关文章

  1. 蚂蚁金服互联网IT运维体系实践

    摘要: 本文来自蚂蚁金服首席技术架构师,基础技术部负责人胡喜.从2010年支撑双十一最高交易峰值2万笔/分钟到2015年双十一的8.59万笔/秒,蚂蚁金服的技术架构和运维体系一直都在不断摸索和实践.本 ...

  2. 阿里巴巴毕玄解密AIOps:一文读懂阿里巴巴运维体系的前世今生

    [编者按]林昊(毕玄),阿里巴巴研发效能事业部负责人.2007年加入阿里,10年间打造了阿里目前使用最为广泛的核心中间件之一的服务框架:建设了阿里的HBase团队,发展到今天HBase已经是阿里最重要 ...

  3. 从零开始搭建运维体系 - ansible

    从零开始搭建运维体系 - ansible 基本配置好了局域网内的机器后,第一个遇到的问题就是如何批量操作这么多台机器,ansible就是这么一个自动化运维工具. ansible是一个基于ssh的批量远 ...

  4. 实战:阿里巴巴 DevOps 转型后的运维平台建设

    导读:阿里巴巴DevOps转型之后,运维平台是如何建设的?阿里巴巴高级技术专家陈喻结合运维自身的理解,业务场景的分析和业界方法论的一些思考,得出来一些最佳实践分享给大家.   前言   “我是这个应用 ...

  5. 阿里巴巴 DevOps 转型后的运维平台建设

    原文:http://www.sohu.com/a/156724220_262549 本文转载自公众号「DevOps 时代」,高效运维社区致力于陪伴您的职业生涯,与您一起愉快的成长. 作者简介: 陈喻( ...

  6. devops 运维平台相关知识

    1.https://choerodon.io/zh/community/ (代码 https://github.com/choerodon/choerodon) 猪齿鱼 2.https://www.o ...

  7. DEVOPS 运维开发系列

    DEVOPS 运维开发系列四:ITIL事态管理流程.事态监控系统设计以及基于Devops的效率提升实践 - watermelonbig的专栏 - CSDN博客https://blog.csdn.net ...

  8. 运维CMDB建设思路

    在我们日常的运维工作中,面对着大量的基础设施和软件服务,该如何管理?这个管理的原则又是什么?粒度该如何控制?我们是否可以建立一个统一的标准模型来管理以上对象?管理过程中,如何降低人力成本?资源对象的生 ...

  9. 目前市面上比较流行的devops运维平台汇总

    1,spug 1,Spug简介 Spug是面向中小型企业设计的无 Agent的自动化运维平台,整合了主机管理.主机批量执行.主机在线终端.应用发布.任务计划.配置中心.监控.报警等一系列功能.演示地址 ...

随机推荐

  1. 常见的sql注入环境搭建

    常见的sql注入环境搭建 By : Mirror王宇阳 Time:2020-01-06 PHP+MySQL摘要 $conn = new mysqli('数据库服务器','username','pass ...

  2. asp.net core 基于 JSON 实现多语言

    asp.net core 基于 JSON 实现多语言 Intro 上次我们提到了,微软默认提供基于资源文件的多语言本地化,个人感觉使用起来不是太方便,没有 json 看起来直观,于是动手造了一个轮子, ...

  3. cogs 826. [Tyvj Feb11] GF打dota 次短路详细原创讲解! dijkstra

    826. [Tyvj Feb11] GF打dota ★★☆   输入文件:dota.in   输出文件:dota.out   简单对比时间限制:1 s   内存限制:128 MB 众所周知,GF同学喜 ...

  4. 序列化之二(将"\/Date(942289871000)\/"格式的时间替换成"yyyy-MM-dd HH:mm:ss"格式)

    序列化就是一种用来处理对象流的机制.所谓对象流也就是将对象的内容进行流化,流的概念这里不用多说(就是I/O).我们可以对流化后的对象进行读写 操作,也可将流化后的对象传输于网络之间(注:要想将对象传输 ...

  5. redis 其他操作

    1.设定服务端密码 1.1.编辑 redis的配置文件 [root@centos7 ~]# vim /usr/local/redis/etc/redis.conf requirepass 123 # ...

  6. UAF——use after free

    本文系pwn2web原创,转载请说明出处 UAF 漏洞,英文原名use after free,该漏洞简洁的可以概括为 分配一块内存 free该内存但不回收,构成悬垂指针 再次构造分配同样大小的内存,按 ...

  7. Spring MVC中的拦截器Interceptor

    谈谈spring中的拦截器 在web开发中,拦截器是经常用到的功能.它可以帮我们验证是否登陆.预先设置数据以及统计方法的执行效率等等.今天就来详细的谈一下spring中的拦截器.spring中拦截器主 ...

  8. 一图胜千言elasticsearch(lucene)的内存管理

  9. 第二阶段冲刺个人任务——three

    今日任务: 优化统计个人博客结果页面的显示. 昨日成果: 优化作业查询结果,按学号排列.

  10. 「 深入浅出 」java集合Collection和Map

    本系列文章主要对java集合的框架进行一个深入浅出的介绍,使大家对java集合有个深入的理解. 本篇文章主要具体介绍了Collection接口,Map接口以及Collection接口的三个子接口Set ...