点将台:2015 年最佳开源数据中心和云计算软件

 

点将台:2015 年最佳开源数据中心和云计算软件

2015-09-18 开源中国

 

知名 IT 杂志《InfoWorld》评选出了年度最佳开源平台、基础设施、管理和编排软件。docker

 

最佳开源数据中心和云计算软件数据库

 

你可能已经据说过 Docker 容器这项新技术。开发人员很喜欢它,由于能够用脚原本构建容器,添加一层层服务,并直接从 MacBook Pro 将它们推送到服务器进行测试。容器之因此切实可行,是由于它们超轻量级,不像那些如今已通过时的虚拟机。容器以及交付服务的其余轻量级方法正在改变操做系统、应用程序及管理工具的格局。这份榜单上的最佳数据中心和云计算软件更是其中的佼佼者。编程

 

Docker MachineComposeSwarm

Docker 的开源容器技术已经获得了各大公有云的采用,正内置到 Windows Server 的下一个版本中。Docker 是一款功能强大的数据中心自动化工具,让广大开发人员和运营团队得以将应用程序与基础设施分开来。设计模式

 

然而,容器只是 Docker 生态系统的一部分。Docker 还提供了一系列工具,让你可使用 Docker API,让容器的整个生命周期实现自动化,另外可自动处理应用程序的设计和编排。浏览器

 

Machine 让你能够实现 Docker 容器配置自动化。从命令行开始入手,你可使用一行代码,锁定一个或多个主机,部署Docker 引擎,甚至将它加入到 Swarm 集群。支持大多数虚拟机管理程序和云平台,你只须要本身的访问凭据。安全

 

Swarm 处理集群和调度,还能够与 Mesos 整合起来,提供更高级的调度功能。你可使用 Swarm 创建容器主机池,那样需求增长时,应用程序能够相应扩展。应用程序及全部依赖项均可以用 Compose 来定义,它让你能够把诸容器链接起来,连入到一个分布式应用程序,做为一个组来启动。Compose 描述可适用于诸平台,那样拿来开发人员的配置后,可迅速部署到生产环境中。服务器

 

CoreOSRKT

CoreOS 是一种瘦薄的轻量级服务器操做系统,基于谷歌的 Chromium OS。它旨在与 Linux 容器结合使用,而不是使用程序包管理器来安装功能。经过使用容器来扩展瘦薄的核心,CoreOS让你能够快速部署应用程序,在云基础设施上顺畅运行。网络

 

CoreOS 的容器管理工具fleet旨在把CoreOS服务器集群看成单个部件来对待,相应工具可用来管理高可用性,并根据资源可用性,将容器部 署到集群。跨集群键/值存储系统 etcd 负责处理设备管理,并支持服务发现。若是某个节点出现故障,etcd就能在新的副本上迅速恢复状态,提供一个链接到 CoreOS 自动化更新服务的分布式配置管理平台。架构

 

虽然 CoreOS 也许因支持 Docker 而家喻户晓,但 CoreOS 的团队正在开发本身的容器运行时环境 rkt,有本身的容器格式:应用容器映像 (App Container Image)。rkt 还与 Docker 容器兼容,采用了模块化架构,容许不一样的容器化系统(甚至硬件虚拟化系统)能够插入。然而,rkt 仍处于发展的早期阶段,因此尚未彻底准备好用于生产环境。并发

 

RancherOS

因为咱们使用容器从底层操做系统抽取愈来愈多的服务,开始随之考虑将来的操做系统会是什么样子。相似咱们的应用程序,将来的操做系统将会是在瘦薄内核上运行的一组模块化服务,能够自我配置,只提供应用程序所需的服务。

 

咱们能够从 RancherOS 领略将来操做系统的模样。RancherOS 结合了 Linux 内核和 Docker,是一种极简操做系统,适合将基于容 器的应用程序托管在云基础设施中。RancherOS 利用 Docker,将 Linux 用户空间服务和应用程序托管在不一样的容器层中,而不是使用标准的 Linux 包装技术。低级别的 Docker 实例先启动,将系统服务托管在各自的容器中。用户的应用程序在较高级别的 Docker 实例中运行,独立于系统容器。即便其中一个容器崩溃了,主机照样正常运行。

 

RancherOS 只有 20MB 大小,因此很容易在整个数据中心中进行复制。它还旨在使用自动化工具加以管理,而不是人工管理,API 级访问既适用于 Docker 的管理工具,又适用于 Rancher Labs 本身的云基础设施和管理工具。

 

Kubernetes

谷歌的 Kubernetes 容器编排系统旨在管理和运行用 Docker 和 Rocket 容器构建的应用程序。Kubernetes 专一于管理微服务应用程序,让你能够跨主机群集分发容器,同时处理扩展问题,确保托管的服务可靠地运行。

 

