用户您好!请先登录!

分类目录DevOps

为什么SRE才代表更好的运维

SRE是什么?

SRE(Site Reliability Engineering)即网站可靠性工程,提及SRE很多人会联想到运维工程师、系统工程师,其实不然,SRE本质上仍然是软件工程师,下面我们从SRE的发展历史展开来进行介绍。

SRE最早在十多年前Google提出并应用,近几年逐步在国内外TOP互联网公司都开始广泛应用。据笔者了解业界SRE落地成功的权威有Google、Netflix等,前者缔造了SRE,并奠定了其权威的地位,而后者将SRE的实践做到了极致,据官方曝露的信息,Netflix仅有的个位数的Core SRE支持了190个国家、数亿用户、数万微服务实例业务规模的运维。

近几年随着DevOps的发展,SRE开始被大家熟知,国内的一线互联网公司如BAT、美团也都逐步从组织架构、招聘上均有体现。以阿里为例,不同的BU均有设置SRE团队,然而在不同的部门,SRE的职责划分却不尽相同,那么SRE究竟在做什么?

SRE的职责

SRE主要负责Google所有核心业务系统的可用性、性能、容量相关的事情,根据《Site Reliability Engineering 》一书提及的内容,笔者做简单汇总,Google SRE的工作主要包括但不限于如下:

  • 基础设施容量规划
  • 生产系统的监控
  • 生产系统的负载均衡
  • 发布与变更工程管理
  • on-call(轮值) 与 Firefighting(紧急故障救火)
  • 与业务团队协作,共同完成疑难问题的处理

阅读更多

AIOps落地的关键点

随着系统效率和复杂程度的日益提高,我们用于承载服务的IT环境也变得异常复杂。许多企业在向微服务和容器化的迈进的过程中,给已有的应用进一步增加了大量的服务组件。那么如何管理和协调好各个组件之间的功能与关系,显然是我们需要面对和处理的巨大挑战。

对于大多数企业而言,他们的IT运营(IT Ops)团队往往只能疲于应付上述复杂局面,且很难获取到更多的实用信息与管理资源。而这恰恰是人工智能化IT运营(AIOps)一显身手的地方。通过由大数据、数据分析和机器学习等技术所提供高水准的定制服务,AIOps能够为当下流行的基础架构提供的全面、且深入的宝贵支持。

下面我们来一起了解一下,那些涉及到AIOps落地实践方面的关键知识点。

阅读更多

蚂蚁金服万级规模 K8s 集群管理系统如何设计

Kubernetes 以其超前的设计理念和优秀的技术架构,在容器编排领域拔得头筹。越来越多的公司开始在生产环境部署实践 Kubernetes,在阿里巴巴和蚂蚁金服 Kubernetes 已被大规模用于生产环境。Kubernetes 的出现使得广大开发同学也能运维复杂的分布式系统,它大幅降低了容器化应用部署的门槛,但运维和管理一个生产级的高可用 Kubernetes 集群仍十分困难。本文将分享蚂蚁金服是如何有效可靠地管理大规模 Kubernetes 集群的,并会详细介绍集群管理系统核心组件的设计。

系统概览

Kubernetes 集群管理系统需要具备便捷的集群生命周期管理能力,完成集群的创建、升级和工作节点的管理。在大规模场景下,集群变更的可控性直接关系到集群的稳定性,因此管理系统可监控、可灰度、可回滚的能力是系统设计的重点之一。除此之外,超大规模集群中,节点数量已经达到 10K 量级,节点硬件故障、组件异常等问题会常态出现。面向大规模集群的管理系统在设计之初就需要充分考虑这些异常场景,并能够从这些异常场景中自恢复。

阅读更多

基于Istio的灰度发布测试

灰度发布(又名金丝雀发布)介绍

当应用上线以后,运维面临的一大挑战是如何能够在不影响已上线业务的情况下进行升级。做过产品的同学都清楚,不管在发布前做过多么完备的自动化和人工测试,在发布后都会出现或多或少的故障。根据墨菲定律,可能会出错的版本发布一定会出错。

“ANYTHING THAN CAN GO WRONG WILL GO WRONG”

—— MURPHY’S LAW

因此我们不能寄希望于在线下测试时发现所有潜在故障。在无法百分百避免版本升级故障的情况下,需要通过一种方式进行可控的版本发布,把故障影响控制在可以接受的范围内,并可以快速回退。

可以通过灰度发布(又名金丝雀发布)来实现业务从老版本到新版本的平滑过渡,并避免升级过程中出现的问题对用户造成的影响。

阅读更多

How technology changes the rules for doing agile (技术如何改变敏捷的规则)

Containers and Kubernetes were not here when we started doing agile. But they change what used to be the hardest part: Applying agile beyond a small group, to the whole organization

By Matt Hicks | January 17, 2018

当我们开始推行敏捷时,还没有容器和 Kubernetes。但是它们改变了过去最困难的部分:将敏捷性从小团队应用到整个组织。

— Matt Hicks(作者)

