沃尔玛如何使用OneOps、Jenkins、Nexus和Kubernetes管理200+配送中心-阿里云开发者社区

开发者社区> 猫饭先生> 正文

沃尔玛如何使用OneOps、Jenkins、Nexus和Kubernetes管理200+配送中心

简介: 本文讲的是沃尔玛如何使用OneOps、Jenkins、Nexus和Kubernetes管理200+配送中心【编者的话】本文介绍了沃尔玛公司针对全球200+配送中心云化升级的具体情况,包括使用的方案、如何处理原来的虚拟机资源以及改造后的成效。
+关注继续查看
本文讲的是沃尔玛如何使用OneOps、Jenkins、Nexus和Kubernetes管理200+配送中心【编者的话】本文介绍了沃尔玛公司针对全球200+配送中心云化升级的具体情况,包括使用的方案、如何处理原来的虚拟机资源以及改造后的成效。

沃尔玛物流的关键竞争优势之一是过去十年间沃尔玛一直努力保持配送中心高效和自主运行。自主运行涉及到硬件和软件基础设施,它们运行在全球两百多个配送中心中。每一个配送中心以及包含的内容被视为一个微型数据中心。

管理如此多的配送中心是一个复杂的物流问题,从软件更新到发布新软件和整套解决方案,每一步都提出全新的挑战。为了迎接这些挑战,沃尔玛科技正在努力将云的灵活性应用在配送中心。这项倡议的顶层目标包括:从底层基础设施中抽象出应用程序、快速部署新的企业解决方案和根据应用的工作负载情况提供无缝按需扩展的能力。每一个企业应用都应该实现功能自主,比如说配送中心。

但是将一个类似于云的环境部署在不同网络的内部物流系统中并非易事。为了实现这些,沃尔玛科技整合了一些开源组件,它们每一个都令人印象深刻:OneOps、Kubernetes、Jenkins和Nexus。

OneOps@沃尔玛实验室领导的开源项目,它在云不可知[译者注:云不可知,原词“cloud-agnostic”,只部署前不明确使用哪个云服务商]的环境中,提供一致的基础设施配置和交付机制。虽然沃尔玛科技已经使用OneOps管理其多个数据中心云环境,每天帮助部署超过1000次,但是配送中心还没有使用它。该计划目的在于改变这现状,将每个数据中心当作独立的云环境,使用OneOps配置底层的虚拟机和Kubernetes集群所需要的其它关键技术组件。(如下图)
01.png

上图中,通过Fog适配器完成OneOps和WMware vCenter之间的集成。这项关键集成,允许现有物流中心继续使用已投资的VMware资源,对DC基础设施的改动最小。一旦这项集成支持虚拟机,OneOps会接管新配置好的虚拟机,将Kubernetes生态系统运行在上面。这一便捷的方法意味着,无论应用程序是在云中还是内部,OneOps能够促进企业间一致的基础设施管理体验。

在决定使用Kubernetes之前,沃尔玛已成功在其配送中心应用开源软件(Nagios、Apache-httpd)。虽然这些开源软件相对有效地满足当前应用程序的需求。但是这些不同的产品需要定制配置和安装脚本来提供一个连贯的应用部署平台。随着应用程序向微服务风格架构转变,管理不同组件的开销增加,这使得架构转换更加困难。

Kubernetes已经证明它不仅可以满足之前开源软件提供的需求,而且它更高效、简单、容易管理。凭借谷歌多年云计算经验,Kubernetes还提供了强大的Docker容器编排特性,帮助实现微服务架构。包括:

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

Master节点确保集群平稳运行,跟踪每一个组件的状态,处理部署更新的API请求;worker节点依然忙着执行应用程序工作。NFS服务器满足基于文件系统的本地共享功能。负载均衡节点,用于拦截、引导外部非Kubernetes流量到集群内部。

一旦Kubernetes集群被OneOps配置好,每个集群通过钩子机制集成到基于Jenkins的持续交付工作流。这些工作确保应用程序被及时有效地交付到每一个配送中心。
03.png