因为容器提供了应用程序抽象层,Kubernetes 是一种以应用程序为中心的管理服务,支持许多现代开发模式,侧重于用户意图。这意味着你启动应 用程序后,Kubernetes 会管理容器,以便容器在你设定的参数范围内运行,并使用 Kubernetes 调度器,确保它得到所需的资源。容器被分红了 一个个 pod,由复制引擎加以管理。该引擎能够恢复出现故障的容器,或者应用程序增长时,添加更多的 pod。

 

Kubernetes支持谷歌本身的容器引擎(Container Engine),它能够在一系列其余的云和数据中心服务上运行,包括AWS 和 Azure,以及 vSphere 和Mesos。容器能够松散耦合或紧密耦合,那样不是为云平台即服务(PaaS)运营环境设计的应用程序能够做为一组紧密耦合的容器,迁移到云端。Kubernetes 还支持将应用程序快速部署到群集,为你提供了实现持续交付过程的端点。

 

Mesos

将数据中心变成私有云或公有云不只仅须要虚拟机管理程序,还须要一种新的操做层,能够管理数据中心资源,就好像它们是单一计算机,处理资源和调度。Apache Mesos 被称为是一种“分布式系统内核”,让你能够管理成千上万台服务器,使用容器来托管应用程序和 API,支持应用程序并行开发。

 

Mesos 的核心是一组守护进程,将资源暴露在中央调度程序面前。任务跨节点分发,充分利用可用的处理器和内存资源。一个关键方法是,要是提供的资源知足不了要求,应用程序能够拒绝这些资源。这种方法很适用于大数据应用,你可使用 Mesos 运行 Hadoop 和 Cassandra 分布式数据库,还有Apache 本身的 Spark 数据处理引擎。还支持 Jenkins 持续集成服务器,让你能够在服务器集群上并行运行构建 worker 和测试worker,并根据工做负载的大小,动态调整任务。

 

Mesos 设计成可在 Linux 和 Mac OS X 上运行,最近还被移植到 Windows 上,以支持在 Azure 平台上开发可扩展的并行应用程序。

 

SmartOSSmartDataCenter

Joyent 的 SmartDataCenter 是一款运行其公有云的软件,在 SmartOS 瘦服务器操做系统上面添加了一个管理平台软件。SmartOS 是 OpenSolaris 的后续版本,结合了 Zones 容器和 KVM 虚拟机管理程序,这是一种内存中的操做系统,可从U盘快速启动,能够在裸机服务器上运行。

 

使用 SmartOS,你能够快速部署一组轻量级服务器,这些服务器可经过一组JSON API,以编程的方式加以管理,而功能经过虚拟机来交付,由内置的映像管理工具来下载。经过使用虚拟机,全部用户空间(userland)操做与底层操做系统隔离开来,减少了主机和访客的安全隐患。

 

SmartDataCenter 在 SmartOS服务器上运行,一台服务器做为专用管理节点来运行,集群的其他服务器做为计算节点来运行。能够从笔记本电脑上的云版本(这是一种 VMware 虚拟设备)开始入手,于是能够试用管理服务器。在实际数据中心,你将把 SmartOS 部署到服务器上,使用ZFS 来处理存储这包括本地映像库。服务做为映像来部署,而各组件存储在对象库中。

 

SmartDataCenter 和 SmartOS这个组合改善了 Joyent公有云的体验,提供了一套屡试不爽的工具,能够帮助你启动本身的云数据中心。这个基础架构专一于现在的虚拟机,但也为明天的虚拟机奠基了基础。一个相关的Joyent 项目 sdc-docker 将整个SmartDataCenter 集群暴露为单单一个 Docker 主机,受原生 Docker 命令的控制。

 

Sensu

管理大规模数据中心的关键不是使用服务器的图形用户界面(GUI),而是根据来自监控工具和服务的信息,自动编制脚本,转发来自传感器和日志的信息,而后将操做/行动告知应用程序。Sensu 就是开始提供这种功能的一个工具,它经常被称为“监控路由器”。

 

在数据中心中运行的脚本将信息发送给 Sensu,而后 Sensu 再将信息发送给相应的处理程序,使用一种基于 RabbitMQ 的发布/订阅架构。服务器能够呈分布式,将发布的检查结果发送给负责处理的代码。你能够在电子邮件、Slack 房间或 Sensu 本身的仪表板中查看结果。消息格式由 JSON 文件来定义,变异器(mutator)被用来实现数据实时格式化,消息通过滤后交给一个或多个事件处理程序。

 

