谈 OpenStack 与 Docker 的落地方案选择

转自: https://www.sdk.cn/news/5086


OpenStack & Docker 综述


时至今日,云计算已经从概念、评估而逐步进入了 Gartner 定义的复苏期 (Slope of Enlightenment) ,逐步在企业中落地推广。而云计算中热门的两个技术 OpenStack 与 Docker也早已是企业中不可或缺的技术话题,看看国内围绕两大技术的创业公司、技术Meetup、技术大会以及各联盟组织就可见一斑。Google Trends 的趋势曲线也印证了两大技术的火热情况:

图 1 OpenStack & Docker Google Trends

先简单回顾一下两大技术的历史和现状:

OpenStack 起源于2010年7月的 Austin 版本,作为典型的云计算 IaaS 层的具体实现工具,在与当年的 OpenNebula、CloudStack 的血拼中脱颖而出。通过命名为 Nova、Neutron、Keystone、Glance 等各组件实现对裸机、虚机、块存储、对象存储、文件目录、网络、负载均衡、防火墙等数据中心基础架构的统一调度管理,目前已经发布到 M 版本,形成了较强的开源生态圈和产业链,同时也成为了国内企业开源私有云构建的事实首选。

Docker 起源于2013年3月的首版,是基于LXC为基础构建的容器引擎,通过 Namespace 和 Cgroup 实现了资源隔离和调配,使用分层存储来构建镜像,这些特性实现了将 OS 和应用捆绑的方法,直接造成了整个玩法的变革,使得应用系统环境标准化、集装箱化传递成为现实。如果说 OpenStack 只能让数据中心的架构师、系统网络工程师兴奋的话,那么 Docker 则是可以让开发、测试、应用运维、系统网络工程师都兴奋的东西(从曲线的热度即可印证),同时随着DevOps、CI/CD、微服务的火热,Docker 正好是实现上述名词的极佳载体。由于 Docker 本身是缺乏集群调度、管理、监控、服务注册发现等集群化运行管理能力的,因此目前也存在三种主流的 COEs(Container Orchestration Engines) 容器调度引擎:原生的 Docker Swarm、Google 的 Kubernetes(Borg 简化版)以及 Apache Mesos,这三种主流的 COEs 目前还在都还在发展中,下图为 Google Trends:

图 2 Kubernetes & Mesos & Docker Swarm Google Trends

OpenStack & Docker 的融合开源技术方案


Nova Docker


图 3 Nova Docker 方案,来源:OpenStack官网 Wiki

该方案将容器像 VM 一样操作,通过增加 Nova Docker driver,实现对 Docker容器的启停、创建等常规 VM 的操作,可以通过 Docker save 方式将镜像存放在 Glance 之中,该种方案很大的好处在于可以使用现成的 OpenStack Neutron 来管理网络、实现租户的资源配额、使用 Host OS(注:此处不等于 BareMetal )等 OpenStack 的天然好处。然而缺点也明显,没法使用 Docker/COEs 带来的更有价值功能,例如服务发现、端口映射等。国内某大型电商就使用的该方案。该方案是早期的集成方案。目前已经不在官方版本中。参考 https://wiki.openstack.org/wiki/Docker

Zun


社区的新项目,6月刚刚起步。目标在于解决 Nova Docker 方案存在的问题,独立于 Nova 之外实现 Docker 部署调度框架,自身实现与 Glance、Neutron、Cinder等组件的集成。然而并不实现对COEs的部署调度。该项目由国内民族 IT 企业社区活跃大神主导,参考 https://wiki.openstack.org/wiki/Zun

图 4 Zun方案,来源:https://wiki.openstack.org/wiki/Zun

Heat Docker plugin


图 5 Heat Docker plugin 方案,来源 GitHub

该方案不依赖于 Nova 的调用,而是通过 OpenStack 编排组件 Heat 进行编排调用,通过使用 Heat Docker plugin 在创建的 VM 上使用 Heat Templates 设定 Docker 的参数,这样则可以使用 Docker API 提供的所有功能,缺点在于 VM 上使用 Docker,无法实现资源调度,需要较多的配置工作,无法实现规模集群管理 。参考 https://github.com/MarouenMechtri/Docker-containers-deployment-with-OpenStack-Heat

Magnum


在14年的 Nove Docker 及 Nove Heat plugin 总是不够完美的情况下,社区于15年3月推出了 Magnum 版本。通过管理 COEs,将 COEs 作为服务进行提供。同时在15年的官方白皮书中也再次发布了容器与 OpenStack 的未来:通过 Magnum 管理在 VM 及 BareMetal 上提供 COEs 的服务。

图 6 OpenStack 与 COEs 的规划,来源:OpenStack 白皮书

图 7 Magnum 架构图,来源:https://wiki.openstack.org/wiki/Magnum

现在的 Magnum 的架构图如上,目前对 Swarm、Kubernetes、Mesos 均可以支持。通过定义 Bay、Node、Pod 映射为 COEs 的集群、Pod 的实现,完成对 COEs 的部署调度,由 COEs 调度部署 Docker,可以理解成 COEs as a service 的实现。通过 OpenStack现有的 Heet、Nova、Heat、Neutron、Glance 和 Keystone 等组件实现租户、编排、镜像、认证、网络等其他功能管理功能。现有的方案还不能实现在 BareMetal 上的部署。网络方案一直是各种集成解决方案的重中之重,目前 Magnum 主要为通过与 COEs 的 Flannel 的 Overlay 方案,存在一定性能问题,同时由于现有 COEs 的网络方案还存在多样性和变数,因此存在需要多种驱动的逐一实现的问题。

