CloudStack云基础架构的一些概念

jopen 11年前

1. Zones(区域)

   一个区域在CloudStack配置中是最大的组织单元。一个区域通常代表一个单独的数据中心,虽然在一个数据中心也允许有多个区域。将基础架构设施加入到区域中的好处是提供物理隔离和冗余。例如,每个区域可以有它自己的电源和网络上行链路,区域还可以是分布在不同的物理位置上(虽然这不是必须的)

一个区域包含:

一个或多个机架。每个机架包括一个或多个集群主机或者一个或多个主存储服务器。

所有区域中的机架所共享的二级存储。

                                                                     1.png

Zones对终端用户是可见的。当用户启动一个客户虚拟机的时候,必须为它选择一个zone。用户必须复制他们私有的模版到追加的zones中,以便在那些zones中可以利用他们的模版创建客户虚拟机。

Zones可以是私有的也可以是公共的。公共的zones对所有用户都是可用的。这意味着任何用户都可以在区域中创建客户虚拟机。私有的zones是为一个指定的域预留的。只有在那个域中或者子域中的用户才可以创建客户虚拟机。

位于同一个zone中的主机可以相互访问而不用通过防火墙。位于不同zones中的主机可以通过静态配置V*N通道相互访问。

对每一个zone,管理员必须决定:

在zone中放置多少个机架(pods)

每个机架放置多少个集群

每个集群中放置多少台主机

每个集群中放置多少个主存储服务器(primary storage servers),存储服务器的总容量是多大

每个区域中配置多少个二级存储(secondary  storage)

2. Pods

   一个pod经常代表一个单独的机架。位于同一个pod下的主机处于相同的子网。

   在一个CloudStack配置中pod是第二大的组织单元。Zones中的pod是独立的,每个zone可以包含一个或多个pods

   Pods对终端用户是不可见的。

   一个pod包含一个或多个集群主机,包含一个或多个主存储服务器(primary storage servers)

                                                                                                 2.png

3. Clusters

   集群提供一种方式来管理主机。确切的来讲,一个集群就是一个XenServer服务池,一组KVM服务器的集合或者是一个在vCenter中预先构造的一个VMware集群。集群中的所有主机拥有相同的硬件配置,运行相同的虚拟机管理程序,位于相同的子网,访问同一个共享的主存储。虚拟机实例可以动态地从一台主机迁移到集群中的另一台主机,不用中断对用户的服务。

   集群是CloudStack配置中第三大的组织单元。集群被机架包括,机架被区域包括。集群的大小受潜在的虚拟机管理程序限制,虽然大部分情况下CloudStack建议数目要小一些,请看最佳实践。

   一个集群包括一个或多个主机,一个或多个主存储服务器。

                                                                                                3.png

     CloudStack允许多个集群存在一个云部署下。

     即使当本地存储是私有的,集群仍然要是有组织的,虽然每个集群只有一台主机。

     当使用VMware时,每个VMware集群被vCenter服务器管理。管理员必须向CloudStack注册vCenter服务器。每个zone中可能会有多个vCenter服务器。每个vCenter服务器可以管理多个VMware集群。

4. Hosts

   宿主机是一台单独的计算机。宿主机提供计算资源运行客户虚拟机。每个宿主机配置有虚拟机管理软件来管理客户虚拟机。例如,一个Linux KVM服务器。一个Citrix XenServer服务器,和一个ESXi服务器都是宿主机。

   宿主机是一个CloudStack配置中最小的组织单元。区域包含机架,机架包含集群,集群包含宿主机。

   CloudStack环境中的宿主机:

   提供CPU、内存、存储和虚拟机需要的网络资源

   用高带宽的TCP/IP网络互联同时连接到Internet

   可能驻留在位于不同地理位置的多个数据中心

   可能拥有不同的容量(不同的CPU速度、不同数量的内存等),虽然位于一个集群中的主机必须是同质的

  添加的宿主机可以在任何时候被添加用来为客户虚拟机提供更高的能力。

  CloudStack自动地发现宿主机提供的CPU数量和内存资源。

  宿主机对终端用户是不可见的。终端用户不能决定哪些主机可以分配给客户虚拟机。

  在CloudStack中运行一个宿主机,你必须:

     在宿主机上配置虚拟机管理软件

     分配IP地址给宿主机

     确保宿主机已经链接到CloudStack管理服务器

5. Primary Storage

   主存储和一个集群联系在一起,而且它存储了位于那个集群宿主机中的所有虚拟机的磁盘卷。你可以为一个集群添加多个主存储服务器。至少有一个。通常,主存储服务器越靠近宿主机效能越好。

  CloudStack设计用来处理所有符合标准的iSCSINFS服务器所支持的底层的虚拟机管理程序,比如包括:(也就是主存储可以放在NFS共享出来的目录中和遵循ISCSI共享出来的目录)

   Dell EqualLogic™ for iSCSI

    Network Appliances filers for NFS and iSCSI

    Scale Computing for NFS

   如果你打算只使用本地磁盘安装,你可以跳过添加第二块存储。

