11lxm 发表于 2018-11-19 11:29:17

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

  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的功能架构:

  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       SizeUsed Avail Use% Mounted on
/dev/xvdc         10G7.1G   97G3% /home/ubuntu/sdc
/dev/sda1      4000G40G   320G10% /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 -p   

  




页: [1]
查看完整版本: Apache Stratos Mock架构及持久化存储卷的映射