概述
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 镜像:包含操作系统数据或启动媒质的磁盘镜像。
- 磁盘卷快照:虚拟机数据的已储存副本,能用于数据恢复或者创建新模板。
3.5 network
网络的设计规划是CloudStack的一个亮点,同时也是cloudstack当中比较复杂并且比较难理解的一部分。
3.5.1 网络部署模式
cloudstack支持两种网络部署模式,基本资源网络和高级资源网络
- 基本资源网络
- 高级资源网络
3.5.2 网络的流量类型
- 公用网络
- 来宾网络
共享网络:支持基本资源网络和高级资源网络,不同账户的VM使用同一个共享网络,使用安全组方式进行网络隔离。
隔离网络:仅支持高级资源网络,属于某个特性账户,账户可以拥有一个或者多个隔离网络,使用VLAN方式进行网络隔离。
- 管理网络
- 存储网络
其中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
用户可以根据需要,对vm手动添加策略,如图:
入口规则负责对inbound流量的限制,outbound负责对outbound流量的限制。
CIDR对一个网段设置规则,Account对来自一个用户的流量进行限制(主要针对vm之间的通信)
具体规则可以制定传输层协议、端口范围等等。
- advanced network
4.1.2 我们如何进行借鉴
目前在jpaas和xplat中,我们对于实例的网络通信行为没有进行管理,现有情况是:外部流量可以随意连接instance,instance也可以随意访问外部网络,instance之间(不论是否属于相同app)也可以随意通信。
类比cloudstack,我们可以实现访问控制:
- 以app为单位
- 从inbound和outbound两个方向进行限制。
- 限制instance或者container之间的访问。
我们实现的是私有云,对于访问控制的需求并不是很大,我们可以根绝具体需求来实现访问策略。
最后
以上就是长情季节为你收集整理的Cloudstack Cloudstack的全部内容,希望文章能够帮你解决Cloudstack Cloudstack所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复