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       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]
时间: 2024-10-27 19:57:44

Apache Stratos Mock架构及持久化存储卷的映射的相关文章

Docker容器的持久化存储和端口映射

存储卷存储卷的映射:docker run -d -p 物理机端口:容器服务进程端口 -v 物理机文件夹:容器文件夹 容器名/标签(注:容器文件夹映射前不存在,执行完命令会自动创建:如果映射前,执行完命令会覆盖原文件夹的内容)例:docker run -d -v /var/webroot:/var/www/html myos:httpd 共享存储共享存储基本概念? 一台共享存储服务器可以提供给所有Docker主机使用? 共享存储服务器(NAS.SAN.DAS等)? 如:– 使用NFS创建共享存储服

44_自定义镜像及仓库、持久化存储 、 Docker网络架构

1. 制作自定义镜像(base基础镜像,搭建共性环境)基于centos镜像使用commit创建新的镜像文件基于centos镜像使用Dockerfile文件创建一个新的镜像文件 1.1 使用镜像启动容器 1)在该容器基础上修改yum源docker_images]# docker run -it centos345 /]# rm -rf /etc/yum.repos.d/*  345 /]# vi /etc/yum.repos.d/dvd.repo[dvd]name=dvdbaseurl=ftp:/

架构设计:系统存储(16)——Redis事件订阅和持久化存储

接上文<架构设计:系统存储(15)--Redis基本概念和安装使用> 3-4.事件功能和配置项 Redis从2.X版本开始,就支持一种基于非持久化消息的.使用发布/订阅模式实现的事件通知机制.所谓基于非连接保持,是因为一旦消息订阅者由于各种异常情况而被迫断开连接,在其重新连接后,其离线期间的事件是无法被重新通知的(一些Redis资料中也称为即发即弃).而其使用的发布/订阅模式,意味着其机制并不是由订阅者周期性的从Redis服务拉取事件通知,而是由Redis服务主动推送事件通知到符合条件的若干订

docker的持久化存储和共享存储和网络架构

1.持久化存储docker容器中一般不保存数据,只封装系统和环境,这样就存在一个问题,一个docker容器的数据内容不能持久化,且不能共享出来,在生产中,不能很好地提供服务.为了解决这个问题,就要涉及到docker的持久化存储和共享存储的技术了.所谓持久化,就是将真实机目录挂载到容器中,让容器运行时所产生的数据都写入到真实机的目录中,以此来提供持久存储. mkdir /var/webroot docker run -d -p 80:80 -v /var/webroot:/var/www/html

k8s实践(七):存储卷和数据持久化(Volumes and Persistent Storage)

环境说明: 主机名 操作系统版本 ip docker version kubelet version 配置 备注 master Centos 7.6.1810 172.27.9.131 Docker 18.09.6 V1.14.2 2C2G master主机 node01 Centos 7.6.1810 172.27.9.135 Docker 18.09.6 V1.14.2 2C2G node节点 node02 Centos 7.6.1810 172.27.9.136 Docker 18.09.

深入浅出Mesos(三):持久化存储和容错

[编者按]Mesos是Apache下的开源分布式资源管理框架,它被称为是分布式系统的内核.Mesos最初是由加州大学伯克利分校的AMPLab开发的,后在Twitter得到广泛使用.InfoQ接下来将会策划系列文章来为读者剖析Mesos.本文是整个系列的第一篇,简单介绍了Mesos的背景.历史以及架构. 注:本文翻译自Cloud Architect Musings,InfoQ中文站在获得作者授权的基础上对文章进行了翻译. 在深入浅出Mesos系列的第一篇文章中,我对相关的技术做了简要概述,在第二篇

Kubernetes之存储卷

存储卷概述 容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题.首先,当容器崩溃时,kubelet 会重启它,但是容器中的文件将丢失--容器以干净的状态(镜像最初的状态)重新启动.其次,在 Pod 中同时运行多个容器时,这些容器之间通常需要共享文件.Kubernetes 中的 Volume 抽象就很好的解决了这些问题.在原docker环境中也有存储卷的概念,但docker环境的存储卷调度在宿主机上的目录,当docker重新创建的时候存储卷还会挂载统一宿主机上,但我们

Kubernetes之(十二)存储卷

目录 Kubernetes之(十二)存储卷 简介 emptyDir存储卷 hostPath存储卷 nfs共享存储卷 PV和PVC NFS使用PV和PVC 配置NFS存储 定义PV 定义PVC 查看验证 测试访问 StorageClass Kubernetes之(十二)存储卷 简介 为了保证数据的持久性,必须保证数据在外部存储在docker容器中,为了实现数据的持久性存储,在宿主机和容器内做映射,可以保证在容器的生命周期结束,数据依旧可以实现持久性存储.但是在k8s中,由于pod分布在各个不同的节

Docker第五回(Docker存储卷)

一.Docker底层存储机制介绍 对于Docker来讲,它作为容器运行的底层引擎,在组织和运行其容器时,每个容器内运行一个程序及子程序,容器启动时依赖于底层可能不止一层的只读镜像联合挂载启动而成.它底层能够存储此类分层构建并联合挂载镜像的文件系统包含AUFS.Overlayfs2.devmapper文件系统.最后一定要在最上层构建一个可写层.对于此可写层来说,所有在容器中所执行的写操作(对数据的修改.对内容的修改),都是保存在最上层的可写层.对下层内容的增删改操作我们需要使用“写时复制”(COW