容器化应用的服务可用性

简介: 本文讲的是容器化应用的服务可用性【编者的话】高可用性的容器化应用是指服务可用性(连续运行时间)。本文介绍了如何借助于容器管理工具来监控和测量服务。
本文讲的是容器化应用的服务可用性【编者的话】高可用性的容器化应用是指服务可用性(连续运行时间)。本文介绍了如何借助于容器管理工具来监控和测量服务。

【烧脑式Kubernetes实战训练营】本次培训理论结合实践,主要包括:Kubernetes架构和资源调度原理、Kubernetes DNS与服务发现、基于Kubernetes和Jenkins的持续部署方案 、Kubernetes网络部署实践、监控、日志、Kubernetes与云原生应用、在CentOS中部署Kubernetes集群、Kubernetes中的容器设计模式、开发Kubernetes原生应用步骤介绍等。

我作为软件工程师的第一份工作是在阿灵顿高地(Arlington Heights, IL)的摩托罗拉公司。工作是关于蜂窝基站软件(cellular base station software )开发,以前称作为跨无线协议状态管理(state management across different radio protocols)。对于电话软件,99.999%的服务可用性是必需具备的(例如每年只能有小于5.26分钟的故障宕机时间)。我在摩托罗拉和贝尔实验室的后续几年,学习了如何建立和运维高可用性系统。

在那个时代里(约为90年代中期),高可用性系统需要昂贵且复杂的硬件,并且每个组件都得有个随时可用的备份。现在事情则变得容易多了。可以使用各种常见的硬件主机来主从备份应用组件,建立高可用性的系统。此外,使用容器来部署和运维,我们还可以获得更快的系统恢复时间,如Kubernetes、Nirmata这样的智能缓冲、精致的容器管理工具能将系统恢复时间降低至几毫秒。

然而,一直保持不变的是设计合理的系统管理需求,这包括管理系统所有组件的状态更新。而且对于微服务应用来说,一个应用可能有多个服务组成,每一个服务可能有多个实例,实现可靠性和伸缩性的系统管理正变得越来越复杂,因为有很多不相关的组件需要来跟踪和管理!让我们来看一看如何使用Nirmata来解决这个复杂的挑战。

服务可用性

为了管理服务可用性,我们首先需要知道三件事:
  • 哪个组件对服务来说至关重要
  • 每个组件可能有哪些状态
  • 如何定义和测量服务可用性

下图是Nirmata的部分领域实体(对象)图。如图所示,Nirmata收集和管理的信息既包含基础设施相关的对象(云供应商、主机、容器等),又包含软件应用对象(应用、服务等)。
1.png

建立一个优雅的状态模型需要及时更新每个对象的状态信息,同样重要的是需要对跨对象间的依赖和联系有深刻的理解。例如,由于主机重启导致某个服务不可用,那么这二者需要关联起来并进行上报。

这样的模型还能帮助我们区分严重问题与瞬间发生的故障。例如,某个容器的退出不会影响整个服务的可用性。实际上,服务编排引擎(orchestration engine)在多个服务实例上安排镜像滚动升级时,容器退出是正常的。

一旦我们知道了跟踪哪些实体,下一步就是定义和管理状态,及状态间的转换。在Nirmata,每个对象有两个主要状态和几个次要的过渡状态。主要状态有:
  • 运维状态:这个状态代表对象当前是否可运维或者可以如何运维。例如“上线”、“下线”、“故障”组成了一个对象的可运维状态模型。
  • 管理状态:这个状态是由用户或者管理员来管理的。例如,“关闭”、“暂停”是由用户触发的。

除了主要状态,每个对象可以有几个次要状态。这些状态是跟对象相关的,它们提供了更多的细节信息。例如,在Nirmata大多数管理的对象有“执行状态”,表示一个系统维护正在执行。

这里是一些在Nirmata中应用里服务有可操作状态:
  • 正在运行:服务的所有实例健康并且正在运行
  • 降级:服务的一些实例已经故障,或者正在执行某些操作
  • 正在执行:服务的所有实例正在执行更改
  • 故障:服务的所有实例已经产生故障

2.png

现在我们有了服务的状态模型,跟踪可用性就变得简单多了。在Nirmata,可用性是通过服务正在执行或降级时间占用总时间的比例来计算的。同样的方法也应用在应用级别的传播状态。未来版本,我们计划允许用户自己定义应用中每个服务如何被应用到整体的服务可用性计算中。

下面我们来看下Nirmata里的环境视图。每个环境可能有多个应用,每个应用都有自己的可用性,同时我们也可以看到该环境的整体可用性。
3.png

