Cloudstack



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之间的访问。

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

你可能感兴趣的:(容器)