沃尔玛如何使用 OneOps、Jenkins、Nexus 和 Kubernetes 管理 200+ 配送中心
国外案例
作者:Walmart Technology
译者:卢文泉
2017-01-12 09:40

沃尔玛物流的关键竞争优势之一是过去十年间沃尔玛一直努力保持配送中心高效和自主运行。自主运行涉及到硬件和软件基础设施,它们运行在全球两百多个配送中心中。每一个配送中心以及包含的内容被视为一个微型数据中心。
管理如此多的配送中心是一个复杂的物流问题,从软件更新到发布新软件和整套解决方案,每一步都提出全新的挑战。为了迎接这些挑战,沃尔玛科技正在努力将云的灵活性应用在配送中心。这项倡议的顶层目标包括:从底层基础设施中抽象出应用程序、快速部署新的企业解决方案和根据应用的工作负载情况提供无缝按需扩展的能力。每一个企业应用都应该实现功能自主,比如说配送中心。但是将一个类似于云的环境部署在不同网络的内部物流系统中并非易事。为了实现这些,沃尔玛科技整合了一些开源组件,它们每一个都令人印象深刻:OneOps、Kubernetes、Jenkins 和 Nexus。OneOps 是@沃尔玛实验室领导的开源项目,它在云不可知(译者注:云不可知,原词“cloud-agnostic”,只部署前不明确使用哪个云服务商)的环境中,提供一致的基础设施配置和交付机制。虽然沃尔玛科技已经使用 OneOps 管理其多个数据中心云环境,每天帮助部署超过1000次,但是配送中心还没有使用它。该计划目的在于改变这现状,将每个数据中心当作独立的云环境,使用 OneOps 配置底层的虚拟机和 Kubernetes 集群所需要的其它关键技术组件。


上图中,通过 Fog 适配器完成 OneOps 和 WMware vCenter 之间的集成。这项关键集成,允许现有物流中心继续使用已投资的 VMware 资源,对 DC 基础设施的改动最小。一旦这项集成支持虚拟机,OneOps 会接管新配置好的虚拟机,将 Kubernetes 生态系统运行在上面。这一便捷的方法意味着,无论应用程序是在云中还是内部,OneOps 能够促进企业间一致的基础设施管理体验。在决定使用 Kubernetes 之前,沃尔玛已成功在其配送中心应用开源软件(Nagios、Apache-httpd)。虽然这些开源软件相对有效地满足当前应用程序的需求。但是这些不同的产品需要定制配置和安装脚本来提供一个连贯的应用部署平台。随着应用程序向微服务风格架构转变,管理不同组件的开销增加,这使得架构转换更加困难。Kubernetes 已经证明它不仅可以满足之前开源软件提供的需求,而且它更高效、简单、容易管理。凭借谷歌多年云计算经验,Kubernetes 还提供了强大的 Docker 容器编排特性,帮助实现微服务架构。包括:

  • 将应用程序的部署更新管理抽象
  • 容器监控与健康检查
  • 网络隔离(Flannel)
  • 负载调度器
  • 自动伸缩
  • 每个应用或容器或 namespace 强制内存和 CPU 限制

Kubernetes 确保应用总是运行、充分利用本地资源。相对很少的开销就可以做到这一点:三台小型虚拟机,做冗余主节点即可。完整配置的集群提供应用程序运行所需要的一切。


Master 节点确保集群平稳运行,跟踪每一个组件的状态,处理部署更新的 API 请求;worker 节点依然忙着执行应用程序工作。NFS 服务器满足基于文件系统的本地共享功能。负载均衡节点,用于拦截、引导外部非 Kubernetes 流量到集群内部。一旦 Kubernetes 集群被 OneOps 配置好,每个集群通过钩子机制集成到基于 Jenkins 的持续交付工作流。这些工作确保应用程序被及时有效地交付到每一个配送中心。



把每个应用程序作为自己独立的微服务组件,Jenkins 不仅是一个快速高效的构建软件工具,它还是沃尔玛持续交付工作流的基础平台。单独的 Jenkins 不足以作为部署工具。任何基于 Docker 的方案都需要实体镜像仓库——Docker 二进制的单一“真实来源”。我们已经研究了 Nexus 对 Java、dotnet、linux RPMs 和最近基于 NPM 架构的产品。沃尔玛科技显而易见的方案是扩展 Nexus 的功能,让它支持 Docker 镜像仓库。此外,考虑到配送中心的自主属性,每个数据中心必须要有本地镜像仓库,这样既可以确保数据中心独立工作,也可以减轻外部网络流量。我们依然使用 Nexus,但是它构建成优化的 Docker 镜像,部署到每个数据中心的 Kubernetes 集群中。作为代理和缓存服务支持企业范围的镜像存储。



如上图所见,Jenkins 工作流中,以新版本 Docker 镜像的方式直接更新应用到企业的 Nexus 中。每个数据中心的 Kubernetes 集群从中心镜像仓库拉取、缓存最新的更新版本到本地文件系统。由此便形成了由 Kubernetes、Nexus、Jenkins 组成的完整的镜像管理基础设施。通过结合这些重要的开源软件产品,整合成完整的解决方案。沃尔玛科技能够提供现代物流系统所需的灵活性和隔离水平。开发团队也被授权根据物流伙伴的需求,选择合适的技术开发解决方案。沃尔玛物流的终端用户和管理人员都很开心,因为他们既可以使用物流中心现有的资源,提高了交付速度、系统运行时间和资源使用率。最后,沃尔玛的客户也从中受益,这个系统确保顾客常用的物品库存充足,价格低廉。




808 comCount 0