DevOps组件高可用的思路

简介:

引言:

以往部署的应用或服务基本都是自成体系不会被其他影响。而在DevOps下这种部署方式也正在发生改变。因为应用或服务本身所涉及的组件越来越多。DevOps串联着应用或服务以及应用和服务所涉及的组件,以保证所有应用和服务的正常运行。

目录:

、传统高可用

二、DevOps 简述

三、传统高可用架构模式

四、DevOps 带来的改变

一、传统高可用

传统生产模式下,如应用、中间件以及数据库等服务都需要有高可用。以避免业务服务出现宕机的问题。

7e3b435453b9b00ad85a2ced65199ef2376b8b19

常见的部署方法,有服务主备、服务集群,还有两地三中心的高可用方案。

78048959281b868897ace29bc335ddd5e1bfc8fd

高可用常见的指标,以及服务宕机时间。

https://en.wikipedia.org/wiki/Mean_time_between_failures

MTBF = MTTF + MTTR

365*24*(1-0.99)=87.6,在实际情况下当然故障时间越短越好

系统可用性比率 = MTTF/MTBF

二、DevOps简述

715d215d9ea796a90cb966225596e6240e195c2e

1、DevOps带来的变化就是整个部署过程是自动化的、部署的周期变短了。开发和运维所关注的焦点也发生了变化。开发人员从提交代码,到看到本次修改的内容可以在很短的时间内完成。

2、在实际的接触的过程中,由于DevOps串连了多重的应用服务,因此许多人会提出对于DevOps所串联的组件都必须是高可用。因此问题就出现了,使得原本简单清晰的架构发生了很大的变化。

3、DevOps带来的变化与传统的高可用是有区别的。

三、传统高可用架构模式

f4d4d946de878f4f7359444aaec723583cfccf89

说明: 简单的将Gitlab服务做成主备,或者主主的方法。这样的Gitlab服务已经从单点变成的了稍微复杂的架构。

9d9e8734cb79a848d79892e30bf873e1075f0a8d

这样我们的harbor也已经变成高可用了,当通过程devops串联后,运维变得复杂起来。当然DevOps还可以串联更多的组件,这里只是举了两个例子。

四、DevOps带来的改变

5261f3fa52a152512cf2043ad591096c2a0297fb

进入DevOps时代,DevOps在串联组件高可用时,对于组件的要求也发生了变化。由于DevOps起到了串联的功能,因些希望所有的组件即可以高可用也可以是分布式的,希望所有服务都是可解耦的。

328603dcbc6231103589bf92e809cda395815151

从图上可以看到,APP这一层就是一个简单的分布式。这也许是我们经常部署的一种典型的架构。简单的将APP这层进行了分布式的设计。而其他的组件还是沿用传统集群的部署模式,但在这种架构的部署模式下,增加了运维的难度。

66256957d70ed89c767123c2bbccbda337d98d54

复杂的分布式在图中看起来比简单分布式要简单。但在实践中会发现这个会很难。因为APP、Cache、DB、Storage等等都是分布式的,这样复杂对于架构上提出了很高的要求,同时对于运维也增加了难度。图上画的比较少,但实际上复杂的分布式比这要多的多。

也许集群就是分布式。也许集群只是解决高可用的,而分布式是解决高并发、高性能的问题,也许集群是分布式的一部分。每个人都有自己的理解,理解你的自己的业务、需求等等。

其实还有一种技术可以来帮助我们实现分布式部署,就是容器技术。通过kubernetes来实现自己所需求应用的高可用以及应用的分部式。

b40c10a75dc3c1b076239a8031b20bf6a0d9d207

当随着微服务和devops的到来,容器化的微服务和devops更好的落地实现。高可用的kubernetes为我们提供了基础的容器平台和容器的调度能力。Kubernetes本身就具备容错能力。

也许你会说横向扩展并不是高可用的架构。但如果你考虑到业务对资源需求变化时,你会发现kubernetes的部署对你非常用利。当访问量突增时,就可以利用kubernetes的横向扩展能力。而不是像以往在从零开始。

