Apache Stratos Mock IaaS

简介

Apache Stratos 支持许多基础设施作为服务 (IaaS) 的平台:EC2,OpenStack,vCloud,CloudStack,Docker等。然而,设立IaaS 或购买公共 IaaS 服务对于尝试Stratos来说是额外的开销。此外,设置本地 IaaS 需要大量的硬件资源和购买公有云上的IaaS账户所涉及的成本。这些对尝试Stratos带来了障碍 Stratos。

通过引入Docker/Kubernetes来支持Linux容器,很大程度上解决了这个问题。然而,设置 Kubernetes集群还需要几个虚拟机或物理机,并且建立Puppet主节点(或任何其他配置工具)也是额外开销。此外,对于组合应用的群组cartridge功能,这一问题更严重了,因为,其实现逻辑的复杂性和它需要时间来验证在IaaS 平台上的每个功能。

为了解决这个问题,Apache Stratos引入了Mock IaaS功能,它可以模拟 Stratos所需要的IaaS 基本功能。

一般来说,Mock IaaS 驻留在云控制器中,并且运行在一个单独的Java 虚拟机 (JVM) 中。但是,在云爆发和 Stratos集群的场景下,Mock IaaS 需要作为一个独立的产品运行在分布式环境下,使用多个 JVM。因此,为了支持独立运行,Mock IaaS封装了REST 服务,以便能够创建一个单独的服务器配置文件。从而,这允许Mock IaaS 作为一个单独的产品运行,这样可以配置云控制器通过Mock IaaS的API和Mock IaaS交互。

有关如何在Mock IaaS 上运行Stratos的详细信息,请参见使用Mock IaaS章节。


架构

下图描述了Mock IaaS的功能架构:

Apache Stratos Mock架构及持久化存储卷的映射_Java

Stratos IaaS

Stratos IaaS的接口

Stratos提供了IaaS平台的抽象层。这里面包含了如下通用的接口:

·        启动实例.

·        传递用户数据,基础数据到实例。

·        为实例绑定网络接口。

·        为网络接口分配公网IP。

·        为实例添加存储。

·        关闭实例

在Apache Stratos的4.0.0版本中的Stratos IaaS接口不包含一些与IaaS接×××互的方法。哪些方法会直接通过jclouds的计算模块进行调用。引入模拟IaaS模块后,所有需要与IaaS交互的方法都移到IaaS接口,与jclouds相关的逻辑都移动到JcloudsIaas类中。现在,IaaS接口被模拟IaaS客户端和jclouds IaaS客户端来实现。jclouds IaaS客户端可以实现为EC2、OpenStack、vCloud、CloudStack和Docker。

持久化存储卷的映射

添加持久化存储卷的映射与在机器实例中添加虚拟硬盘相似。在亚马逊的EC2中,EBS存储设备可以做为一个持久化的卷添加到EC2实例中。需要了解更多信息,请参考添加EBS到AWS实例。当用户需要在实例被关闭或者删除时仍然需要保留数据,可以使用持久化存储卷。MySQL、MongoDB就需要这样的持久化存储卷。

在cartridge的定义中添加持久化存储卷

持久化存储卷作为一个可选项,在用户需要持久保存数据时可以设置此选项。在cartridg中添加此选项如下所示:

"persistence":  {
       "isRequired":  "true",
       "volume": [
           {
           "device":  "/dev/sdc",
           "mappingPath":  "/home/ubuntu/sdc",
           "size":  "10",
           "removeOnTermination":  "false"
           }
        ]
    }

   


管理多个持久化存储卷

Stratos提供指定多个持久化存储的能力。如果用户需要多个额外的存储卷,可按如下定义:

"persistence":  {
       "isRequired":  "true",
       "volume": [
           {
           "device":  "/dev/sdc",
           "mappingPath":  "/home/ubuntu/sdc",
           "size":  "10",
           "removeOnTermination":  "false"
           },
           {
           "device":  "/dev/sdf",
           "mappingPath":  "/home/ubuntu/sdf",
           "size":  "20",
           "removeOnTermination":  "false"
           }
       ]
    }

   


用户不能定义相同的路径到多个存储卷。若这样定义的话,路径会映射到最后一个定义的存储卷,不能确定另一个卷是否会映射到一个目录。

后台如何运作

在单租户cartridges中,持久化映射会在应用部署和自动订阅后产生作用。但在多租户cartridges中,持久化映射会在租户注册进程中产生作用。

创建卷.

格式化并创建可写的文件系统(ext3).

挂载卷到mappingPath指定的目录中.

格式化和创建文件系统的进程仅在第一次持久化映射时发生。当卷挂载到另一个实例时,当第一个实例结束时,不需要重新创建文件系统,因为文件系统已经存在。

验证存储卷的创建

通过下面步骤验证存储卷是否创建::

通过ssh登录到实例.

2.  执行命令: df-h
可以看到如下输出:

df  -h
Filesystem       Size  Used Avail Use% Mounted on
/dev/xvdc         10G  7.1G   97G  3% /home/ubuntu/sdc
/dev/sda1        4000G  40G   320G  10% /home

   


 

命令行工具

Stratos提供了命令行工具,用户可通过工具管理在Stratos中的应用。用户可以运行各种命令管理Stratos。需要学习和了解所有的命令行工具,请参考命令行工具指南。

命令行工具可通过如下两种模式运行:


交互模式
    这种模式允许用户手动执行命令。需要了解更多信息,请参考交互模式。
     

单命令行模式
    这种模式允许计算机执行命令脚本。需要了解更多信息,请参考单命令行模式。

使用命令行工具前,需要首先配置命令行工具,并通过命令登录到Stratos管理器中。

交互模式

·        登录
通过下面的命令进行登录(在交互模式,若用户不使用用户名和密码进行登录,命令行工具会进行相应的提示)。

./stratos.sh


命令自动补齐
交互模式支持命令自动补齐功能. 在命令行工具中按Tab键会自动列出所有可选的命令。

activate-tenant                   add-application                   add-autoscaling-policy            add-cartridge                     add-cartridge-group               
add-deployment-policy             add-domain-mappings               add-kubernetes-cluster            add-kubernetes-host               add-network-partition             
add-tenant                        add-user                          create-application                deactivate-tenant                 deploy-application                
describe-application              describe-application-runtime      describe-application-signup       describe-autoscaling-policy       describe-cartridge                
describe-cartridge-group          describe-deployment-policy        describe-kubernetes-cluster       describe-kubernetes-master       describe-network-partition        
describe-tenant                   exit                              help                              list-applications                 list-autoscaling-policies       
list-cartridge-groups             list-cartridges                   list-cartridges-by-filter         list-deployment-policies          list-domain-mappings              
list-kubernetes-clusters          list-kubernetes-hosts             list-network-partitions           list-tenants                      list-tenants-by-partial-domain  
list-users                        remove-application                remove-application-signup         remove-autoscaling-policy         remove-cartridge                  
remove-cartridge-group            remove-deployment-policy          remove-domain-mappings            remove-kubernetes-cluster         remove-kubernetes-host            
remove-network-partition          remove-user                       synchronize-artifacts             undeploy-application              update-autoscaling-policy       
update-cartridge                  update-deployment-policy          update-kubernetes-host            update-kubernetes-master         update-network-partition          
update-tenant                     update-user

   


单命令行模式

用户可以使用单命令行模式在同一行中直接调用以下所有的操作。必要时用户可以将用户名和密码设置到环境中,然后执行命令:

./stratos.sh -u [username] -p [password] [action commands]