文档章节

Shopify的Docker实战经验(一)用Docker和CoreOS构建内部云

DockOne
 DockOne
发布于 2015/02/05 08:50
字数 1409
阅读 204
收藏 5

这是系列文章的第一篇,介绍我们如何借助容器让服务器更易于扩展和管理,从而跟上业务需求的步伐。

containers-cropped_(1).jpg



关键元素是:

  • Docker:容器技术,使应用更加便携和易于管理

  • CoreOS:提供最小化的操作系统,便于流程规划和Docker容器的运行


Shopify是一个大型的Ruby on Rails应用程序,这些年底层做过大规模的扩展。我们的生产服务器扩容到使用1700个核以及6 TB内存,能支持每秒超过8000次的请求。

Docker备受瞩目,因为其能够将应用打包进便携的容器,从而实现版本控制和快速部署。

容器听上去很像虚拟机(virtual machine,VM),它有独立的文件系统、网络环境等等。但是容器又比虚拟机更加轻量,能够更高效地利用硬件资源。Docker容器不是像VM一样去模拟物理硬件的行为,而是允许多个应用程序安全地共享Linux宿主机器,通过:

  • 内核命名空间使应用间相互隔离

  • cgroups限制资源的上限并实现计费

  • 多层文件系统减少容器的大小


Docker在开发和维护团队中迅速走红,主要是因为:

  • 快速启动:容器可以快速启动和运行,只需要几秒时间。如果需要,可以利用容器构建的时间做一些其他耗时的操作。快速启动意味着快速部署。

  • 超高利用率:容器最大限度地共享宿主机器(比如,单核机器),相比VM能更为有效地利用硬件资源。这意味着在同样的硬件配置上可以运行更多应用。

  • 一致性:容器确保每个实例启动时是完全一致。

  • 开发友好的工作流:容器由纯文本的Dockerfile构建,Dockerfile可以做版本控制从而帮助区分容器版本。另外,开发人员可以用很熟悉很像git的push/pull操作来发布容器。

  • 运维友好的工作流:容器包含操作系统,因此,如果你需要安装一个package或者自定义的配置,开发人员就可以完成这项工作,而不需要推给运维人员。这是工作职责的重要改变:开发人员负责容器,运维人员则可以关注于提供可靠的硬件和网络。


最重要的容器特性是可以实现一机多用。做不同工作的容器可以在相同的硬件系统上和平共处。这使得数据中心真正成为普遍意义上的计算资源。比如:

  • 可以很快很容易地增加应用服务器容器的数量,这意味着我们随时可以应对突然的流量尖峰。

  • 可以轻松地拿出生产服务器的闲置资源去进行所需资源密集型的操作,比如数据分析。


听上去不可抗拒吧?我们也有同感,而且我们已经准备来分享我们的经验,如何将这些愿景变为生产级别的现实。我们不仅仅高谈阔论,我们还会在社区里分享尽可能多的代码。

这里有很多内容可以讲,我们将分期介绍:

  • 容器化:如何以一种能让自以为是的开发团队满意的方式,将已有应用放到容器里?

  • 管理诀窍:真实的应用包括很多API秘钥和数据库密码,这些都需要安全得保存(最好是能版本控制,并能在Heartbleed这样的事件再次发生的时候迅速把它们找出来)。我们在这里有不错的解决方案。

  • 路由:怎样将容器连接到外部世界,并能和生产环境的基础架构(比如负载均衡器)完美合作?

  • 监控:我们的容器化架构需要达到或者超越Shopify的99.97%的在线时长。维护系统时需要花费大量的工作在问题变得严重之前发现并解决它。在容器化的世界里解决这个问题需要和纯物理机环境不同的解决方案。调整已有的监控系统来监控新环境是保证Shopify稳定性的重要环节。

  • 健壮性:优雅且可预见地抛错很难。我们在处理内存耗尽(out-of-memory),请求队列化和signal处理上的经验可以供大家参考。

  • 部署:我们的系统构建在Chef和Ubuntu之上,现在计划更新为纯物理机上的CoreOS。之后会介绍我们如何部署节点使其能够运行容器,并且在全是容器的世界里实现高效监控。