6. Secondary Storage

   二级存储是和zone关联的,它存储下面的东西:

       1.模版——可以用来启动虚拟机和包括附加配置信息(比如已经安装的应用程序)的操作系统镜像。[自己理解的是已经安装若干应用程序的系统打包成iso可以用来新建类似的操作系统]

       2.ISO镜像——包含数据或可引导操作系统媒介的磁盘镜像。

       3.磁盘卷快照——可用来进行数据恢复或创建新模版的虚拟机数据的副本

   基于区域的NFS二级存储中的元素可以被区域中的所有主机使用。CloudStack管理将客户虚拟机磁盘分配到特定的主存储设备上存储。(所有虚拟机磁盘都是存在主存储上的)

   除了基于区域的NFS二级存储之外你还可以添加OpenStack项目存储Swift,以使二级存储中的元素对云中的所有主机都可用。当使用Swift时,你要对整个的CloudStack配置Swift存储,然后像往常一样配置为每个zone配置NFS二级存储。每个zone中的NFS存储作为一个缓存区当所有的模版和其它二级存储转发到Swift之前。这个Swift存储像一个位于云端的存储,使在云中的其它zone可以使用模版或者其它数据。在Swift存储中没有层次结构,一个Swift容器包含一个存储对象。整个云中的任何二级存储在需要的时候可以从Swift拉一个容器。不用再将模版和快照从一个zone拷贝到另一个zone,但是当只使用zone NFS的时候是必需的。任何地方任何东西都是可用的。

7. Physical Networks

   7.1 关于物理网络 

   添加一个区域的一个步骤是配置物理网络。每个zone可以关联一个或多个物理网络。网络对应着hypervisor主机上的一个网卡。每个物理网络可以承载一个或多种类型的网络流量。每个网络流量类型的选择大部分取决于你是否用基本网络或高级网络创建一个zone

   zone中的一个物理网络是真实的网络硬件和连线。一个zone可以有多个物理网络。一个管理员可以:

   1> 在一个zone中添加/删除/更新物理网络

   2> 在物理网络上配置VLAN

   3> 配置一个名字,这个网络就可以被hypervisors察觉

   4> 在一个物理网络上配置服务提供者(防火墙、本地负载均衡等)

   5> 配置物理网络主干网的IP地址

   6> 指定哪种类型的流量可以经过该物理网络,或者其它属性像网络速度。

   7.2 配置物理网络的特性

   CloudStack提供了配置设置,你可以用来配置zone中的一个物理网络,包括:

   1> 可以承载什么类型的流量(客户的,公共的,管理的,存储的)

   2> VLANs

   3> 唯一的名字,hypervisors可以发现这个特定的网络

   4> 启用或禁用。当一个网络第一次配置的时候,它是禁用的—not in use yet。管理员设置物理网络可用它才可以被使用。管理员过后也可以再次禁用这个网络,防止在那个物理网络上再创建任何新的虚拟网络;已经存在的网络流量仍在继续虽然状态已经是不可用。

   5> 网络速度

   6> 标签,因此网络可以匹配到物理网络

   7> 隔离方法

  7.3 基本区域的网络流量类型

  当基础网络使用时,在zone中可以只有一个物理网络。那个物理网络承载下面的流量类型:

   1> 客户的。当终端客户跑虚拟机的时候,会产生客户流量。客户虚拟机可以通过一个网络进行通信,这个网络成为客户网络。在一个基本区域中一个机架就是一个广播域,因此对客户网络来说每个机架都有一个不同的IP区间。管理员必须为每个机架配置IP区间。

   2> 管理的。当CloudStack的内部资源进行通信是,会产生管理流量。这包括宿主机之间、系统虚拟机之间的通信。

     [注:强烈建议管理网络和客户网络使用独立的网卡]

   3> 公共的。当云中的虚拟机访问Internet时产生公共流量。为了这个目的必须分配公网可访问的IP地址。终端用户可以通过CloudStackUI界面来实现他们的客户网络和公共网络的NAT网络地址转换,就像获得了一个新的IP地址。

   4> 存储的。在二级存储虚拟机和二级存储服务器之间发送的虚拟机模版和快照产生的流量。CloudStack为存储网络流量使用一个独立的网卡(称为存储网卡)。存储网卡的使用允许在一个高带宽的网络上快速地复制模版和快照。你必须为存储网络分配IP区间。

在一个基本网络里配置物理网络相当的简单。大部分情况下,你只需要配置一个客户网络来承载客户虚拟机产生的流量。如果你使用NetScaler负载均衡器,而且拥有弹性IP和弹性负载均衡,你必须配置一个网络来承载公共流量。当你添加一个新的zone的时候CloudStack会在UI界面呈现必要的网络配置步骤。

  7.4 基本区域客户IP地址

  当使用基础网络时,CloudStack将会为那个机架中的客户机分配位于CIDR区间中的IP地址。为了这个目的,管理员必须添加一个直接的IP区间。这些IP地址对主机来说位于相同的VLAN

  7.5 高级区域网络流量类型

  当使用高级网络时,在zone中可能用多个物理网络。每一个物理网络可以承载一个或多个流量类型,你必须要让CloudStack知道每个物理网络承载什么类型的网络流量。位于高级区域中的网络流量有:

1> 客户的。当终端用户跑虚拟机的时候,他们会产生客户流量。客户虚拟机用来相互通信的网络就可以认为是客户网络。这个网络可以是孤立的也可以是共享的。在一个孤立的客户网络中,管理员需要储备VLAN范围以便为CloudStack的账户提供孤立的网络(可能需要很多歌VLANs)。在一个共享的客户网络中,所有的客户虚拟机共享一个网络。

2> 管理的。当CloudStack的内部资源相互之间进行通信时,会产生管理流量。这包括宿主机之间、系统虚拟机之间以及任何其它的组件与CloudStack管理服务器直接通信。你必须为系统虚拟机配置IP区间来使用。

3> 公共的。当云中的虚拟机访问Internet时会产生公共流量。为了这个目的必须分配可以访问公网的IP。终端用户可以利用CloudStackUI界面取得这些IP地址并且在客户网络和公共网络进行通信时进行NAT网络地址转换。

4> 存储的。在二级存储虚拟机和二级存储服务器之间发送虚拟机模板和快照时产生的流量。CloudStack利用一个单独的网卡(称为存储网卡)来为存储网络提供流量。使用存储网卡允许在一个高带宽的网络上快速传输模板和快照的拷贝。你必须为存储网路配置IP地址区间。

这些流量类型可以每一个都在一个单独的物理网络上,或者他们可以通过几个限制条件联系在一起。当你在UI界面中利用zone创建向导去创建一个新的zone的时候,你会被指引创建一个唯一的有效的选择。

8. 高级zone客户IP地址

   当使用高级网络的时候,管理员可以为客户创建额外的网络。这些网络可以跨越zone并且为所有用户使用,或者局限于一个单独的账户,有这样的情况只有附属于这些网络的账号才可创建客户机。这个网络用VLAN IDIP区间和网管标识。如果需要管理员可以提供成千上万个网络。

9. 高级zone公共IP地址

   当使用高级网络的时候,管理员可以为客户创建额外的网络。这些网络可以跨越zone并且为所有用户使用,或者局限于一个单独的账户,有这样的情况只有附属于这些网络的账号才可创建客户机。这个网络用VLAN IDIP区间和网管标识。如果需要管理员可以提供成千上万个网络。

10. 系统保留的IP地址

在每个zone中你必须为管理网络配置一些预留的IP地址。这个网络负责CloudStack管理服务器和各种系统虚拟机通信,好比二级存储虚拟机、控制代理虚拟机和DHCP。。

预留的IP地址在云中必须的唯一的。不能这个zone中的主机拥有一个私有IP地址而另外一个zone中也拥有相同的IP地址。

一个机架中的主机分配私有IP地址。这些通常都是RFC1918地址。控制代理和二级存储系统虚拟机通常分配CIDR中他们创建的IP地址。

确保计算服务器和管理服务器的IP地址不在系统预留IP地址之内。例如,假设系统预留IP地址区间为192.168.154.2192.168.154.7.CloudStack可以使用.2.7IP地址为系统虚拟机。剩下的机架CIDR可以从.8.254,可以分配给管理服务器和hypervisor

在所有的zone中:

     为每个机架中的系统分配私有IP地址并在CloudStack中配置它们。

     对KVMXenServer,推荐的是每个机架上的每个主机一个私有IP地址。如果你预期机架容量会增长那么就要为它分配足够的IP地址以适应它的增长吧。

在一个使用高级网络的zone中:

对于使用高级网络的zone,我们建议要为你所有的用户分配足够的私有IP地址,为CloudStack系统虚拟机添加足够的必须的地址。通常,系统虚拟机大约需要10个左右的IP地址。更多的信息请参见管理界面系统虚拟机配置那一部分。

当高级网络开始使用的时候,每个机架上可用的私有IP地址的数量取决于你的机架节点上跑的是那种hypervisorCitrix XenServerKVM使用本地链路地址,理论上在地址块上可以提供多于65000个私有IP地址。即使机架增长很快这些IP地址也是足够的。VMWare ESXi使用任何管理员制定的子网方案,通常每个机架管理员只提供255IP地址。因为他们是被物理机器、虚拟路由和其它实体共享的,当机架按比例增长时用尽IP地址是可能的。

当使用高级网络而且采用ESXi作为虚拟机管理程序要确保有足够的IP地址。可以使用下面的技术:

为子网指定一个大的CIDR块。用前20位作为子网号可以指定超过4000IP地址。

创建多个机架,每个机架拥有他自己的子网。例如,如果你创建10个机架每个机架分配255IP地址,那么你就可以提供2550IP地址了。