把每个应用程序作为自己独立的微服务组件,Jenkins不仅是一个快速高效的构建软件工具,它还是沃尔玛持续交付工作流的基础平台。

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

如上图所见,Jenkins工作流中,以新版本Docker镜像的方式直接更新应用到企业的Nexus中。每个数据中心的Kubernetes集群从中心镜像仓库拉取、缓存最新的更新版本到本地文件系统。由此便形成了由Kubernetes、Nexus、Jenkins组成的完整的镜像管理基础设施。

通过结合这些重要的开源软件产品,整合成完整的解决方案。沃尔玛科技能够提供现代物流系统所需的灵活性和隔离水平。开发团队也被授权根据物流伙伴的需求,选择合适的技术开发解决方案。沃尔玛物流的终端用户和管理人员都很开心,因为他们既可以使用物流中心现有的资源,提高了交付速度、系统运行时间和资源使用率。最后,沃尔玛的客户也从中受益,这个系统确保顾客常用的物品库存充足,价格低廉。

原文连接:Walmart Will Manage 200-Plus Distribution Centers With OneOps, Jenkins, Nexus and Kubernetes(翻译:adolphlwq)

=========================================
译者介绍

adolphlwq,博客地址:QuanTalk

原文发布时间为:2016-11-13

本文作者:adolphlwq

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:沃尔玛如何使用OneOps、Jenkins、Nexus和Kubernetes管理200+配送中心

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
C#.NET使用Task,await,async,异步执行控件耗时事件(event),不阻塞UI线程和不跨线程执行UI更新,以及其他方式比较
原文:C#.NET使用Task,await,async,异步执行控件耗时事件(event),不阻塞UI线程和不跨线程执行UI更新,以及其他方式比较 使用Task,await,async,异步执行事件(event),不阻塞UI线程和不跨线程执行UI更新   使用Task,await,async 的异步模式 去执行事件(event) 解决不阻塞UI线程和不夸跨线程执行UI更新报错的最佳实践,附加几种其他方式比较 由于是Winform代码和其他原因,本文章只做代码截图演示,不做界面UI展示,当然所有代码都会在截图展示。
3317 0
使用 Kustomize 帮你管理 kubernetes 应用(三):将 Kustomize 应用于 CI/CD
本篇为系列文章第三篇,使用 jenkins 发布一个简单的使用 flask 写的 web 项目,来演示在 CI/CD 流程中 Kustomize 的简单使用。
2102 0
如何使用Terraform管理容器服务Kubernetes集群之-标准版集群
#### 介绍 Terraform 是一款 Infrastructure as Code 的工具,可以将云端资源代码化。关于 Terraform 的基本介绍本文不再赘述,有兴趣的同学可以参考 [《云生态下的基础架构资源管理利器Terraform》](https://yq.aliyun.com/articles/215592) 等云栖社区的优秀文章。
985 0
usermod命令/用户密码管理/mkpasswd命令
3.4 usermod命令  3.5 用户密码管理 3.6 mkpasswd命令 usermod命令   设置用户uid: usermod  -u  111 username 设置用户gid usermod  -g   gid   username 设置用户家目录 usermo...
1067 0
Virgin Hyperloop One如何使用Koalas将处理时间从几小时降到几分钟--无缝的将pandas切换成Apache Spark指南
Koalas项目基于Apache Spark实现了pandas DataFrame API,从而使数据科学家能够更有效率的处理大数据。一份代码可以同时在pandas(用于测试,小数据集)和Spark(用于分布式datasets)两个平台上运行。
1141 0
iOS6和iPhone5使用第三方静态库在真机无法运行的处理
环境: xcode5.1 ios7 在模拟器下正常运行的程序,在真机上出现下面的错误: ld: file is universal (3 slices) but does not contain a(n) armv7s slice: /Users/david/Downloads/QR code/QR code/ZBarSDK/libzbar.a for architecture armv7s 上面的提示是使用的libzbar这个库不支持armv7s。
751 0
+关注
350
文章
1300
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载