容器化应用的服务可用性
来源:互联网 发布:网络摄像头服务器搭建 编辑:程序博客网 时间:2024/06/01 11:33
我作为软件工程师的第一份工作是在阿灵顿高地(Arlington Heights, IL)的摩托罗拉公司。工作是关于蜂窝基站软件(cellular base station software )开发,以前称作为跨无线协议状态管理(state management across different radio protocols)。对于电话软件,99.999%的服务可用性是必需具备的(例如每年只能有小于5.26分钟的故障宕机时间)。我在摩托罗拉和贝尔实验室的后续几年,学习了如何建立和运维高可用性系统。
在那个时代里(约为90年代中期),高可用性系统需要昂贵且复杂的硬件,并且每个组件都得有个随时可用的备份。现在事情则变得容易多了。可以使用各种常见的硬件主机来主从备份应用组件,建立高可用性的系统。此外,使用容器来部署和运维,我们还可以获得更快的系统恢复时间,如Kubernetes、Nirmata这样的智能缓冲、精致的容器管理工具能将系统恢复时间降低至几毫秒。
为了管理服务可用性,我们首先需要知道三件事:
哪个组件对服务来说至关重要
每个组件可能有哪些状态
如何定义和测量服务可用性
下图是Nirmata的部分领域实体(对象)图。如图所示,Nirmata收集和管理的信息既包含基础设施相关的对象(云供应商、主机、容器等),又包含软件应用对象(应用、服务等)。
建立一个优雅的状态模型需要及时更新每个对象的状态信息,同样重要的是需要对跨对象间的依赖和联系有深刻的理解。例如,由于主机重启导致某个服务不可用,那么这二者需要关联起来并进行上报。
这样的模型还能帮助我们区分严重问题与瞬间发生的故障。例如,某个容器的退出不会影响整个服务的可用性。实际上,服务编排引擎(orchestration engine)在多个服务实例上安排镜像滚动升级时,容器退出是正常的。
一旦我们知道了跟踪哪些实体,下一步就是定义和管理状态,及状态间的转换。在Nirmata,每个对象有两个主要状态和几个次要的过渡状态。主要状态有:
运维状态:这个状态代表对象当前是否可运维或者可以如何运维。例如“上线”、“下线”、“故障”组成了一个对象的可运维状态模型。
管理状态:这个状态是由用户或者管理员来管理的。例如,“关闭”、“暂停”是由用户触发的。
除了主要状态,每个对象可以有几个次要状态。这些状态是跟对象相关的,它们提供了更多的细节信息。例如,在Nirmata大多数管理的对象有“执行状态”,表示一个系统维护正在执行。
这里是一些在Nirmata中应用里服务有可操作状态:
正在运行:服务的所有实例健康并且正在运行
降级:服务的一些实例已经故障,或者正在执行某些操作
正在执行:服务的所有实例正在执行更改
故障:服务的所有实例已经产生故障
现在我们有了服务的状态模型,跟踪可用性就变得简单多了。在Nirmata,可用性是通过服务正在执行或降级时间占用总时间的比例来计算的。同样的方法也应用在应用级别的传播状态。未来版本,我们计划允许用户自己定义应用中每个服务如何被应用到整体的服务可用性计算中。
容器化微服务应用的可用性管理是复杂的,因为有很多项需要衡量和跟踪。而且,衡量系统可用性需要一个良好定义的状态模型。对象状态需要在跨物理设施和软件实体间可管理、可关联和可传播。
使用合适的系统管理平台,才有可能衡量、跟踪并报告服务、应用或者环境的可用性。运维人员通过聚焦于服务可用性,可轻易地实现“信噪分离”,只关注影响服务的问题。
作者: Jim Bugwadia
https://dzone.com/articles/service-availability-for-container-native-apps
翻译:姜俊厚
阅读推荐:
调查显示最常用的混合云是OpenStack+AWS
从Pike版本开始,OpenStack组件走上模块化易组合之路
投稿邮箱:openstackcn@sina.cn
- 容器化应用的服务可用性
- Rancher 中应用、服务、容器的概念
- 基于AWS云服务的容错和高可用性应用架构
- 搭建具有高可用性的互联网服务
- DEVOPS的支撑服务:K8S容器管理与应用部署
- 改善Java企业级应用的可用性
- 神奇的服务容器
- 如何保证服务可用性
- 应用服务器集群、可用性与无session的企业应用
- 如何实现Linux服务集群的高可用性(heartbeat)
- ZooKeeper--一个具有高可用性的高性能协调服务
- ZooKeeper--一个具有高可用性的高性能协调服务
- 服务高可用性及容灾的几个衡量指标
- centos7+LVS+KeepAlived实现Nginx服务的高可用性
- 利用dubbo和zookeeper搭建高可用性的SOA服务
- Web容器 、Web服务和应用服务器
- StringBuffer容器的应用
- 应用可用性衡量标准
- A "synchronized" statement for C++ like in Java
- 银行业容器云平台建设需求分析线上探索活动总结
- 开源技术职位需求大排名,你选对职业方向了吗?
- java文件下载
- 成本和复杂性是DevOps采用的最大障碍
- 容器化应用的服务可用性
- VMware Ubuntu安装详细过程
- Emgu.CV 运行sample 提示cvextern.dll找不到
- shell操作hbase
- 行人属性“HydraPlus-Net: Attentive Deep Features for Pedestrian Analysis”
- VSTO简介及发展
- [日推荐]『众跑联盟』懒癌拯救者
- mina prefixedDataAvailable
- APK签名之keytool生成keystore和jarsigner签名apk