OpenStack更新:最小化风险和停机时间

为了使OpenStack部署更平稳安全运行,更新和打补丁是非常关键的工作。但是要执行这些更新任务,IT团队要投入的时间精力远不只是按按开关就可以的。

OpenStack平台由大约30个不同的模块组成,其中每个模块都有着相当复杂的功能和要求。OpenStack的开发团队也是基于开源的,这有可能导致不平衡的测试、文档和代码质量。

这就要求IT团队必须定期执行OpenStack更新以避免影响系统运行的稳定性。在很多方面,那就如同是维护一个操作系统(如Windows)一样,需要将bug修复更新保持至最新和确保安全性处于最佳水平。

但是,Windows和OpenStack之间的区别在于后者仍然处于变化较快的发展期,尤其是不同模块的成熟度水平有着较大差异。OpenStack的重要版本发布频率大约为六个月,而微软的发布周期为2-4年。此外,由于OpenStack整体软件成熟度水平不高,功能集在不断发展,所以在重要版本之间的小版本发布也是非常频繁且复杂。

直到近来,用于执行OpenStack更新的首选方法都是使用命令行界面(CLI),这种方法对于单个服务器是很好的,但对于大型节点集群则显得效率低下。对于大型集群执行更新来说,出现错误和更新失败的几率则会显著提高。

执行OpenStack更新的最佳做法

在理想的OpenStack更新中,IT人员应体用所有节点,打补丁,然后重新启动整个配置——但这种方法会导致大量的停机时间。在实施具体更新之前仔细分析更新内容可以提供一种替代解决方案。

寻找那些不对其他模块有依赖性且不会实质性改变存储数据结构的模块。Bug修复是最常见的OpenStack更新,这类更新可滚动应用于所有节点。

如果OpenStack更新影响了跨模块的交互,那么IT团队就需要一起更新这两个模块。但是,难题在于任何节点都可能与其他任何节点进行交互。最安全的打补丁方法就是关闭所有节点。但是,如果跨模块更新涉及了可以关闭的功能,那么就可以安全地重新启动系统。然后,当集群更新时,可再次打开功能。

一般来说,最好是一次更新一个OpenStack模块,然后确定集群是否稳定和无错误。当错误修复出错时,区域化方法可实现更为简便的调试。

务必始终从已知和安全的来源获取更新代码包。这一原则也同样适用于实例与容器镜像、实例与容器中的应用程序和数据,以及OpenStack代码等。当OpenStack集群扩展规模并链接至公共云时,从安全黑客中识别和恢复可能是非常耗时的。

OpenStack更新的自动化选项

OpenStack社区牢记了Windows中的教训。例如,实现OpenStack更新过程自动化是非常有意义的,因为此举将有助于实现停机时间和风险的最小化。而相关的实现工具在一些OpenStack发布版本中。

Red Hat公司的OpenStack平台软件包就是一个典型的例子。这个软件包可处理所有主要的升级任务,以及一些次要的更新。Red Hat试图避免在非重要发布版本中进行功能变更,例如可能具有跨模块影响的API。

其他的供应商也正在解决这个自动化问题。Platform9可实现OpenStack升级的自动化,而惠普企业、戴尔科技以及IBM也纷纷加入此行列。其他的软件供应商则包括Stratoscale、NephoScale 和 Mirantis。考虑到通过CLI方式手工实现OpenStack升级这一方式的复杂性,管理员应当使用这些软件包中的一种来控制升级过程,从而进一步降低风险。虽然它们还不够完美,因为跨模块的依赖性仍然会是这一过程复杂化,但是它们确实有助于主要版本的升级和发布。

本文作者:Jim O'Reilly

来源:51CTO

时间: 2024-09-21 23:21:00

OpenStack更新:最小化风险和停机时间的相关文章

安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情(一)

安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情(一) CentOS 是一个工业标准的 Linux 发行版,是红帽企业版 Linux 的衍生版本.你安装完后马上就可以使用,但是为了更好地使用你的系统,你需要进行一些升级.安装新的软件包.配置特定服务和应用程序等操作. 这篇文章介绍了 "安装完 RHEL/CentOS 7 后需要做的 30 件事情".阅读帖子的时候请先完成 RHEL/CentOS 最小化安装,这是首选的企业和生产环境.如果还没有,你可以按照下面的指南,它

Skype Linux Alpha测试版更新到1.15版 增加了自动启动和启动最小化功能

微软已经更新了Skype Linux Alpha测试版,最新版本号是1.15,提供几个不同的新功能,并且修复了已知的bug,但是仍然缺失屏幕共享,重命名联系人等功能.Skype Linux Alpha测试版仍然在发展当中,频繁添加诸多新功能. 最新版本现在支持在系统启动的时候,自动启动应用程序本身,同时,用户也可以将自动启动最小化,Skype Linux Alpha版将在后台启动,而不会占据用户的屏幕.另外,Skype Linux Alpha 1.15版另一个特点是为消息输入区域提供一个稍微更精