向下拉动,可以容易的看到特定应用的可用性。Nirmata还展示了应用的相关状态转换,并标识出应用的故障原因。
4.png

这里我们可以看到单个服务视图和它的状态变化:
ServiceAvailability-6-1024x540.png

总结

容器化微服务应用的可用性管理是复杂的,因为有很多项需要衡量和跟踪。而且,衡量系统可用性需要一个良好定义的状态模型。对象状态需要在跨物理设施和软件实体间可管理、可关联和可传播。

使用合适的系统管理平台,才有可能衡量、跟踪并报告服务、应用或者环境的可用性。运维人员通过聚焦于服务可用性,可轻易地实现“信噪分离”,只关注影响服务的问题。

原文链接:Service Availability for Container-Native Apps (翻译:姜俊厚)

原文发布时间为:2017-08-29

本文作者:姜俊厚

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:容器化应用的服务可用性

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
1549 108
|
运维 监控 数据可视化
小白也能部署应用,3个免费的容器化部署工具测评
本文对比了三款容器化部署工具:Docker Compose、Portainer 和 Websoft9。Docker Compose 适合开发者编排多容器应用,Portainer 提供图形化管理界面,而 Websoft9 则面向中小企业和非技术人员,提供一键部署与全流程运维支持,真正实现“开箱即用”。三款工具各有定位,Websoft9 更贴近大众用户需求。
小白也能部署应用,3个免费的容器化部署工具测评
|
Linux 网络安全 Docker
盘古栈云,创建带ssh服务的linux容器
创建带ssh服务的linux容器
581 146
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
959 52
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
存储 监控 Java
如何对迁移到Docker容器中的应用进行性能优化?
如何对迁移到Docker容器中的应用进行性能优化?
785 59
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
针对本地存储和 PVC 这两种容器存储使用方式,我们对 ACK 的容器存储监控功能进行了全新升级。此次更新完善了对集群中不同存储类型的监控能力,不仅对之前已有的监控大盘进行了优化,还针对不同的云存储类型,上线了全新的监控大盘,确保用户能够更好地理解和管理容器业务应用的存储资源。
1036 288
|
设计模式 开发者 UED
123. [HarmonyOS NEXT 实战案例一:SideBarContainer] 侧边栏容器实战:新闻阅读应用侧边栏布局 基础篇
在现代移动应用和平板应用中,侧边栏导航已经成为一种常见且实用的UI设计模式。HarmonyOS NEXT提供了专门的`SideBarContainer`组件来实现这一功能,它能够轻松创建可显示和隐藏的侧边栏布局,非常适合新闻阅读、电子商务、文件管理等应用场景。
629 3
123. [HarmonyOS NEXT 实战案例一:SideBarContainer] 侧边栏容器实战:新闻阅读应用侧边栏布局 基础篇
|
数据可视化 API UED
126. [HarmonyOS NEXT 实战案例二:SideBarContainer] 侧边栏容器实战:电商应用商品筛选侧边栏 进阶篇
在基础篇中,我们已经实现了电商应用商品筛选侧边栏的基本布局和功能。在本篇教程中,我们将深入探讨如何通过状态管理和数据绑定,实现更加复杂的交互功能,提升用户体验。
263 2
126. [HarmonyOS NEXT 实战案例二:SideBarContainer] 侧边栏容器实战:电商应用商品筛选侧边栏 进阶篇
|
UED 容器
125.[HarmonyOS NEXT 实战案例二:SideBarContainer] 侧边栏容器实战:电商应用商品筛选侧边栏 基础篇
在现代电商应用中,商品筛选功能是提升用户购物体验的关键元素。HarmonyOS NEXT提供的`SideBarContainer`组件非常适合实现这类功能,它可以创建一个可显示和隐藏的侧边栏,用于放置各种筛选条件,帮助用户快速找到心仪的商品。
318 1
125.[HarmonyOS NEXT 实战案例二:SideBarContainer] 侧边栏容器实战:电商应用商品筛选侧边栏 基础篇
|
UED 容器
124.[HarmonyOS NEXT 实战案例一:SideBarContainer] 侧边栏容器实战:新闻阅读应用侧边栏布局 进阶篇
在基础篇中,我们学习了如何使用HarmonyOS NEXT的`SideBarContainer`组件创建新闻阅读应用的基本侧边栏布局。本篇教程将深入探讨如何为新闻阅读应用添加更多交互功能和状态管理,提升用户体验。
283 1
124.[HarmonyOS NEXT 实战案例一:SideBarContainer] 侧边栏容器实战:新闻阅读应用侧边栏布局 进阶篇