引入Stratos 2.0 –一种开源的平台即服务

有那么多云平台,很难选择最适合您需求的云平台。 但是,第一个真正的开源云平台又如何呢? WSO2的Paul Fremantle解释了如何运行应用程序,并解释了项目背后的体系结构。 本文发表在《 JAX Magazine:On Cloud Nine》上。

编者注:自从本文发布以来, Stratos 2.0现在是最终版本。

成为PaaS意味着什么?

我对PaaS的定义是一种云基础架构,其目标是提供对开发人员更有用的云服务。 例如,IaaS提供“计算即服务”(即虚拟机)。 PaaS提供更高级别的服务,例如App Server。 因此,例如,如果您具有“计算即服务”,则必须提供一个虚拟机才能运行。 如果您具有Java App Server即服务,则可以为其提供WAR文件。

第二个方面是项目本身。 某些PaaS仅作为运行服务提供。 例如,Google提供了App Engine,但没有提供自己运行它的功能。 Stratos是使您能够自己运行PaaS的代码,项目和产品。 另外,还有一个基于Stratos的运行PaaS,称为StratosLive

Stratos的初始版本针对基于Java的正在运行的工作负载,包括Webapp,ESB流,BPEL流以及基于WSO2 Carbon OSGI中间件服务集的其他服务。 Stratos是第一个可用的开源PaaS。 新发布的Stratos 2.0 beta已更新,以支持不仅仅基于Java或Carbon而是可以使用可插拔Cartridge模型在任何语言或框架下运行的运行服务。 本文重点介绍Stratos 2.0 –它的体系结构,方法以及使用方法。 所有样本均基于撰写时的当前Beta(beta2)。

Stratos对任何开发人员而言最重要的方面是:

  1. 如何开始在Stratos PaaS上运行应用程序?
  2. 运行Stratos需要什么?
  3. 在Stratos(墨盒)上运行的服务集
  4. 多租户
  5. 建筑

如何开始?

假设您正在运行Stratos PaaS,并快速了解如何创建和运行应用程序。Stratos中首先需要的是租户。 Stratos中的所有内容均基于多租户模型。 每个租户都有一个隔离的环境。 租户可以是单个用户或整个公司的用户。 租户中的每个用户都由一个ID标识,例如paul@fremantle.org ,其中fremantle.org标识该租户。

图1中 ,您将找到租户注册屏幕:

图1:租户注册

现在我们有了一个租户,下一个工作就是订阅正确的服务。 假设我们要部署一个使用MySQL数据库PHP应用程序,那么我将需要同时订阅PHP卡式盒和MySQL卡式盒。 我可以通过Web控制台或命令行进行订阅。 命令行非常简单:

stratos paul@fremantle.org mypassword subscribe php myphp –repoURL https://github.com/pzfreo/php-stratos.git

repoURL是代码存储的位置。 例如,如果我们使用的是PHP,则需要将该PHP应用程序放入此存储库的www /目录中。 默认情况下,当您进行订阅以及启动或重新启动实例时,Stratos将检出此代码。 您还可以安装一个Webhook(例如在Github上),该Webhook将通知Stratos更新,然后Stratos将对其进行git pull。

我们还可以在命令行中提供最小/最大实例,回购用户ID /密码以及其他选项。 这将返回一个URL,现在我的应用程序将可用(在本例中为myphp.php.stratos.com)。

到目前为止,我们已经完成了以下工作

  • 创建了一个订阅
  • 启动了PHP卡式盒的实例
  • 从Git签出代码到每个实例
  • 在负载均衡器中注册实例

我们还可以使用Web控制台预订盒带, 如图2所示。

图2:可用的墨盒


此外,我们可以将盒带“连接”到另一个盒带:例如,订阅MySQL,然后将PHP应用程序连接到MySQL数据库。

运行Stratos需要什么?

Stratos 2.0是在多个IaaS上运行的PaaS:它使用一个名为jclouds的优秀项目在多个IaaS云运行时之上工作,包括EC2,OpenStack(以及Rackspace Cloud,HP Cloud和SUSE Cloud)以及VMware vSphere等。 在StratosLive的生产环境中,Stratos已在包括OpenStack和EC2在内的各种运行时中运行。 最简单的方法是启动使用EC2作为IaaS的Amazon EC2 AMI。 第二种最简单的方法是使用OpenStack和/或DevStack。

Stratos主要用Java编写,因此例如要运行命令行客户端,需要在运行CLI的计算机上安装JDK6或JDK7。 为了在多计算机云上完整安装Stratos,建议使用Puppet。 有一组Puppet脚本可让您执行此操作。

在Stratos上运行的服务集

墨盒提供Stratos用户可使用的服务数量。 基本上,磁带可以使您将新的服务类型插入Stratos环境。 任何人都可以创建盒带,但是它需要Stratos管理员将其插入并配置到特定的Stratos部署中。 启用盒带后,任何租户都可以订阅它们。

当前测试版支持以下服务/墨盒:

  • 使用WSO2 Application Server 5.0的Java应用程序(Webapps / WAR文件,JAX-WS服务,JAX-RS服务)
  • PHP 5.5应用程序
  • MySQL 5.5数据库

以下是现有Stratos 1.6服务的子集,在此发行版中,计划还支持所有现有服务:

  • 使用WSO2企业服务总线4.6的ESB流
  • 使用WSO2 Business Process Server 3.0的BPEL流
  • 使用AMQP和WSO2 Message Broker 2.0的JMS队列/主题
  • 使用Drools和WSO2业务规则服务器的业务规则
  • 使用WSO2 CEP和Siddhi进行复杂事件处理。
  • 使用WSO2治理注册表的注册表/存储库
  • 使用WSO2身份服务器的SAML2 SSO,OpenID,OAuth 2,XACML 3.0以及其他身份和访问管理
  • 使用WSO2数据服务服务器的数据服务
  • 使用WSO2存储服务器的Cassandra即服务