同时Kubernetes本身时可靠的监控对高可用系统非常重要,利用很多商用的软件或者很多开源的工具进行整合甚至自行开发可以对整体的业务状况以及系统状况进行把握。也可以使用额外的开源软件promethus等来对业务状况的监控。


原文发布时间为:2018-10-10

本文作者:严伟

本文来自云栖社区合作伙伴“EAWorld”,了解相关信息可以关注“EAWorld”。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
4月前
|
运维 监控 Devops
如何理解DevOps在IT环境中的应用及价值
本文介绍DevOps的定义、适用团队、实施步骤及常用工具链,帮助初创公司实现自动化流程、持续集成与交付,增强灵活性和产品质量,快速响应市场需求。
176 0
如何理解DevOps在IT环境中的应用及价值
|
10月前
|
运维 Devops 持续交付
DevOps实践:持续集成与持续部署的黄金法则
在软件工程领域,DevOps作为一种文化和实践的集合,旨在加强开发(Dev)与运维(Ops)之间的协作与整合。本文深入探讨了持续集成(Continuous Integration, CI)和持续部署(Continuous Deployment, CD)的概念、重要性以及实施策略,同时结合真实案例分析其在实际运维工作中的应用效果。文章旨在为读者提供一套系统的方法论,以实现软件开发流程的自动化、效率提升及风险降低。 【7月更文挑战第17天】
89 3
|
8月前
|
运维 监控 Devops
DevOps实践:构建高效运维流程
【9月更文挑战第3天】在当今快节奏的技术环境中,高效的运维流程是企业成功的关键。本文旨在揭示如何通过DevOps实践,构建一个既灵活又高效的运维体系。我们将深入探讨自动化工具、持续集成与持续部署(CI/CD)策略以及监控和日志管理的最佳实践,以实现运维工作的优化。文章将用简洁明了的语言,结合生动的比喻,带领读者走进DevOps的世界,学习如何将理论应用到实际工作中去。
|
9月前
|
监控 安全 Devops
DevOps实践:从代码到部署的无缝过渡
【8月更文挑战第30天】本文通过深入浅出的方式,向读者展示了DevOps文化和实践如何帮助团队实现从代码编写到软件部署的高效、自动化流程。我们将探讨持续集成(CI)、持续交付(CD)以及监控和日志记录的最佳实践,旨在为希望优化软件开发周期的专业人士提供实用指南。文章不展示具体代码示例,而是聚焦于概念理解和实践应用,确保内容即便在没有代码的情况下也具有实质性价值。
|
Kubernetes 测试技术 持续交付
探索微服务架构下的持续集成与部署最佳实践
本文将深入探讨在微服务架构下实施持续集成与部署的最佳实践,介绍如何利用现代化工具和流程来实现自动化测试、持续集成、灰度发布等关键环节,帮助开发团队提升交付效率和质量。
|
运维 安全 Devops
DevSecOps:构建无缝安全的DevOps流程
在当今数字化时代,软件开发行业面临着越来越多的安全威胁。为了应对这些威胁,传统的软件开发模式已经无法满足需求。因此,DevSecOps应运而生,旨在将安全性融入到DevOps流程中。本文将介绍DevSecOps的概念和原则,并探讨如何实现无缝安全的DevOps流程。
|
运维 Devops 测试技术
[译]SRE 简介,和 DevOps 的关系和异同
在组织结构中引入网站可靠性工程(SRE)团队,在IT行业和DevOps领域越来越受欢迎。让我们在本文中探讨SRE流行的原因以及DevOps和SRE之间的区别和共同点。
358 0
[译]SRE 简介,和 DevOps 的关系和异同
|
敏捷开发 运维 监控
通过一张图来了解一下敏捷测试和DevOps测试
通过一张图来了解一下敏捷测试和DevOps测试
367 0
通过一张图来了解一下敏捷测试和DevOps测试
|
运维 jenkins Devops
DevOps架构实践
DevOps架构实践
150 0
|
监控 Cloud Native 架构师
云原生持续交付的4大原则-上 | 学习笔记
快速学习云原生持续交付的4大原则-上
云原生持续交付的4大原则-上 | 学习笔记