精华内容
参与话题
问答
  • CloudStack

    2016-05-05 07:37:49
    CloudStack is a turnkey solution that includes the entire "stack" of features most organizations want with an IaaS cloud: compute orchestration, Network-as-a-Service, user and account management, a fu


    CloudStack is a turnkey solution that includes the entire "stack" of features most organizations want with an IaaS cloud: compute orchestration, Network-as-a-Service, user and account management, a full and open native API, resource accounting, and a first-class User Interface (UI).

    CloudStack currently supports the most popular hypervisors: VMware, KVM, Citrix XenServer, Xen Cloud Platform (XCP), Oracle VM server and Microsoft Hyper-V.

    Users can manage their cloud with an easy to use Web interface, command line tools, and/or a full-featured RESTful API. In addition, CloudStack provides an API that's compatible with AWS EC2 and S3 for organizations that wish to deploy hybrid clouds.

    CloudStack is a turnkey solution that includes the entire "stack" of features most organizations want with an IaaS cloud: compute orchestration, Network-as-a-Service, user and account management, a full and open native API, resource accounting, and a first-class User Interface (UI).

    CloudStack currently supports the most popular hypervisors: VMware, KVM, Citrix XenServer, Xen Cloud Platform (XCP), Oracle VM server and Microsoft Hyper-V.

    Users can manage their cloud with an easy to use Web interface, command line tools, and/or a full-featured RESTful API. In addition, CloudStack provides an API that's compatible with AWS EC2 and S3 for organizations that wish to deploy hybrid clouds.

    展开全文
  • Cloudstack

    2017-05-19 16:12:47
    Cloudstack 1. Cloudstack'ABC2. Cloudstack架构3. cloudstack核心模块 3.1 management server3.2 cloud infrastructure3.3 hypervisor3.4 storage 3.4.1 Primary storage3.4.2 Secondary storage 3.5 network



    Cloudstack

    1. Cloudstack'ABC

    • 一种开源的IAAS技术解决方案
    • Java语言编写
    • 前身cloud.com,2011年被Citrix公司收购,2012年4月捐赠给Apache基金会
    • 遵循Apache License V2协议

    2. Cloudstack架构

    CloudStack 采用了典型的分层结构:用户层、核心引擎、以及资源层。它面向各类型的客户提供了不同的访问方式:Web Console和 Web Service API。通过它们,用户可以管理使用在其底层的计算资源(又分为主机、网络和存储),完成诸如在主机上分配虚拟机,配给虚拟磁盘等功能。

    下面我们将对cloud stack分部分进行介绍。

    3. cloudstack核心模块

    3.1 management server

    management server管理整个cloudstack集群。management server提供两种方式进行访问(1)http api (2)Web UI. 使用Web UI可以非常方便的管理整个集群。

    management server为无状态的,可以部署为虚拟机或者物理机,单台management server最多可以管理5K台host,为保证稳定性和可用性,可以横向扩展management server数量。

    基于management server,管理员可以对cloudstack进行管理,涉及的方面主要包括主机、存储、网络、用户、模板、域。management server的界面如下:

    3.2 cloud infrastructure

    cloud infrastructure代指所有运行虚拟机的host主机,并对host进行分层管理,。分层关系如下:

    Host:Host 就是运行虚拟机(VM)的主机。

    Cluster:Cluster 是多个主机组成的一个集群。同一个 cluster 中的主机有相同的硬件,相同的 Hypervisor,和共用同样的存储。同一个 cluster 中的虚拟机,可以实现无中断服务地从一个主机迁移到另外一个上。

    Pod:Pod 对应着一个机架。同一个 pod 中的机器在同一个子网(网段)中。

    Zone: Zone 对应于现实中的一个数据中心,它是 CloudStack 中最大的一个单元。

    整个云由单个或者位于不同地理位置的多个zone构成,并且zone之间需要低延迟的网络互连以力求更高的性能。

    即从包含关系上来说,一个 zone 包含多个 pod,一个 pod 包含多个 cluster,一个 cluster 包含多个 host。

    3.3 hypervisor

    cloudstack支持多种虚拟机方案,如图:

    对于Xen和vCenter,management server可以直接和host进行交互,对于kvm和ovm,则事先需要在host上安装agent。

    3.4 storage

    在cloudstack中存在两种存储,分别为Primary storage和Secondary storage

    3.4.1 Primary storage

    一级存储与 cluster 关联,它为该 cluster 中的主机的全部虚拟机提供磁盘卷。一个 cluster 至少有一个一级存储,且在部署时位置要临近主机以提供高性能。一级存储可以基于local disk、iSCSI、FC或者NFS。

    3.4.2 Secondary storage

    二级存储与 zone 关联,它存储模板文件,ISO 镜像和磁盘卷快照。一个zone至少有一个二级存储。

    • 模板:可以启动虚拟机的操作系统镜像,也包括了诸如已安装应用的其余配置信息。
    • ISO 镜像:包含操作系统数据或启动媒质的磁盘镜像。
    • 磁盘卷快照:虚拟机数据的已储存副本,能用于数据恢复或者创建新模板。
    二级存储可以使用NFS、OpenStack Swift

    3.5 network

    网络的设计规划是CloudStack的一个亮点,同时也是cloudstack当中比较复杂并且比较难理解的一部分。

    3.5.1 网络部署模式

    cloudstack支持两种网络部署模式,基本资源网络和高级资源网络

    • 基本资源网络
    类似AWS的扁平网络模式,适合大规模扩展,所有VM部署于同一子网。通过安全组进行账户间的隔离(不支持VMware),Virtual Router提供DHCP和DNS服务。

    • 高级资源网络
    支持isolated与shared两种虚拟来宾网络模式,虚拟机可以接入多个网络。通过VLAN进行账户间的隔离。Virtual Router提供更多的网络服务,DHCP、DNS、NAT、Firewall、VPN、LoadBlancing、PortForwarding。

    3.5.2 网络的流量类型

    • 公用网络
    当虚拟机需要访问Internet或外部网络时,需要通过公共网络;这就说明客户虚拟机必须被分配某种形式的外网IP.用户可以在CloudStack的UI上获得一个IP来做NAT映射,也可以在Guest与Public之间做负载均衡.所有的Hypervisor都需要共享Public VLan以保证虚拟机对外的访问.
    • 来宾网络
    最终用户运行CloudStack创建的虚拟机实例时产生Guest流量,虚拟机实例之间的相互通信通过客户网络,分为隔离和共享两种。

    共享网络:支持基本资源网络和高级资源网络,不同账户的VM使用同一个共享网络,使用安全组方式进行网络隔离。

    隔离网络:仅支持高级资源网络,属于某个特性账户,账户可以拥有一个或者多个隔离网络,使用VLAN方式进行网络隔离。

    • 管理网络
    CloudStack 内部资源相互通信会产生Management流量,这些流量包括管理服务器节点与Hypervisor集群之间的通信,与系统虚拟机之间的通信或与其它组件之间的通信等;集群规模较小时管理流量只占用很少的带宽.

    • 存储网络
    主存储与Hypervisor之间互连互通的流量;主存储与二级存储之间也会产生Stroage流量,比如虚拟机模板和快照的搬移.

    其中MGS(Management,Guest,Storage)三种网络对于基本网络及高级网络通用.而P(Public)则只是针对高级网络才存在.可以对比下图:

    3.6 Account Management

    • domain is a unit of isolation that represents a customer org, business unit or a reseller
    • domain can have arbitrary levels of sub-domains
    • a domain can have one or more accounts
    • an account represents one or more users and is the basic unit of isolation
    • admin can limit resources at the account or domain levels

    3.7 system vms

    系统创建的虚拟机实例,用于执行系统任务。

    3.7.1 Virtual Router VM

    用于提供多种网络服务,包括DHCP,DNS,NAT,Firewall,VPN

    3.7.2 Secondary Storage VM

    对image和template进行管理

    3.7.3 Console Proxy VM

    4. what can we learn

    对于jpaas和xplat,我们可以从cloudstack学到些什么?它山之石,可以攻玉

    4.1 access control

    4.1.1 cloudstack的实现

    在cloudstack中对于网络进行了很细致的规划,其中对于访问控制进行了详细的设置。

    • basic network
    在基本网络中,使用security group进行访问控制,管理的单位为a group of vm(通常是指相同用户下的相同策略的一组vm),对vm的inbound和outbound流量进行双向管理,默认的策略(不手动添加任何策略)为“禁止所有inbound流量,允许所有outbound流量”。

    用户可以根据需要,对vm手动添加策略,如图:

    入口规则负责对inbound流量的限制,outbound负责对outbound流量的限制。

    CIDR对一个网段设置规则,Account对来自一个用户的流量进行限制(主要针对vm之间的通信)

    具体规则可以制定传输层协议、端口范围等等。

    • advanced network
    在高级网络中,vm之间的访问基于vlan进行管理,比较负责,我们不进行详细介绍。

    4.1.2 我们如何进行借鉴

    目前在jpaas和xplat中,我们对于实例的网络通信行为没有进行管理,现有情况是:外部流量可以随意连接instance,instance也可以随意访问外部网络,instance之间(不论是否属于相同app)也可以随意通信。

    类比cloudstack,我们可以实现访问控制:

    • 以app为单位
    • 从inbound和outbound两个方向进行限制。
    • 限制instance或者container之间的访问。

    我们实现的是私有云,对于访问控制的需求并不是很大,我们可以根绝具体需求来实现访问策略。

    展开全文
  • cloudstack

    2015-09-08 12:52:38
    CloudStack 4.5,用于管理XenServer。CloudStack和OpenStack类似,是一个开源的云计算资源管理平台,整体结构大致如下图:     Region翻译过来就是区域,是CloudStack中最大的组织单元,一般由多个物理上分离...

    CloudStack 4.5,用于管理XenServer。CloudStack和OpenStack类似,是一个开源的云计算资源管理平台,整体结构大致如下图:

     

     

    Region翻译过来就是区域,是CloudStack中最大的组织单元,一般由多个物理上分离的数据中心组成,每个数据中心又对应一个Zone,叫资源域,当然一个数据中心也可以有多个资源域(Zone),这并不是严格要求的。一般来说,不同Zone之间物理上隔离,可用于冗余灾备。Zone又由Pod(提供点)组成,一个Pod一般对应一个机柜,每个Pod中可以有多个集群,集群中就是物理主机了。一般来说,每个集群有自己的主存储,一个Zone共用一个二级存储。主存储主要用于存放正在运行的虚拟机的磁盘文件,二级存储主要用来存放虚拟机模板、iso文件和虚拟机的快照。

    CloudStack根据不同的帐户等级对于API的访问权限有不同的限制.账户分为管理员,域管理员,用户等. 管理员是所有的API都可以调用,用户API则受限,是管理员API的一个子集。在安装好CloudStack管理服务器节点后,也可以在如下配置文件找到系统支持的所有API及对应权限:
    /etc/cloud/management/*commands*.properties
    CloudStack自身的API定义都可以在commands.properties和commands-ext.properties里找到, 有一些第三方硬件支持添加的API可以在自己单独的文件里找到,比如nicira-nvp_commands.properties,f5bigip_commands.properties,junipersrx_commands.properties等.
    在*commands*.properties文件中,定义的所有命令或者称所有的API,都是相同的格式:
    Command=<class>:<level>,比如列出CloudStack所有账号信息:
    listAccounts=com.cloud.api.commands.ListAccountsCmd;15
    Command是Http请求时的命令参数, Class是处理当前请求命令的类, 数字15表示当前API支持的运行级别或者称权限. CloudStack里API有四个权限级别: ADMIN:1, RESOURCE_DOMAIN_ADMIN:2, DOMAIN_ADMIN:4, USER:8. 它们之前做与操作得出此命令可供哪些权限的账户操作. 15(1 & 2 & 4 & 8)表示四种账户权限都可以访问此API.

     


    http://120.219.105.5:8080/client/api?command=listVirtualMachines&response=json

     

    以CloudStack管理员的身份(admin)为例, 可以先在CloudStack UI上生成用户的apikey和secretkey, 只有管理员权限可以生成这两个key.上述请求的apikey直接填生成的即可, signature是通过请求的命令及参数 + Secretkey 再通过HmacSHA1哈希算法共同生成的,

     

     

    在CloudStack中可以参考测试类:test/src/com/cloud/test/utils/UtilsForTest.java里的实现, 或直接用其产生signature, 这个测试类要生成上述API调用的signature, 输入参数为(apikey, secretkey省略):
    -u "command=listUsers" -a "apikey" -s "secretkey"

    Programmer Guide

    http://docs.cloudstack.apache.org/en/master/dev.html

     

     Base URL+API Path+Command String+Signature

    1、对所有的值进行url编码:URL encode each value   “%20” rather than “+”.

    2、将Command String 都改成小写并按照域的字母排序:Lower case the entire Command String and sort it alphabetically via the field for each field-value pair

    'apikey=plgwjfzk4gys3momtvmjuvg-x-jlwlnfauj9gabbbf9edm-kaymmailqzzq1elzlyq_u38zcm0bewzgudp66mg&command=listusers&response=json'

     

    3、使用 user‘s Secret key 将Command String 进行 HMAC SHA-1 ,得到的结果(UTF-8编码)再进行Base64 encode

     

     Base URL:http://localhost:8080

    API Path:/client/api?

    Command String:command=deployVirtualMachine&serviceOfferingId=1&diskOfferingId=1&templateId=2&zoneId=4&apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXq-jB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ
    Signature:&signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D

     

    防攻击:&signatureVersion=3&expires=2011-10-10T12:00:00+0530

    The timestamp is expressed in the YYYY-MM-DDThh:mm:ssZ format, as specified in the ISO 8601 standard

     

     

    sign生成实现

    package main

    import (
        "crypto/hmac"
        "crypto/sha1"
        "encoding/base64"
        "fmt"
        "net/url"
        "strings"
    )

    const API_KEY = "plgWJfZK4gyS3mOMTVmjUVg-X-jlWlnfaUJ9GAbBbf9EdM-kAYMmAiLqzzq1ElZLYq_u38zCm0bewzGUdP66mg"
    const SECRET_KEY = "VDaACYb0LV9eNjTetIOElcVQkvJck_J_QljX_FcHRj87ZKiy0z0ty0ZsYBkoXkY9b7eq1EhwJaw7FF3akA3KBQ"

    func ComputeHmacSHA1(message string, secretKey string) string {
        key := []byte(secretKey)
        h := hmac.New(sha1.New, key)
        h.Write([]byte(message))
        return base64.StdEncoding.EncodeToString(h.Sum(nil))
    }

    func GenerateSignature(aURL string, secretKey string) string {
        //解析url的query部分(全部转为小写字母),排序和url编码后返回command string
        u, _ := url.ParseRequestURI(strings.ToLower(aURL))
        commandStr := u.Query().Encode()
        return ComputeHmacSHA1(commandStr, secretKey)
    }

    func SignAPI(aURL string, apiKey string, secretKey string) string {
        aurl := aURL + "&apiKey=" + apiKey
        signature := GenerateSignature(aurl, secretKey)
        return aurl + "&signature=" + url.QueryEscape(signature)
    }

    func Sign(aURL string) string {
        return SignAPI(aURL, API_KEY, SECRET_KEY)
    }

    func main() {
        aurl := "http://localhost:8080/client/api?command=listUsers&response=json"
        fmt.Println(aurl)
        fmt.Println(Sign(aurl))

    //&signature=TTpdDq%2F7j%2FJ58XCRHomKoQXEQds%3D
    }

    展开全文
  • <h5>ISSUE TYPE <ul><li>Bug Report ##### COMPONENT NAME</li></ul> ~~~ CloudStack - Install ~~~ <h5>CLOUDSTACK VERSION ...<p>Previously cloudstack-common was automatically ...apache/cloudstack</p></div>
  • domains as Cloudian users and groups respectively</li><li>During CloudStack UI logout, logout user from CMC</li><li>CloudStack account will be mapped to Cloudian Users, and CloudStack domain will be...
  • Cloudstack 8612

    2020-11-23 07:05:03
    <div><p>To ensure that setting a high timeout value for snapshot backup operation will not affect vCenter connections made for any other operations besides volume snapshot, ...apache/cloudstack</p></div>
  • - CLOUDSTACK-9154: rVPC doesn't recover from cleaning up of network garbage collector - CLOUDSTACK-9187: rVPC routers in Master/Master due to concurrency problem when writing the keepalivd.conf - ...
  • <div><p>This implements a CloudStack Prometheus exporter as a plugin, that serves metrics on a HTTP port.</p> <p>FS: https://cwiki.apache.org/confluence/display/CLOUDSTACK/CloudStack+Metrics+...
  • <div><p>From https://github.com/apache/cloudstack/pull/2207 I've moved the branch to ASF remote to allow cross-collaboration between ACS committers. Feel free to discuss...apache/cloudstack</p></div>
  • <div><p>When a management server is halted or rebooted, the cloudstack-management init script does not successfully kill the associated java process. There will always be an error about "Cannot ...
  • - CLOUDSTACK-9154: rVPC doesn't recover from cleaning up of network garbage collector - CLOUDSTACK-9187: rVPC routers in Master/Master due to concurrency problem when writing the keepalivd.conf - ...
  • it is preferred that CloudStack's Agent is also being started using systemd. <p>This commit includes a service file for the CloudStack Agent with a wrapper script which actually executes Java <p>...
  • - CLOUDSTACK-10288: Config Drive Userdata: support for binary userdata Moved base64 decoding to ISO generation - CLOUDSTACK-10289: Config Drive Metadata: Use VM UUID instead of VM id Aligned ...
  • CloudStack入门指南

    2019-07-23 00:55:40
    资源名称:CloudStack入门指南内容简介:本书是国内第一本系统介绍CloudStack的专业书籍。 本书从历史发展、架构设计、安装配置、基本功能、开发入门等角度对CloudStack进行了全面的介绍。作为云计算IaaS平台,尽管...
  • <div><h3>CLOUDSTACK-8562: DB-Backed Dynamic Role Based API Access Checker <p>This feature allows root administrators to define new roles and associate API permissions to them. <p>A limited form of ...
  • <div><p>CloudStack is importing as Local storage any XenServer SR that is of type LVM or EXT. This causes a problem when one wants to use both Direct attach storage and local storage. Moreover, ...
  • defined in URL [jar:file:/root/.m2/repository/org/apache/cloudstack/cloud-engine-storage-image/4.11.4.0-SNAPSHOT/cloud-engine-storage-image-4.11.4.0-SNAPSHOT.jar!/META-INF/cloudstack/core/spring-...
  • power state in CloudStack. <p>Given the wide range of out-of-band management interfaces such as iLO and iDRA, the service implementation allows for development of separate drivers as plugins. This ...
  • <div><p>The first PR(#1176) intended to solve #CLOUDSTACK-9025 was only tackling the problem for CloudStack deployments that use single hypervisor types (restricted to XenServer). Additionally, the ...
  • SystemVM and ProxyVM seems to run OK at the beginning, however after a while I cannot access host anymore which cloudstack-management running on. /var/log/cloudstack/management/management-server.log ...
  • <div><h2>found a potential NPE in Cloudstack <p>We have developed a static analysis tool <a href="https://github.com/lujiefsi/NPEDetector">NPEDetector</a> to find some potential NPE. Our analysis ...
  • report every 7 (seven) days and submit this information back to the Apache CloudStack project. <p>These anonymous reports do NOT contain any information about Instance names, subnets, etc. It only ...
  • <div><p>This allows native CloudStack users to change password in UI when LDAP is enabled. Overall changes: - A new usersource returned in the listUsers response - Removed ldap check in the UI, ...
  • <div><p>This framework provides CloudStack users the ability to backup their guest VMs for recovery purposes, in case they suffer a hardware or software issue with their instances or the underlying ...
  • <div><p>When using CloudStack with database HA configuration user receives warnings constantly saying “No database selected”. <p>This problem happens at ...
  • ubuntu下安装cloudstack

    2015-01-30 09:16:04
    sudo cloud-setup-databases cloud:123456@localhost --deploy-as=root:123456 -e file -m cloudstack -k cloudstack 后,自动执行时老是到这里就出错(如下) Applying /usr/share/cloud/setup/create-schema-...
  • RIP Nuage Cloudstack Plugin

    2020-11-24 10:09:05
    <p>Removing the Nuage plugin as Nuage is discontinuing CloudStack support. <h2>Types of changes <ul><li>[ ] Breaking change (fix or feature that would cause existing functionality to change)</li><li>...

空空如也

1 2 3 4 5 ... 20
收藏数 4,533
精华内容 1,813
关键字:

cloudstack