但是,这实际上只是计划的一小部分:正在开发的是MongoDB,Node.js,Ruby和其他工具。 还有一个添加盒带的明确定义的模型,以及任何公司,开源项目或开发人员都可以遵循的操作指南。

多租户

Stratos最重要的方面之一是它本身就是多租户。 每个方面都用租户的概念来写。 例如,当您订阅特定服务(例如PHP)时,您将代表租户获得一个PHP运行时。 这将设置负载平衡器,以将请求从租户的URL路由到PHP Web应用程序。

域映射是Stratos 2.0功能的一个非常好的新增功能。 如果您拥有特定的域(例如fremantle.org),则可以将域名映射到盒式磁带实例–例如,将wordpress.fremantle.org映射到您PHP订阅。

该多租户也可供开发人员使用:您可以将Stratos用作编写本身就是多租户的SaaS应用的地方。 但是,这是另一篇文章的主题!

租赁模型扩展为支持许多核心服务,包括日志记录,SQL(MySQL即服务),NoSQL(Cassandra即服务)和其他。 无论磁带盒有多少实例都可以按比例放大和缩小,日志都会自动发送到中央多租户日志服务,该服务将其存储并提供给每个租户。

每个部署在不同的模型中使用租户模型:例如,在公共StratosLive中,租户是独立的组织,每个组织都有自己的用户群。 在Stratos的其他私有部署中,租户已被用来代表一个部门或项目,每个租户从共享的用户群中获取用户。 身份服务器启用了此功能,身份服务器为Stratos提供了核心身份和访问控制模型。

Stratos多租户的一个重要方面是,不同的盒带可以是单租户,也可以是多租户。 在多租户的情况下,保持租户的隔离是租户的责任。 作为回报,通过在同一实例中托管许多租户,可以更好地利用资源。

整体架构

图3显示了Stratos 2.0 PaaS的结构。

图3:Stratos架构

整个结构位于IaaS之上,并利用jclouds连接到IaaS。 下一层是Stratos核心,它由一组组件组成,这些组件控制结构中服务的管理。 这些组件管理系统中的所有工作,包括负载平衡,启动和停止服务实例以及分发代码。

Stratos控制器是PaaS的主要组件。 这将管理订阅,维护身份并提供CLI和Web控制台使用的核心服务。

Elastic Load Balancer控制许多方面。 首先,顾名思义,这可以与SC和Cloud Controller配合使用,以随着负载的增长和收缩而停止和启动实例。 其次,这将重写URL并处理进入PaaS的路由请求到代表租户运行的特定实例中。 因此,例如,这可能会将对wordpress.fremantle.org的请求路由到http://10.2.3.35 ,这是为租户fremantle.org运行的私有实例。

ELB的重要功能是“私人喷射”模式,该模式允许您为一个或多个租户保留某些实例。 这意味着,如果有多租户盒式磁带(例如Carbon服务器),则可以通过在负载均衡器上设置策略来选择在单个实例中共享租户还是在专用实例中进行选择。

云控制器由ELB和Stratos控制器调用。 这需要来自他们的请求来停止和启动实例。 然后,它使用jclouds与IaaS进行通信。 从这里开始,我们可以支持非常轻量级的容器,例如使用OpenStack占用空间很小的LXC容器。

Stratos Core之上是一组重要的基础服务。 这些是可选的,但已发现它们在StratosLive和其他部署中提供必要的服务。 这里的服务包括:

  • 日志即服务
  • 关系存储服务(RSS)–多租户SQL数据库管理
  • 列存储服务(CSS)–多租户Cassandra
  • 文件存储服务(FSS)– Hadoop文件系统(HDFS)即服务
  • 注册表/存储库
  • 单一登录和身份/访问管理
  • 任务管理即服务
  • 计费与计量

最后,顶层是代表租户创建的一组平台服务。 换句话说,我们之前介绍过的墨盒。

Stratos依靠Git作为代码/人工部署机制,因此,当您订阅盒式磁带时,您将提供Git存储库位置。 然后,为了部署应用程序,您只需要将该应用程序检入Git。 这由称为Artefact Distribution Center(ADC)和Deployment Synchronizer(DepSync)的两个子组件处理。

最后,关于体系结构的重要一点是开放性。 所有组件都通过API相互通信,这些API可以进行编码。 每个组件都有许多插入点–例如,您可以向ELB添加自己的负载均衡算法。 当然,它们都是开源的。

结论

Stratos是第一个受支持的开源PaaS。 从那时起,它已经走了很长一段路,新的Stratos 2.0是对Stratos 1.6的重大改进。 将新磁带盒插入Stratos 2.0并使用任何语言或框架创建新的多租户服务的能力大大增强了。 评估Stratos时,固有的多租户和基础服务的丰富性以及广泛的弹药筒都是重要的区别因素。 我希望您发现这篇文章很有趣,并且吸引您尝试Stratos beta并加入社区。

有关下载,AMI和文档,请参阅Beta2发行说明

作者简介: Paul Fremantle是WSO2的联合创始人兼CTO。 Paul是Apache成员,并且是Apache Synapse项目的创始人之一,并且领导并参与了WSO2的许多开源创新。 Paul在创建企业级服务器运行时以及与敏捷开发团队合作创建世界一流的软件方面拥有丰富的经验。 保罗还吹响锡笛。

本文发表在《 JAX Magazine:On Cloud Nine》上。 对于该问题和其他问题, 请单击此处

云图由Akakumo提供


翻译自: https://jaxenter.com/introducing-stratos-2-0-an-open-source-platform-as-a-service-106313.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值