CIO Containers Ecosystem
More companies are trying agile and DevOps for a clear reason: Businesses want more speed and more experiments – which lead to innovations and competitive advantage. DevOps helps you gain that speed. But doing DevOps in a small group or startup and doing it at scale are two very different things. Any of us who’ve worked in a cross-functional group of 10 people, come up with a great solution to a problem, and then tried to apply the same patterns across a team of 100 people know the truth: It often doesn’t work. This path has been so hard, in fact, that it has been easy for IT leaders to put off agile methodology for another year.

阅读更多

计算机系统的运维演进之路

数字化转型大潮中,常常说到DevOps,但是其并不是数字化转型所特有的。从一个高度及敏捷的研发团队的角度,其是必要的技术组成部分,甚至不在于是否用不用敏捷。并随着大数据的特有应用,衍生出DataOps;同时由于互联网相关应用等的大规模分布式的使用,及虚拟化、容器化等等的海量集群的应用,AIOps也被冠名了。

小运维与大运维

  • 统一及集中的部门和团队的成立,就是为了提供集中/一致/协同的管理支持,提高专业化水平。
  • 但是其不能永远站在后面,被动的接受服务请求。
  • 其专业性和资源集中性要渗透到立项,开发,运维等的全生命周期中,协同应用及系统建设和后续工作。
  • 不管是自己内部资源,还是外部资源,第三方服务及产品,团队应是组织与基础设施及平台服务的唯一对接中心。
航司的DevOps & DataOps & AIOps

阅读更多

唱吧DevOps落地微服务CI/CD的技术解读

1、业务架构:从单体式到微服务

K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验。K歌亭在客户端有VOD、微信和Web共三个交互入口,业务复杂度较高,如长连接池服务、用户系统服务、商户系统、增量更新服务、ERP等。对于服务端的稳定性要求也很高,因为K歌亭摆放地点不固定,很多场所的运营活动会造成突发流量。

为了快速开发上线,K歌亭项目最初采用的是传统的单体式架构,但是随着时间的推移,需求的迭代速度变得很快,代码冗余变多,经常会出现牵一发动全身的改动。重构不但会花费大量的时间,而且对运维和稳定性也会造成很大的压力;此外,代码的耦合度高,新人上手较困难,往往需要通读大量代码才不会踩进坑里。

鉴于上述弊端,我们决定接下来的版本里采用微服务的架构模型。从单体式结构转向微服务架构中会持续碰到服务边界划分的问题:比如,我们有user服务来提供用户的基础信息,那么用户的头像和图片等是应该单独划分为一个新的service更好还是应该合并到user服务里呢?如果服务的粒度划分的过粗,那就回到了单体式的老路;如果过细,那服务间调用的开销就变得不可忽视了,管理难度也会指数级增加。目前为止还没有一个可以称之为服务边界划分的标准,只能根据不同的业务系统加以调节,目前K歌亭拆分的大原则是当一块业务不依赖或极少依赖其它服务,有独立的业务语义,为超过2个的其他服务或客户端提供数据,那么它就应该被拆分成一个独立的服务模块。

在采用了微服务架构之后,我们就可以动态调节服务的资源分配从而应对压力、服务自治、可独立部署、服务间解耦。开发人员可以自由选择自己开发服务的语言和存储结构等,目前整体上使用PHP做基础的Web服务和接口层,使用Go语言来做长连接池等其他核心服务,服务间采用thrift来做RPC交互。

阅读更多

DevOps学习笔记

DevOps的起源

都信息时代了,各行各业自然也就离不开各类软件系统了,无论是微信支付宝还是看病挂号,打车住店,你能说出来的业务都信息化了或者在信息化的建设路上。一套软件系统要想用的好,就需要软件开发者和运行维护人员以及维保开发人员通力合作。近年来DevOps这个概念开始流行起来,所谓开发运维结合模式,就是把软件开发和运行维护结合起来的工作模式。它通过传递一种分享文化、协作文化和精益文化,促进团队协作,从而不断生产出更好的产品,提供更优质的服务。

它是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

DevOps学习笔记

它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。

阅读更多

DevOps平台之开源技术图谱

引言:

DevOps平台在研发过程中,集成了许多的第三方工具来完善持续集成的流程,诸如Jira、Gitlab、Jenkins等,集成一个工具其实是一个繁琐的工作,需要注意到许多的细节,那么我们又是怎么做的呢?本文就是介绍一下我们是如何将这些工具集成到DevOps平台中去的。

目录:

1.DevOps平台第三方服务集成概览

2.DevOps平台第三方服务集成思路

3.DevOps平台第三方服务集成示例

1.DevOps平台第三方服务集成概览

说明:DevOps平台所有集成的第三方服务信息都保存在平台管理的服务集成页面,如下图展示:

DevOps平台之开源技术图谱

1、介质服务器

DevOps平台采用的介质服务器类型为NEXUS,NEXUS是一个强大的maven仓库管理器,它极大的简化了本地内部仓库的维护和外部仓库的访问。

DevOps平台之开源技术图谱

2、构建引擎

DevOps平台采用的构建引擎类型为Jenkins,Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