Sensu 还是一种比较新兴的工具,可是大有但愿。若是你想实现数据中心自动化,就须要这样一款工具,不只用来代表数据中心出现的状况,还可用来在最须要的时候提供这方面信息。一款商业版本增长了支持与第三方应用程序集成的功能,可是开源版本含有管理数据中心所需的大部分功能。

 

Prometheus

管理现代数据中心是项复杂的任务。一排排服务器须要当心对待,你还须要旨在处理成千上万个节点的监控系统。监控应用软件带来了特殊的挑战,这时候Prometheus能够发挥用场。做为一种旨在向操做人员提供警报的服务监控系统,Prometheus能够在各系统上运行,不管是一台笔记本电脑,仍是多台监控服务器组成的高可用性集群。

 

时间序列数据捕获后存储起来,而后与模式进行比对,识别故障和问题。你须要暴露HTTP端点上的数据,使用YAML文件来配置服务器。基于浏览器的报告工具可处理数据显示,还有一个表达式控制台,你能够试用查询。仪表板能够用GUI构建器来构建,或使用一系列模板来编写,那样你能够提供应用程序控制台,这些控制台可以使用Git等版本控制系统来加以管理。

 

好比说,捕获的数据可以使用表达式加以管理,于是很容易聚合来自几个数据源的数据,好比说能够未来自一系列 Web 端点的数据集中到一个存储区。一个试验性的警报管理模块将警报发送给常见的协做和开发运营工具,包括 Slack 和 PagerDuty。提供了面向 Go 和 Java 等常见语言的官方客户软件库,这意味着很容易为应用程序和服务添加支持Prometheus的功能,而第三方选件能够将 Prometheus 扩展到 Node.js 和 .Net。

 

ElasticsearchLogstashKibana

运行现代数据中心会生成大量数据,还须要从这些数据中获取信息的工具。这时候,Elasticsearch、Logstash和Kibana这对组合(经常被称为ELK架构)能够发挥做用。

 

Elasticsearch旨在处理可扩展的搜索任务,对多种类型的内容执行搜索,包括结构化和非结构化文档。它基于Apache的Lucene信 息检索工具,还有一组充分利用REST的JSON API。它用来为维基百科和GitHub等网站提供搜索服务,使用分布式索引,具备自动化负载平衡和路由功能。

 

现代云架构的基础是物理服务器阵列,做为虚拟机主机来运行。监控成千上万台服务器须要集中式日志。Logstash负责采集和过滤那些服务器(以及在服务器上运行的应用程序)生成的日志,并使用每一台物理机和虚拟机上的转发器。而后,Logstash格式的数据发送给Elasticsearch,为你提供了搜索索引:添加更多的服务器后,搜索引擎能够迅速扩展。

 

在更高层面上,Kibana为Elasticsearch添加了可视化层,提供Web仪表板,用于探究和分析数据。仪表板能够围绕定制搜索来构建,并与团队共享,提供了一种快速、易于理解的开发运营信息源。

 

Ansible

管理服务器配置是管理现代数据中心或云基础设施的任何开发运营方法的一个关键部分。配置管理工具采用了指望状态的方法,简化云级别系统管理,使用服务器和应用程序的描述来处理服务器和应用程序的部署。

 

Ansible提供了极简的管理服务,使用SSH来管理Unix节点,使用PowerShell与Windows服务器协同运行,无需部署代理。Ansible Playbook用YAML描述服务器或服务的状态,将Ansible模块部署处处理配置的服务器,一旦服务运行起来,就删除模块。你可 以使用Playbook来编排任务,好比说使用一个脚原本部署多个Web端点。

 

可让模块建立和Playbook交付成为持续交付过程的一部分,并使用构建工具来提供配置、实现部署自动化。Ansible能够聚集来自云服务提供商的信息,简化虚拟机和网络的管理。Ansible中的监控工具可以自动触发额外的部署,帮助管理和控制云服务,还竭力管理Hadoop等大规模数据平台所使用的资源。

 

Jenkins

作好持续交付不只仅须要一种井井有理的方法来处理开发,还须要管理测试和构建的工具。这时候,Jenkins持续集成服务器应运而生。 Jenkins与你选择的源代码控制、测试工具以及构建服务器协同运行。它是个灵活的工具,最初用来与Java协同运行,如今已扩大到可支持Web开发和移动开发,甚至能够构建Windows应用程序。

 

把Jenkins比做交换网络可能最恰当,让文件经过测试和构建过程,并回应来自所使用的各个工具的信号――这归功于1000多个插件组成的庞大库。这些包括将Jenkins与本地Git实例和GitHub整合起来的工具,那样能够将持续开发模式扩展到你的构建和交付过程。

 