如何最小化混合云中影子IT带来的风险

尽管云计算有很多的好处,但缺点也不可避免,影子IT就是其中之一.受到云计算的低成本驱使,影子IT作为一种服务模式,将传统IT和CIO的职能转移到企业的生产部门.尽管影子IT的风险在之前已经被讨论过,但一种新的风险正在发生,尤其是在混合云的环境中. 对许多公司来说,影子IT是一种将企业对于一个问题或者机会所作出的响应从一个高惯性的IT世界中解脱出来的方式.一个职能部门从云供应商那里购买计算服务,并根据业务需求调整服务.影子IT模型可能不会对每一个应用场景都适用,但它在每个企业中至少会对一些应用有效

最小化数据传输——在客户端存储数据

客户端|数据 将程序输出为其他的语言是程序员喜爱的事情之一,在WEB上我们有 两个不同编程环境:客户端(浏览器)和服务器端,根据HTTP协议的定义, 我们可以在编写在客户端输出其他语言的服务端程序,我们选择了作为服 务端语言.javascript作为客户端输出.在本问中我们将向您演示这样用 该方案把数据存储在客户端,并且在诸如:聊天室.新闻系统或其他您想 实现的应用上达到服务端和客户端(浏览器)的最小的数据传输. 要求以下支持:     PHP4     JavaScript     Frame

Effecitve C#原则46:最小化与其它非托管代码的交互

在开发设计.Net时,MS所做的最聪明的修改之一就是他们意识到,如果没有 办法整合已经存在的代码到新的.Net环境中,那没没有人会接受这个新的平台. MS知道,如果没有办法来利用已经存在的代码,这将阻止大家接受它.与其它非 托管代码的交互是可以工作了,但这是可交互唯一可以拿来说一下的有利的地方 .对于所有的交互策略,当操作流程在本地代码和托管代码之间的边界上进行传 送时,都要求强制提供一些 编组的信号.同时,交互策略强迫开发人员必须手 动的申明所有调用参数(译注:这里是说你根本不知道参数的数据类

生产服务器环境最小化安装后Centos 6.5优化配置备忘

生产服务器环境最小化安装后 Centos 6.5优化配置备忘 本文 centos 6.5 优化 的项有18处,列表如下: 1.centos6.5最小化安装后启动网卡 2.ifconfig查询IP进行SSH链接 3.更新系统源并且升级系统 4.系统时间更新和设定定时任 5.修改ip地址.网关.主机名.DNS 6.关闭selinux,清空iptables 7.创建普通用户并进行sudo授权管理 8.修改SSH端口号和屏蔽root账号远程登陆 9.锁定关键文件系统(禁止非授权用户获得权限) 10.精简

支持HTTP2的cURL——基于Alpine的最小化Docker镜像

本文讲的是支持HTTP2的cURL--基于Alpine的最小化Docker镜像[编者的话]本文详细地描述了如何构建一个支持HTTP2的cURL镜像,并且尽可能地降低镜像的体积. cURL是我喜欢的开源软件之一.虽然cURL的强大常常被认为是理所当然的,但我真心地认为它值得感谢和尊重.如果我们的工具箱失去了curl,那些需要和网络重度交互的人(我们大多数人都是这样的)将会陷入到困境中.curl速度快.体积小,并且和大多数好工具一样,简洁干净,尽量不影响用户,只做它们需要做的事情. 如果有人想使用c

最小化渲染组件

这篇文章我们主要聚焦在组件的渲染方法上,在上篇文章中,我们采用了innerHTML渲染组件,但是频繁更新组件的话,由于reflow,repaint等原因,页面的性能会下降,同时输入框的焦点也会丢失.最理想的方式就是哪些数据变化,我们更新哪块view,并且从外表上看还是整个区域全部更新.目前解决这个问题的方式有Virtual Dom和MVVM. Virtual Dom MVVM VirtualView Virtual Dom 以react为代表的框架采用了virtual dom的方法来进行页面的渲

YII AssetManager分析 最小化脚本文件

为什么用YII assets 1.assets的作用是方便模块化,插件化的,一般来说出于安全原因不允许通过url访问protected下面的文件 ,但是我们又希望将module单独出来,所以需要使用发布,即将一个目录下的文件复制一份到assets下面方便通过url访问 Java代码   $assets = Yii::getPathOfAlias('ext').'/css';   //$baseUrl = Yii::app()->getAssetManager()->publish($asset