作者 | 孙琦

来源 | 万博智云

OpenStack是中国私有云的事实标准

根据三方统计报告,2020年,中国私有云市场规模达到951.8亿元,同比增长42.1%,私有云在国内IaaS市场占比约45%。私有云提供商有望在云计算市场持续高速发展进程中持续受益。

在中国的私有云企业排名中,以OpenStack为代表的开源技术占比70%,依然占据主流。作为全球部署最广泛的开源云基础设施软件,OpenStack经过10年的发展,在国内已经形成了稳定的以OpenStack为核心的开源云生态体系。尽管在近年来受到了容器等技术的冲击,但是在中国市场中越来越丰富、越来越成熟的用户实践案例表明,OpenStack开源云技术依然保持着足够的活力。然而随着产品版本迭代升级,各企业的私有云平台运营维护,升级改造的压力逐渐增大。

OpenStack为什么升级难?

虽然OpenStack目前已经成为大多数私有云的解决方案,但是做过OpenStack的人都知道,版本升级是OpenStack商业化应用最大的痛。每年两个新版本不说,随着版本升级,老旧的操作系统也不再支持,这样让用户更加不敢轻易的进行升级。虽然后续的OpenStack试图解决这个问题,但是在大多数情况下,商业版本OpenStack为了稳定,往往选择一个较为固定的OpenStack版本,持续进行迭代和优化,这样就带来和社区版本较大的差异,而无法进行升级。

之前看过360公司的一篇《横跨7个版本的OpenStack无感知热升级在360的落地与实践》,洋洋洒洒数千字描述了OpenStack升级的血泪史。对于一家技术实力积累雄厚的互联网公司尚且花费了如此大的代价,对于传统企业客户来说,这几乎就成为了心中永远的痛。在实际项目中,由于无法实现平滑升级,我们往往看到很多客户的环境部署着多套OpenStack不同版本的环境,而每一套都需要配备相应的运维团队,这就造成了客户和云平台厂商两难的尴尬局面。

“不识庐山真面目,只缘身在此山中”,大多数的解决方案专注于OpenStack本身,而今天这篇文章为大家带来一种不同视角的解决方案,从根本上解决OpenStack升级问题,无论你跨多少个版本,都可以完美的解决。

如何破局?

OpenStack升不动或者不敢升本质是云平台上有业务系统运行,所以我们本质上要解决在升级过程中,业务系统连续性的问题,那么最简单的方案就是将业务系统平滑的迁移至新的云平台上,为了防止大家失去耐心读完整篇文章,我先说解决方案:

  1. 业务系统迁移过程中不中断:利用主机块级别增量迁移方式(不是OpenStack原生的Live Migration),将主机从原有云平台迁移至新的云平台;

  2. 无代理方式:市面上90%以上的迁移方案都是需要在源端安装代理,那么如果用户云主机数量过多,一台台安装代理的成本也实在太高了,对于用户来讲需要一种无代理的方式来实现云平台之间的平滑迁移;

  3. 容灾渐进式迁移:按照最小规模部署新版本OpenStack,待主机逐步迁移至新平台后,将闲置计算节点重新加入回新资源池,同时在正式割接前,业务系统可以在新的云平台上统一演练,确保业务可以正常使用,数据完整;

  4. 重建管理信息:解决了数据的问题,云平台对应的租户、网络、安全组等资源可以通过导出导入的方式在新的平台上重新构建即可。

如何解决?

HyperMotion是一款基于云原生的迁移产品,基于块级别差量复制实现业务级别热迁移。在我们最初设计产品时,除了注重对云平台云原生能力的利用,还在产品中加入了“软件定义存储控制器”层,这样让HyperMotion不仅仅可以使用自身的数据流能力,还能够轻松使用开放的数据接口,从而实现云环境之间的“数据流转”。另外一方面,HyperMotion是从云端反向设计,不同于传统的灾备产品,更符合云平台管制的需求。

在本场景中,HyperMotion利用OpenStack接口和Ceph RBD接口实现了云主机热迁移问题,从而解决了OpenStack自身版本的困难,基本的原理如下图所示:

首先在旧版本OpenStack上,我们利用云主机构建一台源端同步代理节点,该节点一方面负责调用源端OpenStack API接口,另外一方面负责与Ceph RBD进行通讯,读取块级别差量数据。这种方案下,对于源端的网络有一定的要求,需要源端同步代理节点能够同时访问源端同步代理及Ceph存储网络。

每次同步时,为了不破坏OpenStack自有的管理体系,每一次的快照要从OpenStack层面进行调度,之后再去Ceph层读取数据,这样就不会产生垃圾数据。待数据读出后,通过加密、压缩等手段传输到目标平台。

在目标平台上,我们需要利用云主机资源再建立一台同步代理,用于接收数据。接收的数据并不直接写入Ceph中,而是利用云主机直接写入Cinder的磁盘中,这样做的目的仍然是符合OpenStack管制的需求。

每次写入完成后,利用Cinder快照机制,固化时间点数据,这样我们可以在正式割接前,进行反复的迁移演练,保证业务系统割接后能够正常使用。

最后,在割接窗口期,将最后的增量补全后,利用HyperMotion与OpenStack API的深度对接,按照指定规格同时指定IP地址进行启动,完成割接。

一句话总结一下,通过无代理,渐进式迁移,解决OpenStack版本升级过程中的业务连续性问题,是我们在大量私有云迁移实践中总结的一条行之有效的路径,给大家分享。

往期推荐

从 40% 跌至 4%,“糊”了的 Firefox 还能重回巅峰吗?

