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的自动化运维平台,整合了主机管理.主机批量执行.主机在线终端.应用发布.任务计划.配置中心.监控.报警等一系列功能.演示地址 ...
随机推荐
- spring boot使用拦截器
1.编写一个拦截器 首先,我们先编写一个拦截器,和spring mvc方式一样.实现HandlerInterceptor类,代码如下 package com.example.demo.intercep ...
- python可变对象
- 每个对象中都保存了三个数据: id(标识) type(类型) value(值) - 列表就是一个可变对象 a = [1,2,3] - a[0] = 10 (改对象) - 这个操作是在通过变量去修改 ...
- 修理牛棚 贪心 USACO
今天开始终于可以刷USACO的题啦 准备每一道都发一个题解 1010: 1.3.2 Barn Repair 修理牛棚 时间限制: 1 Sec 内存限制: 128 MB提交: 9 解决: 7[提交] ...
- 执行sql中的 函数,function
CREATE FUNCTION [dbo].[GetWeight] ( ,)--重量/体积重 ) ,) as begin --顺丰重量/体积重以0.5kg为单位向上取值(小数点后两位4舍5入) ,) ...
- ASP.NET 开源导入导出库Magicodes.IE 导出Pdf教程
基础教程之导出Pdf收据 说明 本教程主要说明如何使用Magicodes.IE.Pdf完成Pdf收据导出 要点 导出PDF数据 自定义PDF模板 导出单据 如何批量导出单据 导出特性 PdfExpor ...
- 【红外DDE算法】聊聊红外图像增强算法的历史进程(第一回)
宽动态红外图像增强算法综述回顾过去带你回顾宽动态红外图像增强算法的历史进程,历来学者的一步步革命(新的算法框架提出),一步步改革(改进优化),从简单粗暴到细致全面.正所谓是:改革没有完成时,只有进行时 ...
- NC使用教程
NetCat参数说明: 一般netcat做的最多的事情为以下三种: 扫描指定IP端口情况 端口转发数据(重点) 提交自定义数据包 1.扫描常用命令. 以下IP 处可以使用域名,nc会调用NDS解析成I ...
- SpingMvc复杂参数传收总结
上一篇文章[javaWeb传收参数方式总结]总结了简单传收参数,这一篇讲如何传收复杂参数,比如Long[] .User(bean里面包含List).User[].List.List<Map< ...
- HTML中CSS引用——选择器的使用
一.元素选择器 1.书写格式:标记名{/*生命块*/} 2.所有与该标记匹配的元素,都将应用声明块中的规则 二.类选择器 1.书写格式:.类名{/*声明块*/} ...
- 02--java--环境搭建
第一步,下载JDK 去ORACLE官网http://www.oracle.com下载 有安装版和绿色版,安装版一路下一步,绿色版解压缩压缩包就行了 安装版直接自动配置环境变量,绿色版需要自己配置环境变 ...