敬请关注今后各个话题上更深入的探讨。


本文转载自:http://dockerone.com/article/170

DockOne
粉丝 8
博文 12
码字总数 5880
作品 0
海淀
私信 提问
阿里云ECS安装 CoreOS

没事重装了下阿里云的ECS,无意发现竟然有了 CoreOS 的选项,有点小激动,于是乎,果断选择安装尝试了下. 阿里云ECS安装 CoreOS 其他阿里云注册啥的就不多说了,来个主要的图说明下: 题外话 用 EC...

taadis
2017/05/29
325
0
CoreOS 称 Docker 有根本性缺陷,推出自己的容器引擎 Rocket

Docker 容器 是目前最热的容器技术之一,而 CoreOS 则是基于 Linux 的操作系统,主要用于大规模的服务器发布。CoreOS 使用 Docker 容器构建其服务,并对 Docker 项目做出巨大贡献。但今天该公...

oschina
2014/12/02
8.6K
39
为什么CoreOS和Docker的分手是命中注定的

"韦恩·格雷茨基曾说过:“我总是溜向冰球将达到的点,而不是追逐它曾在的地方。” 关于Docker是否应该扩大产品的边界以扩张CoreOS的集群管理范围的争论由来已久,这也直接导致了CoreOS开发了...

七牛云
2014/12/04
2.9K
12
CoreOS 获得来自 Google 的 1200 万美元投资

CoreOS 是一个以 Docker 容器为核心的 Linux 发行版,用于大规模服务器发布。CoreOS 今天 宣布 获得来自 Google Ventures 领投 Kleiner Perkins Caufield & Byers, Fuel Capital 和 Accel Pa...

oschina
2015/04/07
5.1K
19
十大基于 Docker 的开发工具

随着Docker的发展,Docker的生态圈也越来越成熟,GitHub上出现了很多与Docker相关的开源项目。CenturyLink在其博客上总结了基于Docker的10个开发工具,主要集中在PaaS平台、集群管理、持续集...

lateron
2014/08/23
8K
8

没有更多内容

加载失败,请刷新页面

加载更多

Qt编写自定义控件69-代码行数统计

一、前言 代码行数统计主要用来统计项目中的所有文件的代码行数,其中包括空行、注释行、代码行,可以指定过滤拓展名,比如只想统计.cpp的文件,也可以指定文件或者指定目录进行统计。写完这...

飞扬青云
23分钟前
4
0
驰骋工作流引擎-ccflow关于 “ 是否自动计算未来的处理人”的功能变更

关键字:流程未来节点处理人 工作流快速开发平台 工作流流设计 业务流程管理 asp.net 开源工作流 业务背景:一个流程在启动起来后,是可以对一些节点计算出来处理人是谁,流程的走向。对于另...

孟娟
39分钟前
5
0
IT兄弟连 HTML5教程 HTML5表单 HTML表单设计1

表单是PHP程序中最常使用的收集站点访问者信息的数据输入界面。通过表单浏览器获取用户的输入数据,并传送给Web服务器的脚本程序中,以各种不同的方式进行处理。在表单中提供了多种输入方式,...

老码农的一亩三分地
40分钟前
4
0
武者Vue

本文转载于:专业的前端网站➼武者Vue 1 - Introduction2 - The Vue Instance3 - Data & Methods4 - Data Binding5 - Events6 - Event Modifiers7 - Keyboard Events8 - Two-Way Data......

前端老手
46分钟前
6
0
uni app 零基础小白到项目实战

$emit 子组件传给父组件$ref 父组件操作子组件 公用模板 uni-app全局变量的几种实现方法 const websiteUrl = 'http'const now = Date.now || function() { return new Date().getTime......

达达前端小酒馆
56分钟前
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部