不过毕竟 Magnum 是 OpenStack 官方主攻的容器集成方案,因此有大量的贡献者在完善该项目,通过 Magnum 的 Blueprints 可以看到即将发布(10月)的 OpenStack Newton 版本将进行大量的更新,其中重要的在裸机上部署COEs将得到完全支持:

图 8 Magnum Blueprints,来源:https://blueprints.launchpad.net/magnum

Kuryr


刚才提到了由于 COEs 网络方案的多样性与变数,因此社区专门孵化了 Kuryr 项目,该项目用于实现 Neutron 与 Docker/COEs 网络的驱动映射工作,未来可成为 Magnum 网络的选择,实现容器网络的功能性能加强。参考 https://wiki.openstack.org/wiki/Kuryr

图 9 Kuryr 架构图,来源:https://wiki.openstack.org/wiki/Kuryr

Kolla


前面谈到的方案均是 OpenStack 怎么与 COEs/Docker 结合,提供不同形式的混合负载给上层使用的需求,而 Kolla 则是用于实现 OpenStack 这个“庞大复杂“的管理工具自身的部署/升级/维护的。虽然 OpenStack 也有许多的自动化运维项目,如 Fuel、Ansible、Puppet 等项目,然而随着 OpenStack 的日益发展和被管理的节点及环境日志扩张,在庞大的生产系统长期维护和运行一套/多套 OpenDtack(Day 2 Operations) 也会日渐成为严重的问题。而随着容器化的发展,OpenStack 社区也想到自身使用容器进行部署将不仅解决上述问题,也证明自己充分拥抱容器的决心。

图 10 Kolla 架构,来源:https://wiki.openstack.org/wiki/kolla

目前 Kolla 通过容器化绝大部分的 OpenStack 组件,并通过 Ansible 来实现配置自动化管理。实现 OpenStack 自身的容器化管理。未来也会逐步成为国内企业 OpenStack 的管理方案首选。参考 http://docs.openstack.org/developer/kolla/

以上所描述的方案是无论是完美的还是有缺陷的,也无论方案现在是否热门主流,对于在开源社区分享贡献开源技术方案的个人或团队都是值得钦佩与尊敬的。

落地方案的选择


想要进行数据中心整体资源管理调度,实现裸机、VM、容器、LB、FW、Storage 等多层级服务,可以参考以下落地方案进行选择:

OpenStack 与 Docker 都没有部署


等 OpenStack Newton 版本出来再开始试用,也不需要等太久。那时 Magnum 将更成熟,且支持裸机的部署,同时 COEs 也都会有一定进展,可以更清晰的选择 COEs。

已经部署了 OpenStack ,等不急 Newton 版本


OpenStack 的大版本生产升级本身就是个工程,因此 OpenStack 与 COEs 的部署建议从物理上分开,各自部署各,当然可以在前端 UI 上进行整合。在 newton 发布后进行迁移及升级评估,看是否能较无缝进行后端技术方案集成升级。

已经独立部署了 COEs 其中的一种,是否还需要 OpenStack


OpenStack 最大的用处是实现整个数据中心基础架构的管理,比如硬件服务器、存储、负载均衡、SDN 硬件、防火墙等,已经有大量的软硬件厂商与其实现了驱动集成,因此如果考虑的是整个数据中心的整体调度管理的话,则可选用OpenStack Magnum + COEs的方案。如果考虑的是上层的 PaaS 层的资源调度及管控以及 CI/CD ,则还是坚持只使用 COEs。

开源世界唯一不变的是变化,所以无论选择哪种方式都必定会踩很多坑,需要做好充分的技术准备或者找到合适的合作伙伴,充分评估自己的需求及选择合适的技术方案。

作者简介:陈爱珍 ,七牛云布道师。多年企业级系统的应用运维及分布式系统实战经验。现专注于容器、微服务及DevOps落地的研究与实践。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作者:int32bit 链接:https://www.zhihu.com/question/54549481/answer/141308600 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 基于OpenStack的论文国内外还是不少的,参考IEEE Xplore Search Results,毕竟火了那么多年,而且无论你偏系统还是偏研究都能写,但是纯粹写OpenStack部署的论文估计不多,除非你自己开发了一套自动化部署工具,比现有的Puppet、Ansible、Tripleo、Fuel、Kolla都要好,大多论文都需要与其它技术或者应用场景相结合,否则你的研究背景和意义都不知道怎么入手。偏系统的论文诸如基于OpenStack的xx系统(或者平台)设计与实现,xx可以是各种场景化的云系统,比如xx替换为视频监控云,则标题变为基于OpenStack的视频监控云平台设计与实现,你可以传统视频监控系统的各种问题,然后突出你设计的基于OpenStack的视频监控云平台的优势。为了演示,做个漂亮高大上的Web界面,直接拿Horizon去展示,怕要被导师拍死。偏研究的话,你可以针对某一个点展开,通常就是优化了,比较多的研究点包括调度算法优化、在线迁移优化、负载均衡优化、计算性能优化、虚拟化性能优化、能源损耗优化等,尤其是调度算法,你可以联想抽象出各种问题,比如装箱问题、启发算法、遗传算法都能套,优点也好写,要么提高了资源利用率,要么节约了能源(还可以结合绿色计算写)。当然,你也可以针对OpenStack开发一套自己的系统,比如集成测试系统、故障检测、bug发现等,之前看过一篇不错的论文,等找到了再补充。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值