使用Jenkins之类的自动化工具不只要奉行一种理念,还要实施构建过程。一旦你致力于持续集成做为持续交付模式的一部分,只要代码分发给源代码控制版本分支,你就要运行测试和构建周期,一旦代码进入到主分支,就要分发给用户。

 

Node.jsio.js

现代云应用程序使用不一样于咱们熟悉的n层企业和Web应用程序的设计模式构建而成。它们是分布式、事件驱动的服务组合,这些服务可迅速扩展,并支持成千上万个并发用户。Node.js就是采用这种新模式的一项关键技术,它被许多主要的云平台所使用,易于安装,成为云基础设施上瘦服务器或容器的一部分。

 

Node.js 大获成功,关键是 Npm 程序包格式,它让你能够迅速安装核心 Node.js 服务的扩展件。这包括 Express 和 Seneca 等框架,这些框架有助于构建可扩展的应用程序。中央注册中心处理程序包分发,依赖项自动安装。

 

虽然 io.js 分支暴露了项目管理方面的问题,可是它也让一组开发人员得以积极地将ECMAScript 6支持功能添加到与Npm兼容的引擎中。两支团队协调后,Node.js 的和 io.js 代码库已合并,如今新版原本自 io.js 代码库。

 

明年,其余分支可能会从新并入到主分支,好比微软的 io.js 分支增长了对 64 位 Chakra JavaScript 引擎以及谷歌 V8 的支持,从而让 Node.js 的平台不断发展,巩固其做为云级别微服务首选主机的地位。

Seneca

Seneca 微服务框架的开发人员有句座右铭:“如今构建,之后扩展”。对任何想开发微服务的人来讲,这句格言再恰当不过了,由于它让你能够从小处作起,而后随着服务增多,逐步添加功能。

 

从本质上讲,Seneca 实施了对象/消息(actor/message)设计模式,专一于使用 Node.js 做为交换引擎:获取消息后,处理其内容,而后发送适当的响应,不管是发给消息始发者仍是另外一个服务。因为专一于与业务用例相对应的消息模式,拿来Seneca 后,比较容易为你的应用程序迅速 构建极简的可行产品。插件架构让你很容易将 Seneca 与其余工具集成起来,迅速为服务添加功能。

 

应用程序的要求提升或有变时,能够迅速为代码库添加新的模式,或者把现有模式分解成不一样的服务。一个模式还能够调用另外一模式,以便迅速重复使用代码。还很容易将 Seneca 添加到消息总线,那样能够把它用做一个框架,处理来自物联网设备的数据,由于你只须要定义监听端口,监视 JSON 数据在哪里提供。

 

服务可能不具备持续性,Seneca 为你提供了这个选择:使用内置的对象关系映射层来处理数据抽象,并提供了经常使用数据库的插件。

.Net Core ASP.Net vNext

微软开放了 .Net 的源代码,此举无异于公开了该公司的这个 Web 平台的大部分代码。新的 .Net Core 版本能够在Windows、OS X 和 Linux 上运行。.NetCore 目前从微软的 Codeplex 代码库迁移到了 GitHub,为 .Net 提供了一种更模块化的方法,让你能够在须要时,安装所需的功能。

 

ASP.Net 5 目前处于开发之中,这个 Web 平台的开源版本可在 .Net Core 上运行。你可使用微软的 MVC 6 框架,将它做为 Web 应用程序的基础。还支持新的 SignalR 库,这些库增添了对 WebSockets 及其余实时通讯协议的支持。

 

若是你计划使用微软的新款 Nano 服务器,就要使用 .Net Core 编写代码,由于它是为瘦环境设计的。新的 DNX 是 .Net 执行环境,简化了将 ASP.Net 应用程序部署到众多平台上的任务,还有用于包装代码、在主机上启动运行时环境的工具。特性可以使用 NuGet 程序包管理器来添加,让你能够只要使用所需的库。

 

微软的开源 .Net 还很年轻,可是微软已承诺确保它取得成功。微软本身的下一代服务器操做系统支持开源 .Net,这意味着它在数据中心和云都有一席之地。

 

GlusterFS

GlusterFS是一个分布式文件系统。Gluster 把各类存储服务器聚合到一个庞大的并行网络文件系统。你甚至能够用它来代替Hadoop 集群中的 HDFS,或者代替成本高昂的存储区域网(SAN)系统,或者同时代替二者。虽然 HDFS 很适合 Hadoop,但有一个不须要将数据传输到另外一处来分析的通用分布式文件系统是一大优点。

 

在当下商品化硬件、商品化计算以及对性能和延迟要求更高的时代,购买又大又贵的 EMC SAN,但愿它能知足全部要求(天然知足不了)再也不是你惟一切实可行的选择。GlusterFS 在 2011 年被红帽收购。

相关文章
相关标签/搜索