Gartner 发布 2022 年汽车行业五大技术趋势

别再用 Redis List 实现消息队列了,Stream 专为队列而生

漫画:什么是“低代码”开发平台?

点分享

点收藏

点点赞

点在看

OpenStack 如何跨版本升级相关推荐

  1. 滴滴ElasticSearch平台跨版本升级以及平台重构之路

    来自:滴滴技术 导读:滴滴 ElasticSearch 团队经过 7 个月的奋斗,将维护国内的 30 多个 ES 集群,2000 多个 ES 节点,4PB 的数据,从 2.3.3 跨大版本无缝升级到 ...

  2. sdk版本过低怎么办_滴滴ElasticSearch平台跨版本升级以及平台重构之路

    导读:滴滴 ElasticSearch 团队经过 7 个月的奋斗,将维护国内的 30 多个 ES 集群,2000 多个 ES 节点,4PB 的数据,从 2.3.3 跨大版本无缝升级到 6.6.1.完成 ...

  3. 红米k30 android版本,Redmi K30 Pro 推送 MIUI 12.2.1 稳定版:为安卓跨版本升级

    今日,Redmi K30 Pro 推送了 MIUI 12.2.1 稳定版内测更新.新系统基于 Android 11 深度定制,更新了 2020 年 10 月谷歌安全补丁. 需要注意的是,本次更新为安卓 ...

  4. linux跨版本升级,深度Deepin系统支持跨版本升级

    很多以前安装有深度Deepin系统的用户提问,我使用的是Deepin 15.4或者是15.5.15.6版本能不能升级到Deepin 15.8,答案是能.深度Deepin系统是支持跨版本升级的,而不限于 ...

  5. Elasticserch 5.6到Elasticsearch7.11跨版本升级踩坑记录

    Elasticserch 5.6到Elasticsearch7.11跨版本升级踩坑记录 1.背景 公司老的业务使用的是Elasticsearch5.6版本,使用的客户端是TransportClient ...

  6. Android SQLite数据库版本升级(分逐级升级和跨版本升级)

    参考:Android Sqlite数据库跨版本升级 保存之前数据 本文说的数据库升级是基于Android原生APISQLiteOpenHelper实现的逻辑,不涉及第三方库.其实如果使用官方推荐的Ro ...

  7. StudioOne6旗舰版DAW2023跨版本升级新功能介绍

    PreSonus2023发布了Studio One 6旗舰级DAW的跨版本升级.他们获奖的DAW软件的这一最新版本引入了大量的新功能和增强功能,包括用户界面的定制选项,PreSonus说这使第6版成为 ...

  8. 滴滴 Elasticsearch 集群跨版本升级与平台重构之路

    分享嘉宾:赵情融 滴滴专家工程师 编辑整理:王洪达 出品平台:DataFunTalk 导读:前不久,滴滴ES团队将维护的30多个ES集群,3500多个ES节点,8PB的数据,从2.3.3跨大版本无缝升 ...

  9. es集群搭建_滴滴Elasticsearch 集群跨版本升级与平台重构之路

    前不久,滴滴ES团队将维护的30多个ES集群,3500多个ES节点,8PB的数据,从2.3.3跨大版本无缝升级到6.6.1.在对用户查询写入基本零影响和改动的前提下,解决了ES跨大版本协议不兼容.文件 ...

最新文章

  1. 联邦学习:AI大规模落地又一革命性突破
  2. 短板效应C++代码实现
  3. 面试官问我:你们的数据库是怎么架构的?
  4. mysql镜像远程连接_docker 创建mysql镜像,并成功进行远程连接
  5. [Git] 常用的 git 命令
  6. c语言实现通讯录_C语言实现双人猜数字游戏
  7. 小程序js车牌号手机号正则表达
  8. Mysql安装+卸载教程
  9. ESP8266通过VS1838B 解码红外遥控器
  10. shift键计算机功能,电脑shift键常用快捷键使用攻略
  11. ubuntu20.04下内核源码下载分析
  12. ecshop模板中使用php,使ecshop模板中可引用常量的实现方法_php
  13. 财会法规与职业道德【1】
  14. 黑马“兔年限定”春节礼盒准时送达,快来领!
  15. .NET Core中Expression<Func<T,bool>>简洁明了
  16. 淘宝请求参数spm是做什么用的
  17. 大数据系统开发综合实践(淘宝双11大数据批处理分析系统、NBA 、淘宝购物大数据实时展示、Spark GraphX)
  18. 疫情之下,IT 培训品牌「 IT 兄弟连」宣告停工
  19. ***JLink Error: Supply voltage too low (1 Volt is required, Measured: 0.4 Volt).Please check target
  20. 【工具】vue excel导出

热门文章

  1. xpath获取标签的属性值_论xpath与css定位方式
  2. python创建虚拟环境时出现拒绝访问_无法创建虚拟环境
  3. python调用浏览器打开网页_python调用浏览器,实现刷网页浏览小程序!
  4. android 编辑自定义可编辑表格,smart 框架 列表 可编辑表格
  5. php 命名空间实现的原理,php命名空间实现的理解
  6. java激光图,java-OpenCV Android跟踪激光点
  7. layui 如何去dom_常用元素操作 - layui.element
  8. 加装的硬盘进入后点不了文件夹_在外接移动硬盘上制作win to go教程
  9. 博士哭诉自己入职深大7年,月薪不足3000开不起网课,望学校补助
  10. 美版知乎:没有美国和其他国家的许可,中国怎么能建造空间站?