Jenkins是DevOps平台很重要的一个组成部分,CICD就靠Jenkins来实现,用户可以在DevOps平台创建一个构建定义、配置好需要的任务如maven构建,还可配置定期执行或触发执行该构建任务,将用户从繁琐的构建工作中解脱出来。

DevOps平台之开源技术图谱

3、部署引擎

DevOps平台采用的部署引擎类型与构建引擎同为Jenkins。

阅读更多

GitHub 迎来内置 CI/CD,对所有开源项目免费!

640?wx_fmt=jpeg

北京时间 2019 年 8 月 9 日,GitHub 官方宣布了 GitHub Actions 将支持 CI/CD,并且对所有开源项目免费!GitHub 将迎来内置的 CI/CD,你是不是不用在 Travis,AppVeyor,Azure Pipelines 或是其他 CI/CD 工具之间而纠结了?

640?wx_fmt=png

任何 OS利用 GitHub 托管的环境,你可以在任何 OS 上运行你的 CI/CD 工作流,包括 Linux, macOS, Windows 以及容器。任何语言GitHub Actions 现在已经支持更多的语言和框架:Node.js, Python, Java, PHP, Ruby, Go, Rust, C/C++, .NET, Android, iOS 等等。任何云不论你使用的 AWS、Azure 或是 GCP,GitHub Actions 都有着很好的支持,轻松部署你的代码到你所喜爱的云平台。

640?wx_fmt=png

价格价格问题一定是大家最关心的~ 是的!GitHub Actions 对于开源项目是完全免费的,对于私有项目,也有每个月 2000 分钟的免费额度。

640?wx_fmt=png

与 GitHub Package Registry 无缝集成今年五月份,GitHub 发布了 GitHub Package Registry。GitHub Actions 可以完美地与 GitHub Package Registry 集成,轻松地使用和发布你所熟悉的软件包:JavaScript (npm),Java (Maven),Ruby (RubyGems),.NET (NuGet),Docker 镜像等等。未来未来 GitHub Actions 还会有以下的两个重要更新:

  • Self-hosted runners:未来 GitHub Actions 部署在你自己的机器上,而且完全免费。
  • Actions for GitHub Enterprise Server:明年,GitHub Actions 将会支持在 GitHub Enterprise Server 上运行。

注册使用 Beta 版目前,大家可以注册使用 Beta 版。11 月 13 日,GitHub Actions 将在 GitHub Universe 上正式发布!

  • https://github.com/features/actions

Jenkins和maven,gitlab 如何实现自动化部署流程

几年前没用过jenkins的时候,每次都需要用eclipse打个war包,然后小心翼翼的上传到服务器,给服务器原有的war包改个名字,mv到bak目录中,停止服务,删除原有的webapps的项目,再把新上传的war包放进到tomcat的webapp说的目录下,启动项目。每次改个html的标签的名字都需要重新上传,每次都是这么繁琐的操作。其实小公司还可以容忍,如果是比较大的项目,还持续停留在这个脚本上运维人员都累死了,因为有可能一次部署几十个项目。

一切从实操出发!jenkins和maven,gitlab如何实现自动化部署流程

jenkins

  • 历史

Hudson是在2004年的夏天由Sun公司开发

2005年2月开源并发布了第一个版本。

Hudson发布的时候CruiseControl是CI界的老大哥,但是很快,在大约2007年的时候Hudson已经超越CruiseControl。2008年5月的JavaOne大会上,Hudson获得了开发解决方案类的Duke’s Choice奖项。从此,小弟翻身做大哥,Hudson成为CI的代名词。

2010年9月,乌龟壳公司偷偷把Hudson®™变成了注册商标。2010年11月,Hudson社区的核心开发人员发现并angry了,双方进行了不太友好的会谈,不出意料的谈崩了。圣诞节过后,

2011年的第一场雪,比以往来的要晚一些,几个秃顶的大叔在McDonald‘s的豪华包间里做了一个艰难的决定:

mv -f hudson jenkins

Hudson和Jenkins都拥有代码;

Hudson有Oracle和Sonatype’s corporate的支持和Hudson的注册商标

Jenkins拥有的是大多数的核心开发者,社区,和后续更多的commit。

一切从实操出发!jenkins和maven,gitlab如何实现自动化部署流程

jenkins git 、maven gitlab 、tomcat 构建持续集成环境 流程

一切从实操出发!jenkins和maven,gitlab如何实现自动化部署流程

1> 开发者将新版本push到git server (Gitlab)。

2> Gitlab随后触发jenkins master结点进行一次build。(通过web hook或者定时检测)

3> jenkins master结点将这个build任务分配给若干个注册的slave结点中的一个,这个slave结点根据一个事先设置好的脚本进行build。这个脚本可以做的事情很多,比如编译,测试,生成测试报告等等。这些原本需要手动完成的任务都可以交给jenkins来做。

4> 我们在build中要进行编译,这里使用了分布式编译器distcc来加快编译速度。

jenkins的工作原理是先将源代码从gitlab中拷贝一份到本地,然后根据设置的脚本进行build。我们可以看出,整个系统的关键就是那个build脚本,用来告诉jenkins在一次集成中需要执行的任务。

阅读更多