警告

NOTICE: THIS DOCUMENTATION SITE HAS BEEN SUPERSEDED.

For the current documentation site goto: http://docs.cloudstack.apache.org

网络和流量管理

在CLOUDSTACK中,客户虚拟机之间可以在共享构架下相互通讯,并且可以在一个私有LAN中实现安全和用户互通。CLOUDSTACK的虚拟路由器是实现客户网络功能的主要组件。

来宾流量

在同一个区域内,客户虚拟机之间可以互访,但在不同的区域内,客户虚拟机之间不可以通过(内网)IP地址互访,而只能通过公网IP路由才可以互连。

下图是一个典型的来宾流量设置:

Depicts a guest traffic setup

通常,管理服务会自动为每一个网络建立一个虚拟路由。一个虚拟路由实际上就是运行在物理主机上的一台特殊的虚拟机。每一台在一个独立网络中的虚拟路由有3个网口。如果使用多个公共 VLAN,相应的这台路由器就有多个公共的网口。 它的 eth0 网口是提供客户机通信的网关服务的,它的IP地址是 10.1.1.1。eth1 网口是为系统来配置这个虚拟路由而提供的。eth2 网口被赋予一个公共 IP 地址用来实现外部的公共通信。 同样如果使用了多个公共 VLAN 接入,这台路由器将会拥有多个公共的网口。

虚拟路由器提供DHCP功能,能自动的为每一个客户虚拟机在预先定义好的IP范围之内分配IP地址。用户也可以为虚拟机手工配置不同的IP地址。

Source NAT功能是在虚拟路由里自动配置好的,它可以转发所有来宾虚拟机的外出流量。

一个提供点里的网络

下图演示了一个单提供点的网络配置。主机均连接到提供点层级的交换机。每一个主机至少有一个物理网卡连接到交换机。当然,这种环境也支持网卡绑定。提供点层级的交换机由两个1000M冗余组成,它们通过10G线路上联。

diagram showing logical view of network in a pod.

服务器以如下形式连接:

  • 存储设备只与管理网络连接。
  • 主机同时与管理网络和公共网络连接。
  • 主机也与一个或多个来宾网络连接。

我们推荐用多个物理网卡以改进性能,也推荐用冗余的光纤交换机以改进网络可靠性。

一个区域里的网络

下图说明了一个单一区域内的网络设置。

Depicts network setup in a single zone.

用于管理通信的防火墙工作在NAT模式。通常是分配给网络中的IP地址192.168.0.0/16 B类私有地址空间。每个机柜(POD)分配的IP地址是192.168.*.0/24 C类私有地址空间。

每个区域都有自己的一套公网IP地址。来自不同区域的公网IP地址不重叠。

基本区域物理网络配置

在一个基本的网络中,物理网络的配置非常直接明了。你只需要配置一个客户网络(虚拟)以承载由客户虚拟机产生的流量。当你首次增加一个区域(Zone)到 CloudStack 中,你通过添加域(Add Zone)页面来设置客户网络(虚拟)。

高级区域物理网络的配置

在使用复杂网络的区域中,你需要告知管理服务器,为了实现隔离不同类型的通讯,物理网络是如何设置的。

在高级域中设置客户通信

下面的步骤假定你已经登录进入 CloudStack 的界面。设置基本的客户网络:

  1. 在左边的导航栏,选择基础架构。在区域界面点击查看全部,然后点击你要添加网络的区域。

  2. 点击网络选项卡。

  3. 点击 添加来宾网络。

    添加来宾网络窗口显示:

    Add Guest network setup in a single zone.

  4. 填写以下内容:

    • Name: The name of the network. This will be user-visible
    • Display Text:网络的描述。用户可见
    • Zone: 这里的区域是指你要配置客户网络的区域。
    • 网络提议: 如果管理员已经配置了多个网络方案,可以选择你需要的那个
    • Guest gateway:虚拟机需要使用的网关
    • Guest Netmask:客户虚拟机会使用的子网掩码
  5. 点击确定。

在高级区域中配置公共通信

在一个使用高级网络配置的区域中,你需要配置至少一个用于Internet通信的IP地址范围。

配置共享的客户网络

  1. 作为管理员登录到CloudStack用户界面。

  2. 在左边的导航,选择基础架构。

  3. 在区域页面,点击查看全部。

  4. 选择要添加客户网络的那个区域。

  5. 点击物理网络标签卡。

  6. 选择您要操作的物理网络。

  7. 在客户节点界面,点击配置。

  8. 点击网络选项卡。

  9. 点击 添加来宾网络。

    现实添加客户网络窗口。

  10. 指定以下信息:

    • Name: 要建立的网络的名字。这个是用户可见的

    • 描述: 提供一个简短的方案描述。

    • VLAN ID: VLAN 的ID。

    • Isolated VLAN ID: 二级独立 VLAN 的 ID。

    • Scope: 可用的范围,包括域,帐户,项目和其他所以。

      • Domain: 域,指定客户网络范围的域。指定域中的网络相对其他域是隔离不可见的。如果指定子域访问,域中的客户网络将在所有的子域中可用。
      • Account: 这里的帐户是为建立客户网络所指定的。必须指定域中所属的帐户。
      • Project: 项目是客户网络所建立的项目。必须为这个项目指定域。
      • All: 选择它,会让客户网络对这个区域(Zone)中的所有域,帐户和项目都可用。
    • 网络提议: 如果管理员已经配置了多个网络方案,可以选择你需要的那个。

    • Guest gateway: 虚拟机需要使用的网关。

    • Netmask: 虚拟机子网要使用的网络掩码。

    • IP Range: 定义公网IP范围,这些IP用来访问公网或是从公网访问客户虚拟机。

      如果使用了网卡,这些IP应该在相同的IPv6的CIDR中。

    • IPv6 CIDR: 用于定义网络子网的网络前缀。

    • 网络域: 如果你想为客户虚机网络定义一个域名,在此处输入后缀名。

  11. 点击确定。

使用多个来宾网络

在使用高级网络的资源域里, 额外的来宾网络可以在初始安装后任何时间添加. 你还可以通过指定DNS后缀为每个网络自定义关联的域名.

一个虚机的网络在其创建时定义. 当一个虚机创建以后, 就不能对其网络添加删除, 即便用户可以进入客户虚机删除指定网卡的IP地址.

每一个虚机只有一个默认的网络. 在这个默认网络里, 虚拟路由器的DHCP响应将设置客户的默认网关. 除了单一,必须的默认网络, 多个非默认的网络也可以添加到客户虚机里. 管理员可以控制哪个网络作为默认的网络.

附加的网络可以给所有账户使用或者分配给特定的账户. 对所有账户都可用的网络在整个资源域有效. 任何可以访问这个资源域的用户都可以使用这个网络创建虚机. 这些资源域一级的网络基本不提供客户之间的隔离. 分配给特定帐户的网络提供强制隔离的功能.

增添一个虚拟机的网络

  1. 使用管理员或者终端用户账号登录CloudStack UI。
  2. 在左侧的导航栏,选择网络。
  3. 地阿基添加来宾网络。提供以下信息:
    • Name:网络的名称。对于最终用户可见。
    • Display Text:网络的描述信息。对于最终用户可见。
    • Zone:此网络所应用到zone的名称。每个zone都是一个广播域,因此每个zone中的来宾网络都有不同的IP范围。管理员必须为每个zone配置IP范围。
    • Network offering: 如果管理员已经配置了多个网络,选择一个你想使用的。
    • Guest Gateway: 来宾网络的网关。
    • Guest Netmask: 来宾网络的子网掩码。
  4. 点击创建。

在VMs中重新配置网络

CloudStack能让你在不同网络间移动VMs和重新配置VM的网络。你可以从一个网络中移除一个VM,再将其移动到另一个网络。你同样可以修改虚拟机的默认我拿过来,使用这个功能,混合和传统的服务器负载可以被轻松缓解。

XenServer、VMware和KVM hypervisors支持这个特性。

先决条件

确保虚拟机上安装了vm-tools以便通过VMware hypervisor添加或移除网络。

添加网络

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航菜单中,点击实例。

  3. 选择你要处理的VM。

  4. 点击网络适配器标签。

  5. 将网络添加到 VM

    显示添加网络对话框。

  6. 在下拉列表里选择你要添加给VM的网络。

    这样就为这个网络添加了一个新网卡。你可以在网卡页面查看下列信息:

    • ID
    • 网络名称
    • 类型
    • IP地址
    • 网关
    • 子网掩码
    • 默认的
    • CIDR(IPv6)

移除网络

  1. 使用管理员或者终端用户账号登录CloudStack UI。
  2. 在左侧的导航菜单中,点击实例。
  3. 选择你要处理的VM。
  4. 点击网络适配器标签。
  5. 找到你要移除的网卡上。
  6. 点击移除网卡按钮。button to remove a NIC.
  7. 点击Yes确认。

选择默认网络

  1. 使用管理员或者终端用户账号登录CloudStack UI。
  2. 在左侧的导航菜单中,点击实例。
  3. 选择你要处理的VM。
  4. 点击网络适配器标签。
  5. 找到你想要的网卡。
  6. 点击设置为默认网卡按钮。 button to set a NIC as default one..
  7. 点击Yes确认。

在来宾网络上更改网络方案

用户或者管理员可以更改与之相关的来宾网络的网络方案。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 如果你将使用CloudStack虚拟路由的一个网络方案改成使用公共网络设备作为网络服务商,那么你必须先关掉该网络中的所有虚机。

  3. 在左侧的导航栏,选择网络。

  4. 点击你要修改的网络名称。

  5. 在 详细 页签,点击 编辑按钮。button to edit.

  6. 在网络方案中,选择新的网络方案,然后点击应用。

    这时会有一个提示问你是否保持已存在的CIDR不变。这是让你了解如果你改变网络了方案,那么CIDR会受到影响。

    如果你将虚拟路由升级到外网设备,在看到变更CIDR以继续时,请选择Yes。

  7. 等待更新完成。在网络变更完成之前不要试图重启虚拟机。

  8. 如果你停止了任何VMs,请重启他们。

隔离的来宾网络中的预留IP

在隔离的来宾网络中,来宾IP地址空间中的一部分可以被保留下来以供非CloudStack VMs或者物理服务器使用。要真么做,你应该在来宾网络应用状态时依靠指定CIDR来配置一个预留IP地址范围。如果你的客户希望在同一个网络中有非CloudStack控制的VMs或者物理服务器,它们可以共享一部分主要为来宾网络提供的IP地址空间。

在高级域中,定义一个网络时要给其赋予一个IP地址范围或CIDR。CloudStack虚拟路由器起着DHCP的作用,并通过CIDR来给客户虚拟机分配IP地址。如果为了预留CIDR不用于cloudstack,应当进行说明,即部分IP地址范围或CIDR仅能被DHCP服务分配给在cloudstack中创建的虚拟机。剩下的IP地址被称作预留IP地址范围。当预留的IP被配置时,管理员可以增加额外的虚拟机或并不属于cloudstack的物理服务器到同一个网络,可以将预留的IP地址指定给他们。cloudstack的客户虚拟机不能够从预留的IP地址中获得地址。

IP预留事项

在给非cloudstack内的机器预留IP地址时,要考虑以下几个方面:

  • IP预留仅在隔离网络内支持

  • 仅当网络在实施状态时,IP预留才能被应用。

  • 默认不做IP预留。

  • 指定客户的CIDR必须是网络CIDR的子网。

  • 指定一个有效的客户虚拟机CIDR。只有不活动的IP在客户虚拟机CIDR存在时,IP预留才能被应用。

    如果任一虚拟机被分配了客户虚拟机CIDR之外的IP地址时,IP预留将不能应用。

  • 为重置一个已存在的IP预留,通过在CIDR框指定CIDR值就可应用IP预留。

    例如,下表描述了客户网络创建的三种情形:

    案例 CIDR 网络CIDR 非cloudstack虚拟机的IP预留范围 描述
    1 10.1.1.0/24
    2 10.1.1.0/26 10.1.1.0/24 10.1.1.64-10.1.1.254 在界面的CIDR框内输入10.1.1.0/26或通过UpdateNetwork的API配置为guestvmcidr=10.1.1.0/26,进行IP预留配置
    3 10.1.1.0/24 在界面的CIDR框内输入10.1.1.0/24或通过UpdateNetwork API配置为guestvmcidr=10.1.1.0/24,进行IP预留清除

局限性

  • 如果在客户虚拟机CIDR外发现活动的IP地址,IP预留将不被支持。
  • 在IP预留中,引起CIDR变化的网络升级方案都将无效,如将无外部设备的方案升级到带有外部设备的方案。在新实施的网络中,要重新配置IP预留。

最佳实践

一旦网络状态变为实施,应尽快应用IP预留到客户网络。如果在第一台客户虚拟机部署后应用IP预留,则会在应用IP会有较少的冲突发生。

预留一个IP范围

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 点击你要修改的网络名称。

  4. In the Details tab, click Edit. button to edit.

    CIDR框将变为可编辑状态

  5. 在CIDR框,说明客户虚拟机的CIDR

  6. 点击应用

    等待更新完成。

为账户预留公共IP地址及VLANS

CloudStack可以让你能够独立的为账户预留一部分公共IP地址和VLANS。在创建区域阶段,你可以继续定义一部分VLANS以及多个公共IP范围。这种功能扩展特性可以让你能够为客户预留固定的一部分VLAN和客户IP地址

注意,如果一个账户使用了所有分配给他的VLAN和IP,这个账户可以从系统获得二个以上的资源。CloudStack为根管理员提供了二个参数可以进行控制,分别是use.system.public.ips和use.system.guest.vlans。当一个账户分配了资源并且这些资源已经被消耗掉时,这二个全局参数可以使根管理员拒绝此账户从公共IP和来宾VLAN获取资源。二个配置都能在帐户级别进行配置。

这些特性可提供以下的功能:

  • 从一个高级区域中预留一个VLAN范围和公共IP地址,并可以将其指定给一个账户。

  • 将一个VLAN和IP地址从一个账户解除联系。

  • 查看分配给帐户的公共IP地址。

  • 检查需要的范围是否可用并且要符合帐户限制。

    不能超过每个账户最大的IP限制数。

分配IP地址给一个账户

  1. 作为管理员登录到CloudStack用户界面。

  2. 在左侧导航栏中,点击基础架构

  3. 在区域中,点击查看全部

  4. 选择你要设置的区域。

  5. 点击物理网络标签卡。

  6. 在图的公共节点上,点击配置。

  7. 点击IP范围页签。

    或者指定一个已经的IP范围给帐户,或创建一个新的IP范围并指定给一个帐户。

  8. 要指定一个已有IP范围给帐户,按以下操作进行

    1. 确定需要分配的IP范围

    2. 点击添加帐户按钮。button to assign an IP range to an account.

      会弹出添加帐户对话框。

    3. 指定以下信息:

      • 帐户: 即需要指定IP地址范围的帐户
      • : 与帐户关联的域名

      要指定一个新的IP范围给帐户,按以下操作进行

      1. 指定以下信息:

        • 网关

        • 掩码

        • VLAN

        • 起始IP

        • 结束IP

        • 帐户: 按以下操作进行:

          1. 点击帐户

            会显示添加帐户页

          2. 指定以下信息:

            • Account: The account to which you want to assign an IP address range.
            • : 与帐户关联的域名
          3. 点击确定。

      2. 点击 添加

确定需要分配的IP范围

  1. 安装好CloudStack管理端后,使用管理员帐号登录CloudStack用户界面。

  2. 在左侧导航栏中,点击基础架构

  3. 在区域中,点击查看全部

  4. 选择你要设置的区域。

  5. 点击物理网络标签卡。

  6. 在图中的来宾节点上,点击配置

  7. 选择分配VLAN范围页签

  8. 点击分配VLAN范围

    会弹出分配VLAN对话框。

  9. 指定以下信息:

    • VLAN Range: The VLAN range that you want to assign to an account.
    • Account: The account to which you want to assign the selected VLAN range.
    • : 与帐户关联的域名

在单网卡配置多个IP地址

CloudStack能够让你给每个客户虚拟机网卡配置多个私有IP地址,除主IP地址外,你可以指定额外的IP地址到客户虚拟机网卡。在所有的网络配置中,如基础配置,高级配置,VPC,均支持这一功能。安全组,静态NAT及端口转发服务在额外的IP地址上也都被支持。

当然,你也可以从来宾子网中指定一个IP,如果没有指定,将会从来宾虚拟机子网中自动选择一个。可以从UI中查看每一个与来宾虚拟机网卡关联的IP地址。也可以在CloudStack界面中通过网络配置选项在那些额外的来宾虚拟机上应用NAT。但必须指明网卡与哪一个IP关联。

在XenServer,KVM和VMware虚拟机中,都支持这些功能。注意,VMware不支持基础区域的安全组。

使用案例

一些使用案例见以下描述

  • 网络设备,如防火墙或负责均衡设备,一般来讲,当他们在网络接口上接入更多的IP地址时,他们能够更好的工作。
  • 在接口和实例中迁移IP地址。绑定到特定IP地址的应用可以在实例中迁移。
  • 在单个实例上开启多个SSL网站。可以在单个实例上安装多个SSL认证,每一个认证都关联一个单独的IP地址。

指南

为防止IP冲突,当多个网络连接至同一个虚拟机时,要配置不同的子网。

指定额外的IP给虚拟机

  1. 登录到CloudStack的界面

  2. 在左侧导航栏,点击实例

  3. 点击拟配置的实例

  4. 在详细 页签,点击网卡

  5. 点击查看二级地址

  6. 点击获取新二级IP,在确认对话框点击确定。

    需要手动配置来宾虚拟机的网卡。在虚拟机上,CloudStack不会自动配置获取IP。确保在虚拟机重启IP地址配置仍有效。

    稍等一会,新的IP地址会出现,状态栏为会显示为分配。现在可以在端口转发或静态NAT规则中使用此IP地址了。

更改端口转发和静态NAT服务

因为每一个网卡都可关联至多IP,CloudStack可以允许为端口转发及静态NAT服务选择一个目标IP。默认为主IP。为开启此功能,另一个可选的配置参数 虚拟机来宾IP 需要被加至端口转发及静态NAT 的API中去(开启静态NAT,创建IP端口转发),以示IP地址NAT需要配置。如果虚拟机来宾IP 没有设置,NAT会配置在虚拟机的私有IP上,如果设置了,NAT会配置在虚拟机的主IP上。

关于多IP范围

注解

这些功能仅能在IPV4的地址是实现。

在基础区域以及高级区域的开启安全组,CloudStack能够让你从不同的子网添加来宾IP范围。对于高级区域的开启安全组,多个子网可被加至同一个VLAN。随着此功能的增加,当IP地址耗尽时,你能够从同一个子网或从不同的子网添加IP范围。这会允许你添加更多的子网,因此减少了了地址管理的问题。为支持这一特性,创建VLANIP范围的API被加以扩展,这样就能从不同的子网添加IP范围

确实在添加IP范围前,手动配置了子网的网关。注意,CloudStack仅支持一个子网有一个网关。不支持重叠的子网。

使用删除VLAN范围的API删除IP范围。如果拟删除的IP在被使用时,此操作会失败。如果删除的范围包含DHCP服务器拟分配的IP地址CloudStack会从同一个子网下获取新的IP。如果在子网内没有可供利用的IP时,删除操作会失败。

在KVM, xenServer以及VMware虚拟机中,都支持这项功能。

About Elastic IPs

弹性IP(EIP)地址是指与帐户关联的IP地址,能起到静态IP地址的作用。帐户所有者能完全控制隶属于此账户的弹性IP。作为帐户拥有者,你可以从你帐户的EIP池中选择一个IP分配给虚拟机。如果后续需要,你可以继续分配此IP地址给另一个虚拟机。在VM宕机时,此功能特别有用。此IP地址可以重新指定给一个新的虚拟机,而不是取代已经宕机的虚拟机。

与公共IP地址一样,弹性IP地址通过使用静态NAT关联至与之相关的私有IP地址。在起用了EIP的基础域中,EIP的服务与静态NAT的服务一一对应。默认的网络方案,默认共享EIP与负载均衡网络方案,在区域部署了NetScaler设备的前提下,能够提供EIP以及ELB网络服务。参见以下更详细的说明。

Elastic IP in a NetScaler-enabled Basic Zone.

在图中,NetScaler设备对CloudStack的实例而言是一个默认的入口或出口,防火墙是剩余数据中心的出口或入口。Netscaler对来宾网络提供负载均衡以及静态NAT的服务。在机架和管理服务器上,来宾流量是不同的子网或VLAN。在数据中心的核心交换机的基础路由策略是通过NetScaler转发公共流量,其他数据中心的流量则通过防火墙。

EIP的工作流如下:

  • 当部署一个用户虚拟机时,会从区域配置的IP中自动获得一个公共IP。这个IP为虚拟机帐户所拥有。

  • 每一个虚拟机都有自己的私有IP。当来客户虚拟机启动时,通过使用在公共IP和私有IP之间的入口网络地址转换(INAT)以及预留地址转换(RNAT),NetScaler设备可以提供静态NAT

    注解

    入口网络地址转换(INAT)是NetScaler支持的一类NAT类型,在此类型中,来自公共网络(如Internet)的数据包中的目标IP地址被私有网络中虚拟机的私有地址取代。预留地址转换(RNAT)也是NetScaler支持的一类NAT类型,私有网络中虚拟机产生的数据包中的源IP地址被公共IP地址取代。

  • 默认的公共IP在两种情况下会被释放:

    • 当虚拟机停止时。当虚拟机启动时,可以重新获取一个新的公共IP,并不必须是从公共IP地址池中最初分配的那一个。
    • 当用户获取公共IP(弹性IP)时。这些公共IP与帐户相关联,但不与任何私有IP相关。然而,用户可以开启静态NAT将帐户中虚拟机的私有IP与之关联。对应公共IP的静态NAT规则可随时取消。当静态NAT关闭时,会从地址池中分配的一个新的公共IP,并不必须是最初分配的那一个。

对部署而言,公共IP会受限于资源,可以灵活的选择默认不分配公共IP。可以在开启了EIP的基础区域中,通过关联公共IP选项来打开或关闭自动公共IP指定。如果在创建网络方案时,你关闭了自动公共IP指定,则在使用此网络方案部署时,仅会分配一个私有IP给虚拟机。此后,用户虚拟机可以获取一个IP,并可以开启静态NAT。

要了解更多关于关联公共IP的选项,请参考`”创建一个新的网络方案” <networking.html#creating-a-new-network-offering>`_.

注解

设计关联公共IP的功能,仅是为使用用户虚拟机。系统虚拟机仍然默认会获取公共IP和私有IP,与网络配置并不相关。

在基础区域中,使用默认具有EIP和ELB服务的网络方案来创建共享网络时,仍然会给每一个用户虚拟机分配公共IP。

端口IP

关于端口IP

在CloudStack中,端口IP是地域级的IP地址池,其天然具有弹性,亦即可以在地理隔离的区域中进行转发。作为管理员,可以在地域级提供IP地址池供用户使用。如果在用户所属的地域,其管理员提供了端口IP,用户就可以获取此类IP。在高级区域内,这些IP可用于任一服务。也可以在基础区域中为EIP服务使用端口IP。

端口IP的主要功能如下:

  • IP是静态分配的。
  • IP与网络无关。
  • IP关联是可以通过网络转发的。
  • IP可以在基础区域和高级区域中转发。
  • IP可通过VPC,非VPC隔离和共享网络进行转发。
  • 端口IP转发仅对静态NAT可用。

指南

在转发至另一网络前,确保没有网络规则(如防火墙,静态NAT,端口转发等等)不存在于端口IP。

配置端口IP

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧导航栏中,点击地域

  3. 选择拟修改的地域。

  4. 点击查看端口IP

  5. 点击端口IP范围

    会出现 添加端口IP范围的窗口

  6. 指定以下信息:

    • 起始IP/结束IP: 从Internet可以访问的一个IP地址范围,将会分配给客户虚拟机。输入起始IP以及结束IP,定义CloudStack指定给客户虚拟机的IP范围。
    • 网关: 配置端口IP地址所使用的网关。
    • 掩码: 与端口IP范围关联的掩码。
    • VLAN: 公共流量拟使用的VLAN。
  7. 点击确定。

获取端口IP。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 点击拟修改的网络名称。

  4. 点击查看IP地址。

  5. 点击获取新IP。

    获取新IP的窗口会出现。

  6. 说明是否需要IP跨区。

  7. 在确认对话框中点击确定。

    稍等一会,新的IP地址会出现,状态栏为会显示为分配。现在可以在端口转发或静态NAT规则中使用此IP地址了。

便携式IP

IP要从一个网络转换至另一网络的话,只需启用静态NAT。但是,当一个portable IP对应一个网络的时候,你可以在网络中为任何服务使用它 。

要跨网络转换一个portable IP,执行下列API:

http://localhost:8096/client/api?command=enableStaticNat&response=json&ipaddressid=a4bc37b2-4b4e-461d-9a62-b66414618e36&virtualmachineid=a242c476-ef37-441e-9c7b-b303e2a9cb4f&networkid=6e7cd8d1-d1ba-4c35-bdaf-333354cbd49810

用正确的UUID替换此处的UUID。比如,如果你想转换一个portable IP至X网络和一个网络中的VM Y,请执行下列操作:

http://localhost:8096/client/api?command=enableStaticNat&response=json&ipaddressid=a4bc37b2-4b4e-461d-9a62-b66414618e36&virtualmachineid=Y&networkid=X

共享网络中的多子网

CloudStack为你提供了在基本zones和启用了安全组的高级zones不同的子网中灵活的添加来宾IP段功能 。在启用了安全组的高级zones中,这意味着多子网可以被添加到同一个VLAN。这个特性还意味着,当IP地址用尽的时候,你可以从同一个子网或从不同的子网添加IP地址范围。这将允许你使用更多的子网,降低地址管理工作量。你也可以删除已经添加的IP地址范围。

先决条件和指南

  • 这个特性只能被实现在:
    • IPv4地址
    • 如果虚拟路由是由DHCP提供的
    • 在KVM,XenServer和VMware hypervisors
  • 在添加IP范围之前,手动配置新子网的网关。
  • CloudStack只支持一个子网对应一个网关;交叉子网目前不支持。

给共享网络添加多子网

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左边的导航,选择基础架构。

  3. 在Zones上,点击查看更多,然后点击你要进行操作的zone..

  4. 点击物理网络。

  5. 在图中的来宾节点上,点击配置

  6. 点击网络。

  7. 选择你想要操作的网络。

  8. 点击查看IP范围。

  9. 点击添加IP范围。

    显示的添加IP范围对话框如下:

    adding an IP range to a network.

  10. 指定以下信息:

    所有的区域必须填写的。

    • 网关:你创建网络层的网关。确保网关在你创建VPC时指定的超级CIDR范围内,并且不能与已存在VPC的任何网络层的CIDR重叠。

    • 子网掩码:你创建的网络层的子网掩码。

      比如,如果VPC CIDR是10.0.0.0/16并且该网络层CIDR是10.0.1.0/24,那么这个网络层的网关是10.0.1.1,子网掩码是255.255.255.0.

    • 起始/结束IP:从互联网获得的和将被分配给来宾VMsIP地址范围。输入第一个和最后一个IP地址,该地址范围定义的是CloudStack能分配给来宾VMs的范围。

  11. 点击确定。

使用Private VLAN隔离高级Zone中的网络

在共享网络中的隔离来宾流量能被Private VLAN(PVLAN)获取。PVLANs提供同一个VLAN里端口间的2层网络隔离。在启用了PVLAN的共享网络,一个用户VM不能到达其他用户VM,但是他们能与DHCP服务器和网关通讯,反过来这样能允许用户去控制网络内部的流量,并且帮助他们像阻止与其他用户VMs通讯一样的去部署无需通讯的多个应用程序。

  • 使用PVLAN在共享网络中隔离VMs。
  • 在KVM,XenServer和VMware hypervisors中支持
  • 启用了PVLAN的共享网络可以是来宾VM的多个网络的一部分。

关于Private VLAN

在以太网交换机中,VLAN是二层网络中的一个主机之间主机能建立直接通讯的广播域 。Private VLAN被设计成一个标准的VLAN的延伸,为了进一步细分逻辑广播域。一个规则的VLAN是单一广播域,但是一个 private VLAN将一个较大的VLAN广播域划分为较小的多个子域。子域表现为一对VLANs:一个主VLAN和一个辅助VLAN。被划分为较小组的原始VLAN叫主,这意味着所有的在private VLAN中的VLAN对共享着同一个主VLAN。所有的辅助VLANs存在与主VLAN中。每个辅助VLAN有一个特定的区别于其他子域VLAN ID。

在private VLAN中有三种端口类型,它们实质上决定了所包含的主机的流量走势。每组端口都有自己唯一的策略,它能控制配置同一个private VLAN域中连接到端口的主机与其他已连接主机的通讯。使用下面三种端口定义中的一种来配置每个PVLAN对中的主机:

  • 混杂模式(Promiscuous):混杂模式的端口能与所有的接口通讯,包括可通讯与隔离属于辅助VLANs的主机端口。在混杂模式中,主机被连接到混在模式端口并且能够直接与主VLAN和辅助VLAN中的资源。典型的连接到混杂模式端口的是路由器,DHCP服务器和其他受信任的设备。
  • 隔离(Isolated)VLANs: 隔离模式VLAN中的端口不能与其他二层网络中的端口通讯。连接隔离模式端口上的主机只能直接与混杂模式下的资源通讯。如果你的客户设备只访问网关路由器,请将其附加至隔离端口。
  • Community VLANs:中的端口能与其他端口和混杂模式下的端口通讯,但是他们不能与二层网络中的其他community VLAN中的端口通讯。在Community模式下,主机能与同一community中的主机和连接到混杂模式中的主VLAN的主机可以通讯。如果你的客户有两个设备需要与其他客户的设备隔离,但是他们之间又要通讯,请将他们部署至 community 端口。

延伸阅读:

先决条件

  • 在支持的交换机上使用PVLAN。

    更多信息,请参考 Private VLAN Catalyst Switch Support Matrix

  • 将所有能识别PVLAN的二层交换机之间互连,并且其中一个要连至一个路由器。主机连接到的所有端口需配置为trunk模式。打开VLAN管理,主VLAN(公共网络)和隔离的辅助VLAN端口。配置交换机连接到路由器的端口为PVLAN混杂trunk,这样可以为不识别PVLAN的路由器转换一个隔离的VLAN到主VLAN。

    注意只有Cisco Catalyst 4500有PVLAN混杂trunk模式,可以连接所有普通VLAN和PVLAN到不能识别PVLAN的交换机。其他支持PVLAN的Catalyst交换机,在PVALN对中的每个交换机上使用级联线连接到上联交换机。

  • 在你的物理交换机上使用带外管理配置private VLAN。

  • 在XenServer和KVM上使用PVALN之前,请启用Open vSwitch (OVS)。

    注解

    XenServer和KVM中的OVS不支持原生的PVLAN。因此,靠修改flow table,CloudStack为XenServer和KVM模拟OVS中的PVLAN。

配置一个启用了PVLAN的来宾网络

  1. 作为管理员登录到CloudStack用户界面。

  2. 在左边的导航,选择基础架构。

  3. 在区域页面,点击查看全部。

  4. 选择要添加客户网络的那个区域。

  5. 点击物理网络标签卡。

  6. 选择您要操作的物理网络。

  7. 在客户节点界面,点击配置。

  8. 点击网络选项卡。

  9. 点击 添加来宾网络。

    现实添加客户网络窗口。

  10. 指定以下信息:

    • Name: 要建立的网络的名字。这个是用户可见的

    • 描述: 提供一个简短的方案描述。

    • VLAN ID: VLAN 的ID。

    • 辅助隔离VLAN ID:辅助隔离VLAN的唯一ID。

      更多关于辅助隔离VLAN的描述,请参考see 关于 Private VLAN”.

    • Scope: 可用的范围,包括域,帐户,项目和其他所以。

      • Domain: 域,指定客户网络范围的域。指定域中的网络相对其他域是隔离不可见的。如果指定子域访问,域中的客户网络将在所有的子域中可用。
      • Account: 这里的帐户是为建立客户网络所指定的。必须指定域中所属的帐户。
      • Project: 项目是客户网络所建立的项目。必须为这个项目指定域。
      • All: 选择它,会让客户网络对这个区域(Zone)中的所有域,帐户和项目都可用。
    • 网络提议: 如果管理员已经配置了多个网络方案,可以选择你需要的那个。

    • Guest gateway: 虚拟机需要使用的网关。

    • Netmask: 虚拟机子网要使用的网络掩码。

    • IP Range: 定义公网IP范围,这些IP用来访问公网或是从公网访问客户虚拟机。

    • 网络域: 如果你想为客户虚机网络定义一个域名,在此处输入后缀名。

  11. 点击确定。

安全组

关于安全组

安全组提供一种方法来隔离VMs流量。一个安全组是一组依照设置名为入口规则和出口规则来过滤他们进出流量的VMs,这些规则依靠与VM通讯的IP地址来过滤网络流量。安全组在使用基础网络的zones中尤为重要,因为这里只有一个来宾网络。在高级zones中,只有KVM hypervisor支持安全组。

注解

在一个使用高级网络的zone中,你可以改为定义多个来宾网络隔离流量至VMs。

每个CloudStack账号匹配一个拒绝所有入站流量和允许所有出口流量的默认安全组 。可以编辑默认的安全组以便所有新VMs的策略继承一些的想要的设置。

任何CloudStack用户可以增加任意数量的安全组。当一个新的VM运行起来的时候,它会被添加到默认安全组除非其他用户指定了其他安全组。一个VM可以是任何安全组的成员。一旦VM被添加到一个安全组,它会继承这个组的生命周期;你不能移动一台正在运行的VM到其他安全组。

你可以通过删除或添加任意的入口和出口策略来修改一个安全组。当你这么做的时候,新的策略会应用到组中的所有VMs,无论是运行的还是关机的。

如果没有指定入口规则,那么流量会被禁止,除了已经允许通过一个出口规则响应任何流量 。

添加一个安全组

一个用户或者管理员能定义一个新的安全组。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择安全组。

  4. 点击添加安全组。

  5. 提供一个名称和描述。

  6. 点击确定。

    新的安全组出现在安全组详细信息标签中。

  7. 要使安全组生效,继续给这个安全组添加入口和出口策略。

高级区域中的安全组(只针对KVM)

以KVM作为虚拟机时,在单共享广域的网络内,CloudStack可以通过安全组来隔离客户。通过使用安全组而不是多VLAN,可以在云中隔离客户时具有更高的灵活性

Setting for CentOS

To use security groups on CentOS/RHEL/Fedora please enable bridge based filtering, ensure that default sysctl configuration file usually at /usr/lib/sysctl.d/00-system.conf set to following and run ‘sysctl -p’:

注解

# Enable netfilter on bridges. net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-arptables = 1

局限性

下列不支持此功能:

  • 在开启了安全组的共享网络内,同一VLAN内具有不同网关或掩码的二个IP范围,
  • 在共享网络的特殊帐户内,同一VLAN内具有不同网关或掩码的二个IP范围
  • 在开启了安全组共享网络的多VLAN范围
  • 在共享网络的特殊帐户内,多个VLAN范围

为使用此特性,在区域内必须开启安全组

开启安全组

使用安全组功能之前,必须先在Zone中启用安全组功能。系统管理员可以在创建一个新的Zone时,通过选择带‘安全组’功能的网络方案进行启用。在高级安装指南的基本Zone配置中有该过程的详细描述。系统管理员不能对现有Zone启用安全组,只能在新建Zone时启用。

对安全组添加入口出口规则

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络

  3. In Select view, choose Security Groups, then click the security group you want.

  4. 为增加入口规则,点击入口规则并填写相应内容,以说明在此安全组内何种网络流量可以到达虚拟机实例。如果没有说明入口规则,则不会允许流量进入。也就只有出口规允许的流量了。

    • 通过CIDR帐户添加. 表明在CloudStack帐户中是否有CIDR定义的流量来源或是已存在的安全组。如果允许来自另一安全组的所有虚拟机的流量进入,则添加此帐户。
    • 协议. 发送源会使用网络协议来发送流量到安全组。TCP和UDP是典型的二种用来数据交换和终端用户交流的协议。ICMP则用来发送错误信息或网络监控数据
    • 开始端口,结束端口. (仅对TCP,UDP)。目的地为进入流量而设的监听端口范围。如果仅开放了单个端口,则在两者的区域中用同一端口。
    • ICMP类型,ICMP编码. (仅对ICMP)。接受的信息及错误码的类型。
    • CIDR. (仅通过CIDR添加)。为接受来来自特殊地址块的流量,输入一个CIDR,多个时用逗号隔开。CIDR是进入流量的基础IP地址。例如:192.168.0.0/22,为允许所有CIDR,请设为0.0.0.0/0
    • 帐户,安全组. (仅通过帐户添加)。为接受来自另一安全组的流量,输入一个CloudStack帐户和在此帐户中已经定义的安全组的名字。为允许你正在编辑的安全组内虚拟机之间的流量,输入你在第7步使用的相同的名字。

    下面这个例子允许内部任何地方的HTTP访问

    allows inbound HTTP access from anywhere.

  5. 为添加一个出口规则,点击出口规则并填写以下内容,以说明在此安全组内的虚拟机,被允许哪一类型的流量送出。如果出口规则没有说明,所以的流量都被允许出去一旦进行了说明,则以下流量可以允许出去:在出口规则中进行说明的,查询DNS和DHCP服务器的,响应来自入口规则允许进入的流量的

    • 通过CIDR帐户添加. 表明流量目的地是否已通过IP地址(CIDR)定义或是CloudStack帐户(Account)内存在的安全组。选择帐户,以允许流量到其安全组内所有虚拟机
    • 协议. 虚拟机发送流量需要的协议。TCP和UDP是典型的二种用来数据交换和终端用户交流的协议。ICMP则用来发送错误信息或网络监控数据
    • 开始端口,结束端口. (仅对TCP,UDP) 。目的地为进入流量而设的监听端口范围。如果仅开放了单个端口,则在两者的区域中用同一端口。
    • ICMP类型,ICMP编码. (仅对ICMP) 。信息及错误码的类型。
    • CIDR. (仅通过CIDR添加) 。为接受来来自特殊地址块的流量,输入一个CIDR,多个时用逗号隔开。CIDR是进入流量的基础IP地址。例如:192.168.0.0/22,为允许所有CIDR,请设为0.0.0.0/0
    • 帐户,安全组. (仅通过帐户添加) 。为接受来自另一安全组的流量,输入一个CloudStack帐户和在此帐户中已经定义的安全组的名字。为允许你正在编辑的安全组内虚拟机之间的流量,输入名字。
  6. 点击 添加

外部防火墙及负载均衡

CloudStack允许通过外部的Jniper SRX 设备和外部NetScaler设备或网关负载均衡设备和负载均衡服务。在此情形下,虚拟机使用SRX作为网关。

关于使用NetScaler负载均衡器

在区域中,或高级区域使用隔离网络时,CloudStack支持思杰的NetScaler作为外部网络设备元素作为负责均衡。拟通过其他方案提供负载均衡而不是CloudStack的虚拟路由器时,就可以建立一个外部负载均衡器

注解

在基础区域中,仅在弹性IP或弹性负载均衡服务开启时,才支持负载均衡服务

在基础域中使用NetScaler负载均衡提供EIP或ELB服务时,确保所有的客户虚拟机流量必须通过NetScaler设备进出。当入流量通过NetScaler设备时流量通过使用NAT协议被路由,此NAT协议依赖于公共IP到私有IP的配置。来自客户虚拟机的流量通常要经过3层路由器,为确保出流量通过提供EIP/ELB的NetScaler设备,3层路由器,必须具有基础策略。必有设立一个具有基础策略的路由器可保证所有客户机的流量都能转向NetScaler设备。这也需要确保客户虚拟机的出流量通过使用NAT被路由到公共IP。关于EIP的更多信息,参看`”关于EIP” <#about-elastic-ip>`_.

NetScaler可以设置成直通模式。它必须在区域中部署客户虚拟机负载均衡规则之前加入。

CloudStack中NetScaler的功能作用与CloudStack文档中说明的使用F5 外部负载均衡器的功能作用相同。一点差别就是,F5支持路由域名,而NetScaler无此功能。NetScaler也不可以用作防火墙。

为CLOUDSTACK管理端安装和启用外部负载均衡功能,参阅安装文档里的外部客户负载均衡。

The Citrix NetScaler comes in three varieties. The following summarizes how these variants are treated in CloudStack.

MPX

  • 物理应用。能够进行深度数据包检测。可作为防火墙和负载均衡应用。
  • 在高级区域中,完全支持负载均衡功能,没有限制。在基础区域中,也提供静态NAT,EIP,ELB功能。

VPX

  • 虚拟应用,可以运行在XenServer,ESXi以及Hyper-V上虚拟机上。与MPX功能相同。
  • 在ESXi和XenServer上支持。对MPX也支持一些功能。CloudStack将VPX和MPX作为同一类型的设备看待。

SDX

  • 物理应用。可以在单个应用上创建多个完全隔离的VPX实例,以支持多客户使用。
  • CloudStack会动态分配,配置,管理在SDX上的虚拟机实例的生命周期。分配的实例会自动加入到CloudStack,不需要管理员进行手动配置。一旦一个VPX实例加入到CloudStack,将会认为是ESXi主机上的一个VPX。

在RHEL服务器上配置SNMP社区字符串

SNMP社区字符串类似于用户ID或用户密码,用来登录网络设备,如路由器。这类字符串随着所有的SNMP请求发送。如果社区字符串正确,设备将反馈相应的字符串若不正确,设备将丢弃请求,不进行处理。

NetScaler设备使用SNMP与虚拟机进行通讯。为保证NetScaler设备与RHEL机器之间安全的通讯,必须安装并配置社区字符串。

  1. 确保在RedHat上安装了SNMP,如果没有,执行以下命令:

    yum install net-snmp-utils
    
  2. 编辑/etc/snmp/snmpd.conf 文件,以允许来自NetScaler设备的SNMP查询

    1. 映射社区名到一个安全的名字(本地,我的网络,依赖于其来源)

      注解

      编辑下表时,使用一个强密码

      #         sec.name   source        community
      com2sec   local      localhost     public
      com2sec   mynetwork  0.0.0.0       public
      

      注解

      设置0.0.0.0以允许所有的IP都可以查询NetScaler设备

    2. 映射一个安全名到组名

      #       group.name    sec.model  sec.name
      group   MyRWGroup     v1         local
      group   MyRWGroup     v2c        local
      group   MyROGroup     v1         mynetwork
      group   MyROGroup     v2c        mynetwork
      
    3. 创建一个视图,以允许组有权限执行:

      incl/excl subtree mask view all included .1
      
    4. 授权不同的写权限给二个组及你创建的视图

      # context     sec.model     sec.level      prefix     read     write    notif
        access      MyROGroup ""  any noauth     exact      all      none     none
        access      MyRWGroup ""  any noauth     exact      all      all      all
      
  3. 在iptalbes中解除对SNMP的锁定。

    iptables -A INPUT -p udp --dport 161 -j ACCEPT
    
  4. 开启SNMP服务:

    service snmpd start
    
  5. 确保在系统启动时,SNMP服务能够自动启动。

    chkconfig snmpd on
    

初始化安装外部防火墙和负载均衡

当为一个新帐户创建一个虚拟机时,CloudStack会设置程序以让外部防火墙和负载均衡与虚拟机共同工作。会在防火墙上创建以下对象:

  • 一个新的逻辑接口,用以连接帐户的私有VLAN。接口的IP通常是私有帐户私有子网的第一个IP。
  • 一个源NAT规则转发帐户从私有VLAN到公共网络的的出口流量,使用帐户的公共IP地址作为源地址。
  • 防火墙过滤计数器计量帐户出口流量的字节数

以下对象会在负载均衡上创建:

  • 匹配帐户区域VLAN的私有VLAN。
  • 一个VLAN的自有IP。经常是帐户私有子网的第二个IP。

继续配置外部防火墙和负载均衡

增加的用户行为(如设置端口转发)会引起防火墙和负载均衡的程序化。一个用户可以请求增加公共IP地址以及转发使用此公共IP地址的虚拟机接受到的流量。这是通过静态NAT功能完成的,静态NAT将一个公共IP地址映射给一个虚拟机,并指定一组特定协议,开放一组特定端口。当静态NAT建立好之后,CLOUDSTACK会在区域的外部防火墙上通过程序定制如下对象:

  • 一条静态NAT规则将虚拟机的私有IP地址映射到公共IP地址。
  • 一个安全策略可以允许说明的协议和端口范围内的流量通过。
  • 防火墙过滤计数器计量到达此公共IP的流量

通过源NAT,静态NAT以及负载均衡规则进出的字节数均被计量并保存在每一个外部设备中。按一定的规则对这些数据进行收集,并将其存储在CloudStack的数据库中。

负载均衡规则

一个CloudStack的用户或管理员可以创建负载均衡规则以平衡一个公共IP地址收到的针对一个或多个虚拟机的外部流量。一个用户可以创建一条规则,说明一个算法,并将其指定给一部分虚拟机。

注解

如果你创建了一个负载均衡规则且使用包括外部负载均衡设备的网络服务方案,如包括NetScaler,但随后将网络方案改成使用CloudStack的虚拟路由器,则你必须在虚拟路由器上创建一个防火墙规则,这些防火墙规则与已经设置的负载均衡规则一一对应,只有这样,才能使那些负载均衡规则继续起作用。

增加一条负载均衡规则

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 点击拟进行负载均衡的网络名称

  4. 点击查看IP地址。

  5. 点击你希望创建规则的IP地址,然后点击配置

  6. 在图的负载均衡节点点上,点击 查看全部。

    在基础区域中,在不需要或不选择IP的条件下,你可以创建一条负载均衡规则。当你创建负载均衡规则时,CloudStack会内部指定一个IP地址。当规则创建完成时,IP地址会在IP地址页列出来。

    为此,选择网络名称,点击 增加负载均衡。按#7继续进行配置。

  7. 填写以下内容:

    • 名称: 负载均衡规则的名称。
    • 公共端口: 这个端口接受到负载均衡的进入流量。
    • 私有端口: 虚拟机会使用此端口接收流量。
    • 算法: 选择让CloudStack使用的负载均衡算法。CloudStack各类已知的算法,如果不熟悉那些选项,通过goole搜索会发现大量信息。
    • 粘性: (可选) 点击配置,为粘性策略选择一个算法。可参见为负载均衡规则制定的粘性会话策略。
    • 自动缩放:点击配置完成自动缩放配置,在 :ref:`conf-autoscale`中有介绍。
    • 健康检查:(可选,只针对NetScaler的负载均衡设备)点击配置并填写健康检查特性,参见15.16.5.3 负载均衡规则的健康检查。参见 负载均衡规则的健康检查。.
      • ping 路径(可选): 需要发送健康检查的目的地顺序。默认:/ (all)。
      • 响应时间(可选): 从健康检查返回的响应时间(2-60秒),默认为5秒。
      • 间隔时间(可选): 健康检查的间隔时间(1秒-5分))。默认值在全局参数 lbrule_health check_time_interval
      • 健康阀值(可选): 在声明一个实例健康之前,连续健康检查成功的次数。默认为2.
      • 不健康阀值(可选): 在声音一个实例不健康之前连续健康检查失败的次数。默认为10。
  8. 点击添加虚拟机,选择拟分散进入流量的二个或多个虚拟机,点击应用。

    在列表中会出现新加的负载均衡规则。可以重复以上步骤以对此IP增加更多的负载均衡规则。

为负载均衡规则制定的粘性会话策略。

粘性会话应用于基于网页的应用中,以确保在用户的会话中,对用户的多种请求持续提供信息。例如,购物者正在向购物车中增加东西,则需要记住到目前为止已买的东西。粘性的概念也指持久发现或维护状态。

在CloudStack中定义的任何负载均衡规则,都可以具有粘性策略。策略有名字,粘性方法以及参数组成。参数是成对的值-名或标志,这些由负载均衡提供商进行定义。粘发现方法可以加载负载均衡设备产生的cookie,应用生产的cookie,或基于源产生的cookie。在基于源的方法中,源IP地址被用来区分用户和定位用户存储的数据。在其他方法中,则使用cookie。由负载均衡或应用产生的cookie,包含在请求或响应的url中,以产生持久性。cookie的名称可以有管理员指定或自动产生。提供了多种选择来准确控制cookie行为。诸如如何产生的以及是否进行缓存。

对于多数粘性方法变量列表,可以参看CloudStack UI或者调用网络列表,并检查粘性方法支持能力。

负载均衡规则的健康检查。

(仅对NetScaler负载均衡设备,需要NetScaler版本10.0以上。)

负载均衡应用中的健康检查,能够确保转发需求运行,服务可用。当创建一个负载均衡规则里,你可以指定一个健康检查策略。这是对粘性策略,算法,其他负载均衡设备规则的附加说明。可以为每一条负载均衡设备进行配置。

在CloudStackk中的NetScaler负载均衡设备定义的任一负载均衡规则都可以有一条健康检查策略。该策略有ping路径,定义健康或非健康状态的阀值,健康检查频率以及等待超时间隔。

当健康检查策略生效时,负载均衡被发现处于非健康状态时,会停止转发到源的任何请求。如果随后资源变为可用,周期性进行的健康检查就会发现,此资源就会再一次被添加至从负载均衡器收到的请求资源池里。任一时刻,最近的健康检查结果会显示在UI中。对绑定了负载均衡规则的虚拟机,且此规则配置了健康检查,依据最近的检查,状态会显示为正常或失败。

可以删除或修改存在的健康检查策略。

为配置默认的健康检查执行频率,通过全局配置参数 healthcheck.update.interval进行设备,默认值是600秒。可以根据需要进行设置此值。

如何通过UI进行健康检查策略的设置,可参看 增加一条负载均衡规则

配置自缩放

自缩放允许你能够根据定义的条件进行无缝且自动的增加或减少后端服务或应用虚拟机。当开启自缩放时,可以确保在需求增加时,无缝的增加正在使用虚拟机的数量。因此他会通过关闭未使用的虚拟机或者需要时开启新的虚拟机,从而节省你的计算成本。这些操作,都不需要手动干预。

NetScaler的自缩放定义为基于用户定义的条件,无缝的开启或关闭虚拟机。触发扩大或缩小行为的条件从监控服务器cpu的使用率的单一用例到监控服务器响应及cpu使用率的组合用例,各不相同。例如,你可以一个自缩放,能够在CPU使用超过80%持续15分钟时启动一个新的虚拟机,或CPU使用率低于20%持续30分钟时,移除一个虚拟机。

CloudStack使用NetScaler负载均衡器来监控系统健康的各方面,并与CloudStack共同工作以初始化扩大或缩小的行为。

注解

自缩放在NetScaler发布的10版本以上适用。(Build 74.4006.e 及以上)

先决条件

在配置自缩放前,需要考虑以下几点:

  • 确保在配置自缩放时有必需的模板。当使用模板部署虚拟机并使虚拟机启动时,应用能够起动并运行。

    注解

    如果应用没有运行,NetScaler设备会认为虚拟机无效并持续无条件的创建虚拟机,直到资源耗尽。

  • 部署准备好的模板。确保应用在第一次启动时能够开启并准备好接管流量。观察部署模板需要的时间。在配置自缩放时,要考虑这段时间。

  • The AutoScale feature supports the SNMP counters that can be used to define conditions for taking scale up or scale down actions. To monitor the SNMP-based counter, ensure that the SNMP agent is installed in the template used for creating the AutoScale VMs, and the SNMP operations work with the configured SNMP community and port by using standard SNMP managers. For example, see “Configuring SNMP Community String on a RHELServer” to configure SNMP on a RHEL machine.

  • 确保在全局配置中的结束点地址参数已设置为管理服务器的API地址。例如:http://10.102.102.22:8080/client/api。 在多管理节点的部署中,使用配置在负载均衡器上的虚拟IP地址作为管理服务器集群的IP地址。此外,确保NetScaler设备有读取为提供自缩放而配置的IP地址的权限。

    如果更新了endpointe.url,在系统自动负载均衡器规则里,先关闭自缩放功能随后再开启,以应用此更新。。更多信息,参见 更新自动扩展配置

  • 如果为自缩放用户生成了API值和秘钥,确保用户参与的负载均衡器的自缩放功能先关闭,再开启,以应用NetScaler配置的变化。

  • 在高级区域中,在配置带自缩放的负载均衡规则时,确保至少要有一个虚拟机。在网络中存在一个虚拟机,可保证在配置自缩放时,网络处于使用状态。

配置

指定以下信息:

Configuring AutoScale.

  • 模板: 模板由基本的操作系统镜像和应用组成。在自缩放动作中,模板用来提供一个应用的新的实例。当从模板部署虚拟机时,虚拟机在管理员不干预的情形下开始从负载均衡器那里接管流量。例如,如果虚拟机部署为WEB服务应用,则虚拟机上的WEB服务器应该在运行,并且连接了数据库,等等。

  • 计算方案: 一个预定义的虚拟硬件资源集,包括CPU速度,CPU数量,RAM,用户在创建虚拟时可以选择这些。选择一个计算方案作为提供虚拟机实例中自缩放行为的一部分。

  • 最小实例: 指定给负载均衡规则活动的虚拟机实例的最小数量,活动的虚拟机实例是开启的应用实例,并服务于流量和负载均衡。这个参数确保负载均衡规则拥有至少一个配置的活动虚拟机实例,并且能够服务于流量。

    注解

    如果一个应用程序,比如SAP,它运行在一个VM实例上,但是VM因为某些原因宕机了,那么这个VM没有被算成是Min实例的一部分,并且如果这些活动的VM实例是下面配置的数值,那么自动扩展功能启动一个扩展的动作。同样的,当应用程序实例从宕机的状态恢复了以后,这个应用程序实例会被算为活动实例计数的一部分,并且当活动实例计数超出Max实例数值的时候,自动扩展启动一个缩减动作。

  • 最大实例数:最大数量的**应该被指派到**一条负载均衡策略的活动VM实例。这个参数定义了能被指派到一条负载均衡策略的活动VM实例的上限。

    给最大量实例参数指定一个大的值可能引发大量VM实例的分发,这个过程会导致一个负载均衡策略耗尽账户或者域级别下VM实例指定的限制。

    注解

    如果一个应用程序,比如SAP,它运行在一个VM实例上,但是VM因为某些原因宕机了,那么这个VM没有被算成是Max实例的一部分。所以这个情况中为扩展动作分发的VMs数量可能会超过配置的MAX实例数值。一旦这个VMs中的应用程序实例从先前的宕机中恢复的时候,自动扩展功能就会校正Max实例的数值。

指定下列扩展和缩减的策略:

  • 持续:持续,以秒为单位,你必须指定条件为true以触发一个扩展动作。这个条件定义的是为了触发一个自动扩展动作,你指定的全部持续值应保持为true。
  • 计数器:性能计数器直接体现了被监视实例的状态。默认情况下,CloudStack提供了4个性能计数器:3个SNMP计数器和1个NetScaler计数器。SNMP计数器是Linux User CPU、Linux System CPU和Linux CPU Idle。NetScaler计数器是ResponseTime。root管理员能够使用CloudStack API给CloudStack添加额外的计数器。
  • 运算符:自动扩展功能支持下列5种关系型运算符:大于、小于、小于或等于、大于或等于和等于。
  • 阈值:阈值用于计数器。一旦上面计数器中定义的值超出阈值,自动扩展功能会启动扩展或者缩减动作。
  • 添加::点击添加来添加条件。

另外,如果你想配置高级设置,点击显示高级设置,接着指定下列参数:

  • 轮询间隔:组合计数器,运算和阈值这几个条件的频率在触发扩展和缩减动作之前都要被评估。默认的轮询间隔是30秒。
  • 平静期:这是自动扩展动作被触发之后的冷静期。这个时间包括完成从模板分发一个VM实例的时间和一个应用程序准备好提供服务的时间。平静期允许机群在发生任何动作之前进入稳定状态。默认值是300秒。
  • VM销毁宽限期:此宽限期以秒计算,在一个缩减动作运行之后,在VMs被视为缩减动作的一部分从而销毁之前的等待时间。它保证了能够彻底关闭任何服务于被标记为销毁的VM的挂起中的进程或者事务。默认值是120秒。
  • 安全组:安全组提供一种方法来隔离VMs流量。一个安全组是一组依照设置名为入口规则和出口规则来过滤他们进出流量的VMs,这些规则依靠与VM通讯的IP地址来过滤网络流量。
  • 磁盘方案:一组预定义的主数据存储磁盘大小。
  • SNMP 联系:SNMP 联系字符串被用于NetScaler设备从分发的VM实例中查询已配置的计数器的值。默认是public。
  • SNMP端口:运行在已分发的VMs上的SNMP代理端口号。默认的端口是161.
  • 用户:在云中NetScaler设备中用于发起扩展和缩减API调用的用户。如果没有指定选项,那么该用户被配置为自动扩展。指定其他用户名可以覆盖此配置。
  • 应用:点击应用创建自动扩展配置。

禁止和启用自动扩展配置

如果你想对一个自动扩展VM实例执行任何维护操作,请禁用自动扩展配置。当自动扩展配置被禁用,扩展和缩减动作不会执行。你可以利用停机时间进行维护活动。要禁用自动扩展配置,点击禁用自动扩展按钮 button to enable or disable AutoScale.

这个按钮是启用和禁止的切换开关,取决于当前是否启用了自动扩展。在执行完维护操作以后,你可以启用回自动扩展配置。要启用,请再次打开自动扩展配置页面,然后点击启用自动扩展按钮|EnableDisable.png|。

更新自动扩展配置

你可以更新各种参数和添加或者删除扩展或缩减策略中的条件。在你更新自动扩展配置之前,请确保你已经通过点击禁止自动扩展按钮禁止了自动扩展负载均衡策略。

在你修改了所需的自动扩展参数之后,点击应用。要应新的自动扩展策略,再次打开自动扩展配置页面,然后点击启用自动扩展按钮。

运行时注意事项

  • 管理员不应该分配VM到配置为AutoScale的负载均衡规则中。
  • 在分配虚拟机到一个负载均衡的规则配置完成前如果NetScaler被关闭或重启,则配置的虚拟机不能成为负载均衡规则的一部分。要解决此问题,重命名基于AutoScale配置的虚拟机名称或ID,以便在任何时间点负载平衡规则可以调节该虚拟机。
  • 在自动扩展上下文之外使用API调用,如destroyVM,那么自动扩展下的VM会处于负载均衡配置冲突状态中。虽然VM被负载均衡策略所销毁,但NetScaler仍然会把VM作为一个设备分配一条策略。

全局服务器负载均衡 支持

CLOUDSTACK支持全局服务器负载均衡 (GSLB) 功能以提供可持续的商业运营。GSLB可以在CLOUDSTACK环境中实现资源的无缝迁移。CLOUDSTACK通过集成NetScaler应用交付控制器 (ADC)来提供GSLB功能,ADC可以提供各种各样的GSLB能力,比如灾难恢复,负载均衡。CLOUDSTACK在实现GSLB功能进,使用了DNS重定向技术。

为了支持这个功能,引进了地域级别的服务和服务提供者。引进了一项新服务“GSLB”作为地域级别的服务。该GSLB服务提供者介绍将提供GSLB服务。目前,CloudStack中NetScaler可作为GSLB提供者。 GSLB功能工作在Active-Active数据中心环境。

关于全局服务器负载均衡

全局服务器负载均衡(GSLB)是负载均衡功能的扩展,为了高效的避免停机时间。基于部署的性质,GSLB代表一组技术的集合,用于各种用途,如负载均衡,灾难恢复,性能,和法定义务。使用GSLB,工作负载可以分布在位于不同地理位置的多个数据中心。 GSLB也可以用于在发生故障时访问资源的另一个备用位置,或对流量提供了简易的维护方式,或两者兼得。

GSLB服务组件

一个典型的GSLB环境由以下服务组件组成:

  • GSLB站点:在CloudStack专业术语中,GSLB站点表现为映射至数据中心的zones,每个GSLB有多个网络设备。每个GSLB站点由一个位于站点中的NetScaler设备管理。每个NetScaler设备将他管理的站点视为本地站点,并且由其他NetScaler设备管理的站点视为远程站点。在GSLB部署中它是一个中央实体,具体表现为一个名称和一个IP地址。
  • GSLB服务:GSLB服务表现为典型的负载均衡或者内容交换虚拟服务器。在一个GSLB环境中,你可以有本地及远程GSLB服务。本地GSLB服务表现为一个本地负载均衡或者内容交换虚拟服务器。远程GSLB服务是配置在GSLB设置中的其他站点。在每个站点中的GSLB设置里,你可以创建一个本地GSLB服务和任意数量的远程GSLB服务。
  • GSLB虚拟服务器:GSLB虚拟服务器指的是一个或多个GSLB服务和平衡跨越多个使用CloudStack功能的zones之间VMs的流量。它通过评估配置的GSLB方法或者算法来选择一个GSLB服务发送客户端请求。来自不同zone的一个或多个虚拟服务器被绑定到GSLB虚拟服务器上。GSLB虚拟服务器没有对应的公共IP,只有一个FQDN DNS名称。
  • 负载均衡或内容交换虚拟服务器:依照Citrix NetScaler的专业术语,一个负载均衡或者内容交换虚拟服务器表现为本地网络上的一个或多个服务器。客户端发送他们的请求至负载均衡或内容交换虚拟服务器IP(VIP)地址,并且由虚拟服务器平衡本地服务器之间的负载。在GSLB虚拟服务器选择了一个基于本地或者远程负载均衡或者内容交换虚拟服务器的GSLB服务之后,客户端发送请求至虚拟服务器的VIP地址。
  • DNS VIPs:DNS虚拟IP是一个在GSLB服务供应者上的DNS负载均衡虚拟服务器。在有GSLB服务提供者的域中的DNS请求会被发送至一个DNS VIP。
  • 权威DNS:ADNS(权威域名称服务器)是一个为DNS请求提供真实响应的服务,比如web站点IP地址。在GSLB环境中,一个ADNS服务只响应权威的GSLB服务提供者所在域的DNS请求。当配置了一个ADNS服务,该服务的提供者即拥有该服务IP并且广播它。当你创建一个ADNS服务的时候,NetScaler通过配置的ADNS服务IP和端口响应DNS请求。

在CloudStack中,GSLB的工作原理是什么?

全局服务器负载均衡-GSLB-用于在不同地域的不同独立区域之间管理WEB服务器的访问流量。以下是CLOUDSTACK中提供的GSLB功能图示:EXZTELCO这个组织用CLOUDSTACK在不同的数据中心部署一个公有云,此云环境包括两个区域,Zone-1 和Zone-2。XYZTELCO里有租户A需要部署一个高可用方案。为了达到此目标,他们分别在两个区域里部署了两个虚拟机实例:Zone-1中有VM1和VM2,Zone-2中有VM5和VM6。租户A在Zone-1中得到一个公网IP-IP-1,并且在VM1和VM2之间配置了负载均衡规则。CLOUDSTACK 编排系统在 Zone-1中LB服务上设置了一个虚拟服务器-Virtual server 1 。客户端对-IP-1的访问会到达Virtual server 1,此虚拟服务器再将流量转发到VM1和VM2上进行流量负载均衡。

租户A在Zone-2中得到一个公网IP-IP-2,并且在VM5和VM6之间配置了负载均衡规则。CLOUDSTACK 编排系统在 Zone-2中LB服务上设置了一个虚拟服务器-Virtual server 2 。客户端对-IP-2的访问会到达Virtual server 2,此虚拟服务器再将流量转发到VM5和VM6上进行流量负载均衡。此时,租户A在两个区域里都启用了服务,但是,无法在这种环境下部署灾难恢复计划,也无法更智能在区域内使用负载均衡。要解决这些问题,XYZTELCO云管理员可以在两个区域内启用GSLB服务,一个GSLB服务通常是一个具有ADNS(认证域名服务器)能力的ADC,并且具有监测本地和远程站点健康状况的手段。云管理员可以在ZONE 1和2中为租户启用GSLB服务。

GSLB architecture

租户- A希望利用由xyztelco cloud提供的GSLB服务。租户-A配置了一个GSLB规则对Zone-1中的虚拟服务器1和Zone-2中的虚拟服务器2提供流量负载均衡。假设域名是A.xyztelco.com 。CloudStack中协调设置GSLB服务提供者Zone-1中的GSLB虚拟服务器1。 CloudStack绑定Zone-1中的虚拟服务器1和Zone-2中的虚拟服务器2到GSLB虚拟服务器1。CloudStack也将协调设置GSLB服务提供者Zone-2中的GSLB虚拟服务器2.CloudStack绑定Zone-1中的虚拟服务器1和Zone-2中的虚拟服务器2到GSLB虚拟服务器2.GSLB虚拟服务器2配置为开始监视虚拟服务器1和2的健康。CloudStack中会绑定域名A.xyztelco.com到GSLB虚拟服务器1和2。在这一点上,租户-A的服务将在全球范围内可达于A.xyztelco.com。域名xyztelcom.com的专用DNS服务器,被管理员配置为外带管理,由两个区域的GSLB提供者对域名A.xyztelco.com提供解析。它将被配置为域名A.xyztelco.com的ADNS。当客户端请求解析A.xyztelcom.com域名时,将最终由DNS指派到GSLB提供者Zone 1 和Zone2。客户DNS请求将被GSLB提供者接获。GSLB提供者,根据需要解析的域名,将获得与域名关联的GSLB虚拟服务器。根据用于负载均衡的虚拟服务器的运行健康状况,域名DNS请求将被解析到所选择关联的虚拟服务器中。

配置GSLB

要配置GSLB的部署,您必须首先为每个区域配置一个标准的负载平衡设置。这使您能够在该地域中每个区域的不同服务器之间进行负载均衡。然后在NetScaler方面,配置您计划添加到每个区域作为权威DNS(ADNS)服务器的两个NetScaler应用。接下来,为每个区域创建GSLB站点、配置GSLB虚拟服务器、创建GSLB服务并绑定GSLB服务到GSLB虚拟服务器中。最后,绑定该域到GSLB虚拟服务器。两个应用的GSLB配置在两个不同区域中是完全相同的,尽管每个网站的负载均衡配置特定于该网站。

作为云管理员执行以下操作。按照上面给出的例子中,由管理员xyztelco设置GSLB:

  1. 在全局变量 cloud.dns.name中,为您租户云定义DNS名称并供GSLB服务使用。

  2. 在NetScaler方面,给出GSLB配置 `配置全局服务器负载均衡 (GSLB)<http://support.citrix.com/proddocs/topic/netscaler-traffic-management-10-map/ns-gslb-config-con.html>`_:

    1. 配置一个标准的负载均衡设置。

    2. 配置权威DNS,如下解释 配置权威的DNS服务.

    3. 由域名详细信息配置一个GSLB站点和站点名称。

      由域名配置一个GSLB站点和站点名称。

      按照上面给出的例子,站点名称为 A.xyztelco.com 和 B.xyztelco.com

      更多信息,请参阅 配置基本的GSLB站点.

    4. 配置GSLB虚拟服务器。

      更多信息,请参阅 配置GSLB虚拟服务器.

    5. 为每个虚拟服务器配置GSLB服务。

      更多信息,请参阅 配置GSLB服务.

    6. 绑定GSLB服务到GSLB虚拟服务器。

      更多信息,请参阅 绑定GSLB服务到GSLB虚拟服务器.

    7. 绑定GSLB域名到GSLB虚拟服务器。从域的详细信息中获得域名。

      更多信息,请参阅 绑定GSLB域名到GSLB虚拟服务器.

  3. 在每个参与GSLB的区域内,添加启用GSLB功能的NetScaler设备。

    更多信息请参考 开启NetScaler的GSLB.

以域管理员/用户执行以下操作:

  1. 在两个站点中添加GSLB规则。

    参考”添加 GSLB规则”.

  2. 分配负载均衡规则。

    参考”为GSLB分配负载均衡规则”.

先决条件和指南

  • GSLB功能支持基本和高级区域。

  • GSLB是新添加的网络服务。

  • GSLB服务提供者可以被添加至区域中的物理网络。

  • 管理员允许开启或禁用地域级别的GSLB功能。

  • 管理员具有启用或配置区域为GSLB的能力

    只有在GSLB服务提供者提供的区域中,该区域才被视为有GSLB能力。

  • 当用户的VMs部署在启用GSLB功能的多个可用区域中时,他们可以使用GSLB功能在多个区域中将VM的流量进行负载均衡。

  • 如果管理员在地域中启用了GSLB,用户可以使用GSLB对地狱中的所有区域的VMs进行负载均衡。

  • 用户可以为同一个区域或不同地域间可用的区域流量进行负载均衡。

  • 管理员可以为整个云配置DNS名称。

  • 用户可以为云中的全局负载均衡服务指定一个唯一的名称。所提供名称的域名相当于云的DNS名称。

    用户提供的名称与管理员提供的DNS名称一起为用户的全局负载均衡服务产生一个全局解析的FQDN。例如,如果管理员已经配置xyztelco.com为云中的DNS名称,以及用户为GSLB虚拟服务器指定的名称为’foo’,那么GSLB虚拟服务器的FQDN名称是foo.xyztelco.com。

  • 设置GSLB时,用户可以为GSLB跨区域的一部分选择负载均衡方式,例如 round robin。

  • 用户应能设置区域级虚拟服务器的权重。负载均衡在分配流量时会考虑该权重。

  • 该GSLB功能必须支持会话持久性,特定域名的一系列客户端请求被发送到同一个区域中的虚拟服务器上。

    从每个GSLB虚拟服务器中收集统计数据。

开启NetScaler的GSLB

在每个区域中,添加启用GSLB的NetScaler设备提供负载均衡。

  1. 使用管理员登录到CloudStack管理界面。

  2. 在左侧导航栏中,点击基础架构

  3. 点击区域中的查看更多。

  4. 选择你要设置的区域。

  5. 点击物理网络选项卡,然后点击物理网络的名称。

  6. 点击示意图’网络服务提供程序’中的配置

    你可能需要向下滚动才能看到。

  7. 点击NetScaler.

  8. 点击添加NetScaler设备并提供如下信息:

    对于NetScaler:

    • IP地址: SDX的IP地址。
    • 用户名/密码. 访问此设备的认证许可。CloudStack使用这些认证信息访问此设备。
    • 类型:添加设备的类型。可以是F5 BigIP负载均衡器、NetScaler VPX、NetScaler MPX或 NetScaler SDX等设备。关于NetScaler的类型比较,请参阅CloudStack管理指南。
    • 公共接口: 配置为公共网络部分的设备接口。
    • 专用接口: 配置为专用网络部分的设备接口。
    • GSLB 服务:选择该选项。
    • GSLB 服务公共IP:在专用网络中,为GSLB服务提供NAT转换的公共IP地址。
    • GSLB 服务专用IP: GSLB服务的专用IP地址。
    • 重试次数 尝试控制设备失败时重试的次数,默认为2次。
    • 容量:该设备能处理的网络数量。
    • 专用: 当标记为专用后,这个设备只对单个帐号专用。该选项被勾选后,容量选项就没有了实际意义且值会被置为1。
  9. 点击确定。

添加 GSLB规则

  1. 使用管理员或者用户账号登录CloudStack UI。

  2. 在左边的导航栏里,点击区域(为文档翻译中地域的概念,英文为region,下同)

  3. 选择你想创建GSLB规则的地域。

  4. 在详细选项卡中,点击查看GSLB。

  5. 点击添加GSLB。

    添加GSLB页面显示如下:

    adding a gslb rule.

  6. 指定以下信息:

    • 名称: GSLB规则的名称。
    • 描述: (可选)为用户提供一个简短的GSLB规则描述。
    • GSLB 域名: 首选的域名服务。
    • 算法: (可选) 用于跨区域流量负载均衡的算法。可选项为 Round Robin, Least Connection, 和Proximity.
    • 服务类型: GSLB使用的传输协议。可选项为TCP和UDP。
    • : (可选) 你想要创建GSLB规则的域。
    • 账户: (可选) 应用GSLB规则的账户。
  7. 点击确定。

为GSLB分配负载均衡规则

  1. 使用管理员或者用户账号登录CloudStack UI。
  2. 在左边的导航栏里,点击区域(为文档翻译中地域的概念,英文为region,下同)
  3. 选择你想创建GSLB规则的地域。
  4. 在详细选项卡中,点击查看GSLB。
  5. 选择所需的GSLB。
  6. 点击已分配的负载均衡视图。
  7. 点击分配更多负载平衡
  8. 选择你将为区域创建的负载均衡规则。
  9. 点击确定。

已知的局限性

目前,CloudStack并不支持跨区域的服务编排。将引入服务的概念和地域服务提供者。

来宾IP范围

宾客网络流量的IP是由用户以帐号为基础设置的。这允许用户以在他们的宾客网络和他们的客户端之间开通VPN连接的方式配置他们的网络。

存在基本网络和启用安全组的高级网络中的共享网络,你可以灵活的在不同子网中添加多个来宾IP范围。你可以同时添加或移除IP范围。更多信息,请参阅 `章节 15.10, “关于多IP范围”<#about-multiple-ip-ranges>`_.

获得一个新的IP地址

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 点击拟修改的网络名称。

  4. 点击查看IP地址。

  5. 点击获取新IP。

    获取新IP的窗口会出现。

  6. 说明是否需要IP跨区。

    如果你想作为 Portable IP则在确认窗口中点击Yes,如果你想作为正常的公共IP则点击No。

    关于便携式IP的更多信息,查看 “便携式IP”.

    稍等一会,新的IP地址会出现,状态栏为会显示为分配。现在可以在端口转发或静态NAT规则中使用此IP地址了。

释放IP地址

当IP的最后一条规则删除后,您就能够释放该IP。然而,该IP仍属于VPC,无论如何,该IP可以再次被VPC中的来宾网络再次获取。

  1. 使用管理员或者终端用户账号登录CloudStack UI。
  2. 在左侧的导航栏,选择网络。
  3. 点击拟修改的网络名称。
  4. 点击查看IP地址。
  5. 点击要释放的IP地址。
  6. Click the Release IP button. button to release an IP

静态 NAT

A static NAT rule maps a public IP address to the private IP address of a VM in order to allow Internet traffic into the VM. The public IP address always remains the same, which is why it is called static NAT. This section tells how to enable or disable static NAT for a particular IP address.

启用或禁用静态NAT

如果该公网IP上已经有端口转发规则,则不允许再启用静态NAT。

如果用户VM存在多个网络,则静态NAT规则仅在默认网络上定义时生效。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 点击拟修改的网络名称。

  4. 点击查看IP地址。

  5. 点击你要修改的IP地址

  6. 点击静态NAT按钮。 button to enable/disable NAT.

    该按钮在启用和禁用之间切换,这取决于IP地址是否已经启用了静态NAT。

  7. 如果是启用静态NAT,会出现一个对话框让您选择目标VM然后点击应用。

IP转发及防火墙

默认情况下, 所有从公共IP进来的流量都会被拒绝. 所有在来宾网络出去的流量默认也被阻挡。

为了允许外出的流量,遵循:ref:`egress-fw-rules`中的操作步骤。

为了允许接收到的流量, 用户可以设置一些防火墙规则和/或端口转发规则. 例如, 你可以在公共IP地址上设定防火墙规则来打开一个端口范围, 比如从33到44端口. 然后使用端口转发将流量从这个特定的范围内的端口直接送到指定的用户虚机端口. 例如, 一个端口转发的规则可以将接收的流量从公共IP的33端口到用户虚机私有IP的100端口.

防火墙规则

默认情况下,防火墙拒绝所有流入公共IP的流量。要允许外部流量,你需要制定防火墙规则打开防火墙端口。你可以选择性的制定一个或多个CIDR来过滤来源IP。这在当你只需要允许特定IP请求时会很有用。

你不能使用防火墙规则打开弹性IP的端口。当弹性IP处在使用状态时,外部的通过请求将被安全组管理。参阅 “添加安全组”.

在高级Zone中,您也可以用虚拟路由器来创建流出的防火墙规则。更多信息,请查阅”高级区域中的出口防火墙规则”。

防火墙规则能在管理服务器的UI中防火墙选项卡里创建,CloudStac安装好以后,这个规则选项卡默认不显示,你需要以管理员身份修改全局变量 firewall.rule.ui.enabled为 “true”才能显示。

创建防火墙规则:

  1. 使用管理员或者终端用户账号登录CloudStack UI。
  2. 在左侧的导航栏,选择网络。
  3. 点击拟修改的网络名称。
  4. 点击查看IP地址。
  5. 点击你要修改的IP地址
  6. 点击设置选项卡 填入以下值:
    • Source CIDR: (Optional) To accept only traffic from IP addresses within a particular address block, enter a CIDR or a comma-separated list of CIDRs. Example: 192.168.0.0/22. Leave empty to allow all CIDRs.
    • Protocol: The communication protocol in use on the opened port(s).
    • Start Port and End Port: The port(s) you want to open on the firewall. If you are opening a single port, use the same number in both fields
    • ICMP Type and ICMP Code: Used only if Protocol is set to ICMP. Provide the type and code required by the ICMP protocol to fill out the ICMP header. Refer to ICMP documentation for more details if you are not sure what to enter
  7. 点击 添加

高级区域中的出口防火墙规则

出口流量起源于从专用网络访问公共网络,例如Internet。默认情况下,在默认网络方案中,出口流量被拒绝,所以没有从来宾网络到Internet的出口流量被允许。不过,你可以通过创建出口防火墙规则来控制高级网络中的出口流量。当出口防火墙规则被应用时,规则指定的流量被允许,其余的流量被阻止。当所有的防火墙规则从默认策略中移除,阻止策略再次被应用。

先决条件和指南

应用出口防火墙规则时请思考如下方案:

  • 出口防火墙规则在Jniper SRX和虚拟路由器中均支持。
  • 共享网络中不支持出口防火墙规则。
  • 允许特定源CIDR的出口流量。源CIDR是来宾网络CIDR的一部分。
  • 允许出口流量的协议为TCP,UDP,ICMP或ALL。
  • 允许出口流量协议和目标端口范围。端口范围需要指定TCP,UDP或ICMP类型和代码。
  • 新网络方案的默认策略是允许的,然而升级现有的网络方案后,防火墙服务提供商的出口策略默认将是拒绝。

配置出口防火墙规则

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择来宾网络,然后点击需要的来宾网络。

  4. 要添加出口策略,点击出口策略选项卡并填写以下字段指定哪种类型的流量在来宾网络中是被允许从VM中实例发送出的。

    adding an egress firewall rule.

    • CIDR:(仅通过CIDR添加)为接受来来自特殊地址块的流量,输入一个CIDR,多个时用逗号隔开。CIDR是进入流量的基础IP地址。例如:192.168.0.0/22,为允许所有CIDR,请设为0.0.0.0/0
    • 协议: 虚拟机发送流量所使用的网络协议。TCP和UDP通常用于数据交换和用户通讯。ICMP通常用于发送出错信息和网络监控数据。
    • 开始端口,结束端口: (仅对TCP,UDP)。目的地为进入流量而设的监听端口范围。如果仅开放了单个端口,则在两者的区域中用同一端口。
    • ICMP类型, ICMP代码 (ICMP only): 信息类型及发送错误的代码。
  5. 点击 添加

配置默认出口策略

通过网络方案配置隔离来宾网络的默认出口策略。通过创建网络方案选项决定来宾网络到公共网络的所有流量在默认策略中是允许或者拒绝。使用该网络方案创建网络。如果没有指定策略,你创建的来宾网络中的所有流量将被允许。

你有两个选择:允许和拒绝。

允许

如果你选择网络方案为允许,则默认出口流量被允许。无论如何,当配置了来宾网络的出口规则,规则被应用于阻止特定的流量和允许其他的 。如果网络中没有配置出口规则,则出口流量会被放行。

拒绝

如果你选择网络方案为拒绝,则来宾网络中的默认出口流量将被阻挡。无论如何,当配置了来宾网络的出口规则,规则被应用于允许特定的流量。当实施来宾网络时,CloudStack为来宾网络添加防火墙出口规则指定默认的出口策略。

该特定只支持虚拟路由器和Juniper SRX。

  1. 为合适的默认出口策略创建一个网络方案:

    1. 以管理员权限登录CloudStack用户界面。
    2. 在左侧导航栏中,点击 服务方案。
    3. 在选择方案中,选择网络方案。
    4. 点击添加网络方案。
    5. 在对话框中,填写必选项,包括防火墙提供者。
    6. 在默认出口策略选项中,指定行为。
    7. 点击确定。
  2. 使用网络方案创建隔离网络。

    根据你的选择,网络的出口公共流量将被拒绝或允许。

端口转发

一个端口转发服务是一系列转发转发规则的集合。一个端口转发服务随后可以应用于一个或多个来宾虚拟机。来宾虚拟机会根据端口转发规则作相关进入端口的管理。你可以定义一个或多个CIDR来过滤源IP地址。当你只希望特定的IP流量进入时是相当有用的。

一个客户VM可以在任意数量的端口转发服务中。端口转发服务可以不包含客户VM。如果客户VM在多个网络中,则端口转发仅在默认网络中定义时才生效。

您不能使用端口转发打开弹性IP地址的端口。当使用弹性IP时,外部访问是由安全组控制的。参见安全组。

设置端口转发:

  1. 使用管理员或者终端用户账号登录CloudStack UI。
  2. 如果还没有,请在 CloudStack中为Zone添加公网IP段。参阅 安装指南中的添加Zone和Pod。
  3. 在 CloudStack中创建1台或更多VM。
  4. 在左边导航栏,点击网络。
  5. 点击需要操作VM所在的网络名称。
  6. 选择一个已有的IP或者获取一个新的IP地址。参阅 “获取一个新的IP”.。 点击列表中IP地址的名称。
  7. 点击配置选项卡。
  8. 在图表的端口转发节点,点击查看所有。
  9. 填写以下内容:
    • 公用端口: 你在前面操作所获取的供公共流量使用的公用IP地址的端口。
    • 私有端口: 虚拟机实例将被转发到公共流量的监听端口。
    • Protocol: The communication protocol in use between the two ports
  10. 点击 添加

IP负载均衡

用户可以选择关联同一个公网IP到多个虚拟机。 CloudStack实现了TCP级别的负载平衡器,有以下策略。

  • 轮询
  • 最少连接数
  • 源IP

这类似于端口转发,但目标可能会有多个IP地址。

DNS和DHCP

虚拟路由器为来宾提供DNS和DHCP服务。它将DNS请求代理到在可用区域中配置的DNS服务器。

远程访问VPN

CloudStack account owners can create virtual private networks (VPN) to access their virtual machines. If the guest network is instantiated from a network offering that offers the Remote Access VPN service, the virtual router (based on the System VM) is used to provide the service. CloudStack provides a L2TP-over-IPsec-based remote access VPN service to guest virtual networks. Since each network gets its own virtual router, VPNs are not shared across the networks. VPN clients native to Windows, Mac OS X and iOS can be used to connect to the guest networks. The account owner can create and manage users for their VPN. CloudStack does not use its account database for this purpose but uses a separate table. The VPN user database is shared across all the VPNs created by the account owner. All VPN users get access to all VPNs created by the account owner.

注解

确保不是所有的网络流量走VPN。也就是说,用于配置VPN的route不是唯一用于该guest network,也不承担全部的网络流量。

  • 公路勇士/远程访问. .用户希望可以安全地从家里或者办公室连接到云里的一个 私有网络。特别是连接的客户端的IP地址是动态决定的,不能预先配置到VPN 服务器上。
  • Site to Site 站点到站点。在这个场景中,两个私有子网通过公共互联网上的一个安全VPN隧道互联。云用户的子网 (例如:办公室的网络)通过一个网关连接到云中的网络。用户的网关地址必须被预先配置到云的VPN服务器上。注意:通过 L2TP-over-IPsec 协议可以用来配置站点到站点的 VPN,虽然这不是该特性的最初目标。更多信息,参考”配置站点到站点的VPN连接”。

配置远程访问VPN

为云设置VPN:

  1. 使用管理员或者终端用户账号登录CloudStack UI。
  2. 在左侧导航栏,点击 全局设置
  3. 设置以下全局配置参数。
    • remote.access.vpn.client.ip.range – 分配给远程访问VPN客户端的IP地址范围。第一个IP被VPN服务器使用。
    • remote.access.vpn.psk.length – IPsec密钥长度。
    • remote.access.vpn.user.limit – 单个账户的最大VPN用户数量。

为特定的网络启用VPN:

  1. 使用用户或管理员身份登录到CloudStack用户界面。

  2. 在左边导航栏,点击网络。

  3. 选择你要操作的网络名称

  4. 点击查看IP地址。

  5. 点击一个显示的IP地址名称。

  6. 点击启用VPN按钮。button to enable VPN.

    IPsec密钥将显示在弹出的窗口中。

为VPC配置远程访问VPN

在VPC中启用远程访问VPN,任何VPC以外的VPN客户端都可以使用远程VPN连接访问VPC中的VM。VPN客户端可以在除了用户启用了远程访问VPN服务的VPC中的任何位置。

为VPC开启VPN:

  1. 使用用户或管理员身份登录到CloudStack用户界面。

  2. 在左边导航栏,点击网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. 点击VPC的配置按钮。

    对于每一个层,会显示以下选项。

    • 内部LB
    • 公共LB IP
    • 静态 NAT
    • 虚拟机
    • CIDR

    显示以下路由器信息:

    • 专用网关
    • 公共IP地址
    • 站点到站点 VPN
    • 网络 ACL列表
  5. 在路由器节点中,选择公共IP地址。

    系统显示IP地址页面。

  6. 点击源NAT IP地址。

  7. 点击启用VPN按钮。button to enable VPN.

    点击OK确认。IPsec密钥将显示在弹出的窗口中。

现在,需要添加VPN用户。

  1. 点击源NAT IP。
  2. 选择VPN选项卡。
  3. 为你要创建的用户添加用户名和对应的密码。
  4. 点击 添加
  5. 重复相同的步骤添加VPN用户。

配置站点到站点的VPN连接

一个站点到站点的VPN连接可以帮助你建立从云基础架构到企业内部数据中心的安全连接.这就允许一个账户从企业内部数据中心的设备连接到此账户启用VPN连接的虚拟路由器上, 从而通过VPN连接到该账户的虚拟机.你也可以在两个VPC之间或是高可用区域之间建立VPC以加强安全。这样一来,就不需要在虚拟机之间建立VPN连接的必要了。

与Remote VPN不同,Site-to-site VPNs是将两个网络相互连接。比如,将一个分支办公室的网络与总公司网络互联,Site-to-site VPN的两个主机不需要VPN客户端软件,它们通过VPN网关收发普通的TCP/IP数据包流量 。

目前支持的数据中心的终端设备是:

  • Cisco ISR IOS 12.4或更新
  • Juniper J-系统 路由器 JunOS 9.5 或更新版本
  • CloudStack虚拟路由器。

注解

除了上述指定的Cisco和Juniper设备, 所期望的是任何Cisco或Juniper的设备在支持的操作系统上都可以建立VPN连接.

为了建立站点到站点的VPN连接, 需要执行以下步骤:

  1. 创建一个虚拟私有云(VPC).

    参考”配置一个虚拟私有云(VPC)”.

  2. 创建一个VPN客户网关.

  3. 为你创建的VPC设定一个VPN网关.

  4. 从VPC的VPN网关到客户的VPN网关建立VPN连接.

创建和更新一个VPN客户网关.

注解

一个VPN客户网关在同一时间只能连接一个VPN网关。

添加 VPN 客户网关

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图里,选择VPN客户网关。

  4. 点击添加 VPN 客户网关。

    adding a customer gateway.

    填写以下内容:

    • 名称: 你添加的VPN客户网关的一个唯一的名称。

    • IP地址: 远端网关的IP地址。

    • CIDR列表: 远端客户子网的CIDR。输入一个CIDR或是以逗号分隔的多个CIDR。在确认客户的CIDR和VPC的CIDR或是另一个客户的CIDR不重叠冲突。CIDR的格式必须符合 RFC1918标准。

    • IPsec Preshared Key: Preshared keying is a method where the endpoints of the VPN share a secret key. This key value is used to authenticate the customer gateway and the VPC VPN gateway to each other. The sequence cannot contain a newline or double-quote.

      注解

      Internet密钥交换协议(IKE)匹配点 ( VPN 端点 ) 通过计算并发送包含预共享密钥的哈希键值来进行相互验证。如果收接点通过自己的预共享密钥算出同一个键值的话,这就说明两个点是用的同一个密钥,相互之间认证通过,形成匹配。

    • IKE 加密: Internet密钥交换协议(IKE)第一阶段(phase-1)策略。支持的加密算法包括 AES128, AES192, AES256和3DES.。认证通过预共享密钥完成。

      注解

      phase-1是IKE过程的第一阶段。在这个开始的协商阶段,两个VPN端点在将底层IP流量加密安全的方法上取得一致。第一阶段认证通过的条件是:两个VPN网关之间使用的是同一个预定义密钥。

    • IKE 哈希: IKE第一阶段( phase-1)哈希散列使用的算法。支持SHA1 和 MD5.

    • IKE DH(Diffie-Hellman组): IKE的DH加密协议,可以在不安全的连接上确保共享KEY的安全。1536位的DH组用在IKE中用来建立会话KEYS。在这里,支持的选项是 None, Group-5 (1536-bit) 和 Group-2 (1024-bit).

    • ESP 加密: 封装安全有效负荷(Encapsulating Security Payload,ESP)算法是发生在第二阶段(phase-2)。其支持的加密算法包括 AES128, AES192, AES256, 和 3DES。

      注解

      phase-2是IKE过程的第二阶段,其目标是协助IPSec安全关联 (SA) 以建立IPSec通道。在 phase-2阶段,会利用 phase-1阶段建立好的DH安全协议方法来交换新的密钥。

    • ESP哈希散列:phase-2支持的封装安全有效负荷(Encapsulating Security Payload,ESP)哈希算法包括:SHA1 和MD5.

    • **Perfect forward secrecy(完全正向保密,PFS) **: PFS的性质是确保来自一组的长期的公共密钥和私人密钥之间的会话密钥不会妥协失效。PFS会促使一组新的DH KEY发生交换。这组新KEY具有更长的生命周期因此可以抵制更强大的功击。DH的可用选项是 None, Group-5 (1536-bit)和 Group-2 (1024-bit). 当新KEY交换之后,DH组会变得更大。

      注解

      当PFS打开后,两个网关之间的新的phase-2 SA协商都会产生新的phase-1的一组KEY,这就会导致增加一个额外的层。这个层的作用是保证即使phase-2 SA失效过期,其KEY也不会由phase-1生成。

    • IKE 存活期(秒): SA的phase-1的存活期。默认是86400 秒 (1 天).当这个时间过了之后,会发生一次新的 phase-1 KEY交换。

    • ESP存活期 (秒):SA的 phase-2存活期。默认为 3600 秒(1 小时). 当过了这个时间之后,会有一个新的KEY初始化,用来加密和认证 IPsec的会话KEY。

    • 死亡匹配点检测:这是一种检测不可用IKE节点的方法。如果你希望虚拟路由器随时测试IKE节点的存活情况,选择了这个选项。 一般来说,最好在VPN连接的两端都同时配置DPD(Dead Peer Detectio).

  5. 点击确定。

更新和删除一个VPN客户网关.

你可以更新一个客户网关:即可以从无到有新建一个VPN,或是将有错误提示的VPN改正。

  1. 使用管理员或者终端用户账号登录CloudStack UI。
  2. 在左侧的导航栏,选择网络。
  3. 在选择视图里,选择VPN客户网关。
  4. 选择您要操作的客户VPN连接。
  5. To modify the required parameters, click the Edit VPN Customer Gateway button button to edit.
  6. 删除一个客户VPN网关,点击删除客户VPN网关按钮。 button to remove a VPN customer gateway.
  7. 点击确定。

为VPC创建一个VPN网关

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. 点击要部署虚机的VPC的配置按钮。

    系统会显示VPC页面,您创建的所有层都列在图中。

    对于每一个层,会显示以下选项。

    • 内部LB
    • 公共LB IP
    • 静态 NAT
    • 虚拟机
    • CIDR

    显示以下路由器信息:

    • 专用网关
    • 公共IP地址
    • 站点到站点 VPN
    • 网络 ACL列表
  5. 选择点对点VPN

    如果您是第一次创建VPN网关,选择点对点VPN会提示您创建一个VPN网关。

  6. 在信息确认对话框,点击“是”。

    过一会儿,VPN网关就创建出来了。系统会提示您查看VPN网关的详细信息,请点击“是”。

    VPN网关页面会显示以下详细信息:

    • IP地址
    • 帐号
    • 域名

新建vpn连接

注解

CloudStack最多支持建立8个VPN连接。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    页面上列出了该账号下所有的VPC。

  4. 点击要部署虚机的VPC的配置按钮。

    系统会显示VPC页面,您创建的所有层都列在图中。

  5. 点击设置图标。

    对于每一个层,会显示以下选项。

    • 内部LB
    • 公共LB IP
    • 静态 NAT
    • 虚拟机
    • CIDR

    显示以下路由器信息:

    • 专用网关
    • 公共IP地址
    • 站点到站点 VPN
    • 网络 ACL列表
  6. 选择点对点VPN

    系统会显示点对点VPN页面。

  7. 在选择视图下拉框,请确保选择VPN连接。

  8. 选择创建vpn连接按钮

    系统会显示创建VPN连接对话框:

    creating a VPN connection to the customer gateway.

  9. 选择想要的用户网关。

  10. 如果你希望在两个VPC虚拟路由器之间建立连接,选择被动模式。

    如果你希望在两个VPC虚拟路由器之间建立连接,需要等待另一个虚拟路由器来初始化连接,则只有其中一个虚拟器上选择被动模式。在这种情况下,不要在初始化连接的虚拟路由器上选择被动模式。

  11. 点击确定。

    过一会儿,系统会显示该VPN连接。

    VPN连接信息

    • IP地址
    • 网关
    • 状态
    • IPSec 预共享密钥
    • IKE策略
    • ESP策略

在VPC网络之间的站点的VPN连接

CloudStack可以在虚拟路由器之间部署站点到站点的VPN连接,这需要添加一个被动模式的站点到站点VPN。有了这个功能之后,用户就可以在多个区域或VPC之间通过安全的VPN通道互联。

这个特性支持所有类型的HYPERVISOR.

  1. 创建两个VPC。比如,VPC A和VPC B。

    更多信息,参考”配置一个虚拟私有云(VPC)”.

  2. 在创建的VPC两边都添加VPN网关。

    更多信息,参考 “为VPC创建VPN网关”.

  3. 在VPC两边都创建VPN客户网关。

    更多信息,参考`”创建和更新VPN客户网关” <#creating-and-updating-a-vpn-customer-gateway>`_.

  4. 在VPC A这边启用VPN的被动连接模式。

    更多信息,请参阅 “创建VPN连接”

    确保客户网关指向VPC B。这个VPN当前显示的是未连接状态。

  5. 在VPC B上启用VPN连接。

    确保客户网关指向VPC A。在这个示例里,因为VPC A的虚拟路由器是处于被动模式且等待着VPC B进行初始化连接,所以VPC B的虚拟路由器不要设置为被动模式。

    VPN连接当前显示为未连接状态。

    VPC两边的VPN会进行初始化连接。默认为30秒之后,两边VPN都会显示为已连接状态。

VPN连接的重启和删除

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. 点击要部署虚机的VPC的配置按钮。

    系统会显示VPC页面,您创建的所有层都列在图中。

  5. 点击设置图标。

    对于每一个层,会显示以下选项。

    • 内部LB
    • 公共LB IP
    • 静态 NAT
    • 虚拟机
    • CIDR

    显示以下路由器信息:

    • 专用网关
    • 公共IP地址
    • 站点到站点 VPN
    • 网络 ACL列表
  6. 选择点对点VPN

    系统会显示点对点VPN页面。

  7. 在选择视图下拉框,请确保选择VPN连接。

    系统会显示创建VPN连接对话框:

  8. 选择您要操作的VPN连接。

    系统显示详细信息页。

  9. 删除一个VPN连接,点击删除VPN连接按钮。 button to remove a VPN connection

    要重启VPN连接,请点击详细信息页的重置VPN连接按钮。 button to reset a VPN connection

关于vlan间路由(多层应用)

vlan间路由(多层应用)提供了在vlan间通过流量路由的功能。这个特性使你能够j建立私有云(vpc),独立分割的云,可容纳多层应用程序。这些层被部署在不同的VLAN,可以互相沟通。您提供的VLAN层的创建和部署虚拟机可以在不同的层上。VLAN连接到一个虚拟路由器,这有利于虚拟机之间的通信。实际上,你可以通过不同定义的vlan来分割你的虚拟机到不同网络,以便承担多层应用,如Web,应用程序或数据库的虚拟机。通过VLAN的逻辑上独立的应用程序的虚拟具有较高的安全性和较低的广播,同时任然物理连接到同一设备。

在 XenServer ,KVM和 VMware hypervisors支持这个特性

主要的优势为:

  • 管理可以部署一个vlans集,同时运行用户部署虚拟机在这些vlan上。从预先指定的vlan集中随机的为租户分配一个来宾vlan.租户处于同一层的所有vm处于分配给这个租户的来宾vlan.

    注解

    一个租户分配到的vlan不能被多个租户共享

  • 管理员允许所有用户创建自己的vpc,并部署应用。这个场景中,租户的虚拟机被部署到改租户的分配到的vlan中

  • 管理员和用户都可以创建多个vpcs.当第一个虚拟机被部署到该层时候,一个来宾网络nic插入到这个vpc虚拟路由器上

  • 管理员创建网关用接受和发送来自vm的流量:

    • VPN网关:更多信息,参考 “为VPC创建VPN网关”.
    • 公网网关:当为vpc创建一个虚拟路由器时,这个vpc的公共网关就添加到虚拟路由器当中。公共网关还没有暴露到最终用户。你不允许其列出,也不允许建立任何静态路由。
    • 私有网关: 更多信息,参考 “在一个VPC里加入私有网关。”.
  • 管理员和用户可以创建各种可能的目的地的网关组合。但是,在部署中每种类型只能有一个网关。

    例如:

    • VLAN和公网网关: 比如,在云中部署了一个应用,并且这个web应用所在的虚拟机要和因特网通信。
    • VLANs, VPN网关和公网网关: 比如, 云中部署了一个应用;部署这个web应用的虚拟机要和因特网通信; 并且数据库虚拟要个先前提到的设备通信
  • 管理员可以在虚拟路由器定义一个访问控制列表(ACL)用于过滤vlan或者因特网和vlan直接的流量。你可定义基于CIDR,端口范围,协议,类型代码(如果选用ICPM协议)和进出流量的acl

下图显示了可能的部署一个VLAN间的场景设置的:

a multi-tier setup.

要建立一个多层次的跨VLAN部署,请参考”配置一个虚拟私有云(VPC)”.

配置一个虚拟私有云(VPC)

关于虚拟私有云(VPC)

CloudStackVPC是CloudStack云中私有并隔离的部分。一个VPC可以使用自己的虚拟网络拓扑来组建传统物理网络。在这个虚拟网络中,您创建的虚机的私网地址可以由您自主选择IP范围,例如10.0.0.0/16。您可以在VPC网络范围内定义多个网络层,这些层可以让你将类似的虚机按IP地址范围分组。

例如:一个VPC的私有地址范围是10.0.0.0/16,其中的用户网络的地址范围可以分别是10.0.1.0/24、10.0.2.0/24、10.0.3.0/24等等。

Major Components of a VPC

VPC主要由以下网络组件构成:

  • VPC:一个VPC是多个隔离网络的容器,隔离网络间可以通过VPC的虚拟路由器互通。
  • 网络层:每个层是一个拥有各自VLAN和CIDR的隔离网络。您可以在层内放置VM等各种资源组。层与层之间通过VLAN方式隔离。VPC虚拟路由器在每个层中的网卡是该层的网关。
  • 虚拟路由器:创建VPC时会自动创建并启动一个虚拟路由器。该虚拟路由器连接了各层,并负责各层与公网网关、VPN网关和NAT实例间的网络流量。对于每个层,该虚拟路由器都会有对应的网卡和IP,并通过该IP提供DNS和DHCP服务。
  • 公网网关:VPC进出互联网的流量会走公网网关。VPC中的公网网关不暴露给最终用户,因此公网网关上不支持静态路由。
  • 私有网关:VPC进出某个私有网络的流量通过私有网关。更多信息,请查阅 “在一个VPC里加入私有网关。”.
  • VPN 网关:VPN连接的VPC端。
  • 点对点VPN连接:您的VPC和您的数据中心、家庭网络、主机托管设施之间基于硬件的VPN连接。更多信息,请参考”配置站点到站点的VPN连接”.
  • 客户网关:客户这边的VPN连接。更多信息,请参考 “创建和更新VPN客户网关”.
  • NAT实例:在用户虚机通过公网网关访问公网时,提供端口地址转换的实例。关于更多信息,请参考 “VPC中启用或禁用静态NAT”.
  • 网络ACL: 网络ACL是一组网络访问控制列表。这些列表就是一个按顺序编号的规则,执行的时候,从最小的编号开始。这些规则决定了与此ACL关联的各个层的进出流量会被允许或阻止。更多信息,请参考 “配置网络访问控制列表”.

VPC的网络架构

VPC有以下四个基本的网络架构:

  • 只有一个公网网关的VPC
  • VPC的公有和私有网关
  • VPC的公有和私有网关以及site-to-site VPN访问
  • 只有私有网关的VPC以及site-to-site VPN访问

VPC的连接选择

你可以连接你的VPC:

  • 通过公有网关连接到Internet.
  • 通过site-to-siteVPN网关连接到相邻数据中心。
  • 通过公有和私有VPN网关同时连接到Internet和相邻数据中心。

VPC网络的考虑事项

在创建VPC之前,确认以下事项:

  • 在创建好VPC之后,其默认处于启用状态。
  • 只能在高级区域中创建VPC,并且VPC只能属于一个区域。
  • 默认VPC的数量是20个。如果你需要更多的VPC的话,可以通过修改max.account.vpcs这个全局参数。这个参数是控制创建VPC的最大数量的。
  • 默认一个用户能创建VPC的层数是三层。也可以通过vpc.max.networks这个参数修改。
  • VPC中每一层都需要是唯一的CIDR,并且这个CIDR是在VPC的CIDR的范围之内。
  • 每一层只能属于一个VPC。
  • VPC中所有网络层都应属于同一个帐号。
  • 当VPC创建好之后,默认会分配好SourceNAT IP。当此VPC删除之后,SourceNAT IP也会被释放。
  • 一个公网IP只能用一个用途。如果此IP用于SourceNAT作用的话,就不能同时再用作StaticNAT 或端口转发。
  • 一个实例只能有一个私有IP地址,为了访问Internet,你可以为VPC里的此实例启用NAT功能。
  • 只有新的网络才能加入VPC。每一个VPC的最大网络数量由参数vpc.max.networks指定。其默认值为3.
  • VPC中只有一层支持负载均衡服务。
  • 如果一个IP地址被赋予一个网络层:
    • 那么这个IP就不能在VPC里被另外的层所使用。比如:如果你有A层和B层以及一个公网IP地址,则你可以为A或B创建一个端口转发规则,但不能同时在A和B上创建。
    • 那个IP也不能在VPC的其它的客户网络里用作StaticNAT,负载均衡,端口转发规则。
  • VPC网络不支持Remote access VPN。

添加一个VPC

当创建VPC时,你只需要提供区域名和VPC要使用的一组IP地址。这组IP地址是以CIDR块的形式提供。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

  4. 点击添加VPC按钮。页面呈现以下:

    adding a vpc.

    填写以下内容:

    • 名称: 要创建的VPC的名称。
    • 描述: 关于此VPC的简短描述.
    • 区域: 你希望将此VPN应用在哪个区域中。
    • 客户网络超级CIDR: 定义一个VPC内所有层(客户网络)的CIDR范围。当你新创建一个层时,这个层的CIDR必须在这个超级CIDR范围之内。CIDR的格式定义必须符合RFC1918。
    • 客户网络的DNS域名: 如果你需要一个域名,则需要在此指定域名后缀。这个参数会应用到VPC中所有的层中。这表示,VPC中所有的层都属于同一个域。如果没有指定域名,则域名会由系统随机产生。
    • 公共负载均衡提供者: 有两个选项:VPC虚拟路由器和 Netscaler。
  5. 点击确定。

添加层

层在VPC里起来隔离网络的作用,默认规则是层之间不能互访。不同VLAN之间的层可以通过虚拟机实现连接。层在VPC内部提供一种廉价,低延迟的网络连接。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

    注解

    最终用户能看到他们自己的VPC,系统管理用户和域管理员可以看到所有被授权查看的VPC。

  4. 在你希望设置层的VPC里,点击配置按钮。

  5. 点击新建网络。

    然后,添加层的对话界面就会出现。如下:

    adding a tier to a vpc.

    如果你已添加层,VPC界面就会出现。点击添加层可以增加一个新的层。

  6. 指定以下信息:

    所有的区域必须填写的。

    • 名称: 你添加的层的一个唯一的层名。

    • 网络方案: 默认有以下几种网络方案: Internal LB, DefaultIsolatedNetworkOfferingForVpcNetworksNoLB, DefaultIsolatedNetworkOfferingForVpcNetworks

      在一个VPC中,用LB-enabled network offering只能创建一个层。

    • 网关:你创建网络层的网关。确保网关在你创建VPC时指定的超级CIDR范围内,并且不能与已存在VPC的任何网络层的CIDR重叠。

    • VLAN: 指定系统管理员创建的层的VLAN ID号。

      这个选项只在你选择的方案在VLAN-enabled的情况下才会显示出来。

      如需要更多信息,请参考”为隔离网络分配VLAN” <hosts.html#assigning-vlans-to-isolated-networks>`_.节。

    • 子网掩码:你创建的网络层的子网掩码。

      比如,如果VPC CIDR是10.0.0.0/16并且该网络层CIDR是10.0.1.0/24,那么这个网络层的网关是10.0.1.1,子网掩码是255.255.255.0.

  7. 点击确定。

  8. 继续为层配置访问控制列表。

配置网络访问控制列表

定义网络访问控制列表(ACL),用以在VPC的层之间,或是层与互联网之间控制进出流量。默认情况下,客户网络的所有进入流量被阻止,所有外出流量被允许。一旦在外出流量方向添加了ACL,则只有ACL规则允许的流量可以被允许,其余的外出流量会被阻止。如果要开放其它端口,则需要在新的ACL中明确定义。只有在支持NetworkACL服务的条件下,只能创建层的ACL。

关于ACL列表

在CloudStack术语中,ACL指的是一组针对网络条目。其按条目规则顺序执行,从最小值开始。这些规则决定了与此ACL关联的层的进出流量是被允许还是阻止。操作的方法是添加一个ACL,然后将这个ACL与层关联。ACL在整个VPC中使用,它可以被关系到一个VPC当中多个层中。一个层能及只能关联到一个ACL中。

当没有ACL明确关联时,会有一个默认的ACL起作用。默认规则是层中所有进入流量被阻止,所有外出流量被允许默认的ACL不能被删除或修改。默认ACL的内容如下:

规则 协议 流量类型 动作 CIDR
1 所有 进入流量 拒绝 0.0.0.0/0
2 所有 外出流量 拒绝 0.0.0.0/0

创建ACL列表

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. 点击VPC的配置按钮。

    对于每一个层,会显示以下选项。

    • 内部LB
    • 公共LB IP
    • 静态 NAT
    • 虚拟机
    • CIDR

    显示以下路由器信息:

    • 专用网关
    • 公共IP地址
    • 站点到站点 VPN
    • 网络 ACL列表
  5. 选择网络ACL列表。

    在ACL页面,下面默认规则将会显示出来:default_allow, default_deny.

  6. 点击添加ACL列表,指定以下配置:

    • ACL列表名称: 为ACL列表命名。
    • 描述: ACL列表的简短描述。

创建一个ACL规则

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. 点击VPC的配置按钮。

  5. 选择网络ACL列表。

    除了创建的你自定义的ACL列表之后,以下默认ACL规则也会显示在页面中:default_allow, default_deny.

  6. 选择需要的ACL列表。

  7. 选择ACL规则栏

    为了创建ACL规则,需要在VPC中定义下面哪些网络流量是允许的。

    • 规则序号: 规则被执行的顺序。
    • CIDR: 对于进入的规则,CIDR对源地址起作用,对于外出的规则,CIDR对目标地址起作用。如果要定义多个可接受进出流量的特定地址段,需要以逗号分隔各个CIDR。CIDR是进入流量的基IP地址。比如, 192.168.0.0/22. 如要对所有CIDR允许流量, 设置为 0.0.0.0/0.
    • 操作: 定义要进行的操作,允许或阻止。
    • 协议: 发送到层的源地址的网络协议。最终用户的访问和数据交换通常是用TCP和UDP协议。ICMP协议通常用来发送错误信息或网络监控。ALL表示支持所有协议流量,其它选项是协议编号。
    • 起始端口, 结束端口 (TCP, UDP only):对进入流量,这些端口是指需要监听的目标地址的端口范围。如果你只开放一个端口,则在起始和结束端口里填写同一个端口。
    • 协议编号: 协议编号是与IPV4或IPV6相关联的。更多信息,请参考 协议号.
    • ICMP类型, ICMP代码 (ICMP only): 信息类型及发送错误的代码。
    • 流量类型: 进出流量的类型。
  8. 点击添加。这个ACL规则就添加好了。

    你可以重新编辑ACL标签,或是删除ACL。点击详细信息里的appropriate按钮。

创建一个具有自定义ACL列表的层。

  1. 创建一个VPC。

  2. 创建一个自定义ACL列表。

  3. 将ACL规则加入ACL列表。

  4. 在VPC里创建一个层。

    在创建层的过程中选择需要的ACL列表。

  5. 点击确定。

将一个自定义的ACL关联到一个层。

  1. 创建一个VPC。

  2. 在VPC里创建一个层。

  3. 将默认的ACL规则关联到层。

  4. 创建一个自定义ACL列表。

  5. 将ACL规则加入ACL列表。

  6. 选中你希望赋予自定义ACL的层。

  7. 点击替换ACL图标。button to replace an ACL list

    替换ACL的对话界面将会弹出来。

  8. 选择需要的ACL列表。

  9. 点击确定。

在一个VPC里加入私有网关。

A private gateway can be added by the root admin only. The VPC private network has 1:1 relationship with the NIC of the physical network. You can configure multiple private gateways to a single VPC. No gateways with duplicated VLAN and IP are allowed in the same data center (but you can use different VLANs for different gateways, but with same IP ranges/networks)

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. Click the Configure button of the VPC for which you want to configure private gateway

    系统会显示VPC页面,您创建的所有层都列在图中。

  5. 点击设置图标。

    下面这些选项就会出现。

    • 内部LB
    • 公共LB IP
    • 静态 NAT
    • 虚拟机
    • CIDR

    显示以下路由器信息:

    • 专用网关
    • 公共IP地址
    • 站点到站点 VPN
    • 网络 ACL列表
  6. 选择私有网关。

    网关对话框就会显示出来。

  7. 点击添加新网关:

    adding a private gateway for the VPC.

  8. 指定以下信息:

    • Physical Network: The physical network you have created in the zone - this is the network which caries GUEST TRAFFIC

      See “GUEST TRAFFIC for Private Gateway”.

    • IP地址: 关联VPC网关的IP地址。

    • 网关: 定义进出VPC流量的网关。

    • Netmask: VPC网关的子网掩码。

    • VLAN: VPC网关的VLAN。

    • Source NAT: 这个选项会启用VPC私有网关的source NAT服务。

      参考”私有网关的Source NAT”.

    • ACL: 控制VPC私有网关的进出流量,默认情况下,所有流量被阻止。

      参考”私有网关的ACL”.

    新的网关就会出现在列表中。你可以重复这些步骤为VPC增加更多的网关。

GUEST TRAFFIC for Private Gateway

When you provision Private Gateway with i.e. vlan id 1500, CloudStack will try to provision vlan interface with that vlan id on top of the physical interface which is defined for the selected physical network - i.e. if you defined “bond0” as the “traffic label” for the selected Physical Network, this means CloudStack will try to create “bond0.1500” vlan interface, and this will work just fine.

But in some cases, you might not be able to use current Guest Physical Network - i.e. if you are already running VXLAN as isolation method with i.e. bond0.150 being used as Traffic Label (vlan 150 caries all VXLAN tunnels) then CloudStack would try to provision “bond0.150.1500” interface, which will not work. In similar fashion, if you are using cloudbrX as Traffic Label for your Guest network (VLAN used as isolation method), this means CloudStack will try to provision “cloudbrX.1500” interface, which will also not work.

In cases described above, you would perhaps want to create additional Guest Physical Network, and specify bond0 as the Traffic Label (to comply with example values given above) - and here CloudStack will provision “bond0.1500” interface, which will work as expected.

In cases where you have 2 (or more) Guest Physical Networks, and you want one of them to be used for regular Guest Traffic (vlans, or vxlan tunnels), but you want another Guest Physical Network to be used for Private Gateway functionality (solution to the problem described above), then we need to make sure that we properly TAG both Guest Physical Networks and the needed Network Offerings - both the regular Network Offerings and also the hidden network offering that is used for Private Gateways (visible only inside DB), named “System-Private-Gateway-Network-Offering”.

For instruction on how to use tags with Physical networks and Network Offerings, please see “Tagging Guest Physical Network and Network Offerings”.

私有网关的Source NAT

你可能希望在同一个超级CIDR和客户层CIDR中部署多个VPC。因此,在一个数据中心,不同VPC中的虚拟机通过私有网络可以拥有相同的IP地址。在这种情况下,就需要在私有网关里配置Source NAT服务以避免IP冲突。如果Source NAT服务启用,VPC中的客户虚拟机使用私有网关IP地址与数据中心其它机器交流。

Source NAT服务是添加私有网关时启用。如果删除了私有网关,关联到此私有网关的Source NAT规则也会被删除。

如要有已有私有网关中启用Source NAT,需要先删除(私有网关),然后再建一个启用Source NAT的私有网关。

私有网关的ACL

VPC私有网关的进出流量是被ACL规则控制的。ACL均包含允许和阻止的规则。在每一条规则中,所有进出私有网关接口的流量是被阻止的。

你可以在创建私有网关时,改变这个默认的行为。或者,你也可以按如下方式操作:

  1. 在VPC中,验证你想操作的私有网关。

  2. 在私有网关页面,按如下步骤操作:

    • 使用快速查看视图,参考3.
    • 使用详细查看栏。参考4。
  3. 在所选择的私有网关的快速查看视图里,点击替换ACL,选中ACL规则,然后点击OK按钮。

  4. 点击你需要操作的私有网关的IP地址。

  5. 在详细查看栏。点击替换ACL按钮。button to replace an ACL list

    替换ACL的对话框就会出现。

  6. 选择ACL规则,然后点击OK按钮。

    稍等片刻。你就会看到新的ACL规则出现在详细页面里了。

创建一个静态静由。

CloudStack可以让你指定你创建的VPN链接的路由。你可以输入一个或CIDR地址来指定路由返回到网关的具体流量。

  1. 在VPC中,验证你想操作的私有网关。

  2. 在私有网关页面,点击你需要的私有网关的IP地址。

  3. 选择静态路由栏。

  4. 指定目标网络的CIDR。

  5. 点击 添加

    稍等片刻,新的路由就创建好了。

路由黑名单

CloudStack允许你定义一个路由黑名单,这样它们就不能关联到任何VPC私有网关。你需要在全局参数blacklisted.routes里定义。要注意,此参数只在新路由创建时才会生效。如果你在黑名单里加入了已存在的静态路由,则此静态路由还是会继续起作用。你不能把在路由黑名单里的路由加入到静态路由当中去。

将虚拟机部署到层。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. 点击要部署虚机的VPC的配置按钮。

    所有创建好的层都会有VPC页面里列出来。

  5. 指向你想添加虚拟机的层,点击虚拟机栏。

    adding a VM to a vpc.

    添加实例的页面就会出现。

    按照屏幕所指示的操作加入实例。至于如何添加实例,参照安装指南文档。

在VPC层中部署虚拟,共享网络。

CloudStack允许你在VPC层中部署虚拟机和共享网络。有了这个功能,分布在多层当中的虚拟机可以通过共享网络接收到监控服务。

  1. 用系统管理员登陆到CloudStack UI界面。

  2. 在左边的导航栏里,选择实例。

  3. 点击添加实例。

  4. 选择一个区域。

  5. 选择一个模板或ISO,按向导步骤操作。

  6. 请确认你的硬件支持所选择的服务方案。

  7. 在网络导航栏,选择你希望虚拟机所在的网络。

    你可以将虚拟机部署在一个拥有多个共享网络的VPC层中。

    adding a VM to a VPC tier and shared network.

  8. 点击下一步,审看已配置信息,然后点击启动。

    你的这个虚拟机就已被部署到所选择的VPC层和共享网络中。

VPC获取新的IP地址。

当获取IP地址时,所有的IP地址会被分配到该VPC,而不是VPC中的用户网络。只有当在IP或用户网络上创建第一个网络规则(端口映射、负载均衡、静态NAT)时,该IP才会关联到用户网络。一个IP不能同时关联一个以上的网络。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. 点击要部署虚机的VPC的配置按钮。

    系统会显示VPC页面,您创建的所有层都列在图中。

    下面这些选项就会出现。

    • 内部LB
    • 公共LB IP
    • 静态 NAT
    • 虚拟机
    • CIDR

    显示以下路由器信息:

    • 专用网关
    • 公共IP地址
    • 站点到站点 VPN
    • 网络 ACL列表
  5. 选择IP地址。

    公网IP地址页面就显示出来。

  6. 点击获得一个新IP, 并且在确认的对话框中点击确定.

    因为通常IP地址是有限资源,系统会提示您确认。 在稍等片刻之后,新的IP地址将会出现并且状态是已分配。现在您就可以使用这个IP地址做端口转发、负载均衡或静态NAT。

Releasing an IP Address Allocated to a VPC

IP地址是有限资源。如果您不再需要某个IP,请解除该IP和VPC的关联,使其返回到可用地址池中。只有当IP上所有的网络规则(端口映射、负载均衡、静态NAT)都删除后,该IP才能从所属层释放。释放的IP仍属于该VPC。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. 点击要释放IP的VPC的配置按钮。

    系统会显示VPC页面,您创建的所有层都列在图中。

    下面这些选项就会出现。

    • 内部LB
    • 公共LB IP
    • 静态 NAT
    • 虚拟机
    • CIDR

    显示以下路由器信息:

    • 专用网关
    • 公共IP地址
    • 站点到站点 VPN
    • 网络 ACL列表
  5. 选择公网IP地址。

    系统显示IP地址页面。

  6. 点击要释放的IP地址。

  7. 在详细查看栏,点击释放IP按钮。 button to release an IP.

VPC中启用或禁用静态NAT

静态NAT规则是将公网IP映射到VPC中虚机的私网IP,以便允许互联网流量访问该虚机。本节描述如何在VPC中启用或禁用某个公网IP地址的静态NAT。

如果该公网IP上已经有端口转发规则,则不允许再启用静态NAT。

如果用户VM存在多个网络,则静态NAT规则仅在默认网络上定义时生效。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. 点击要部署虚机的VPC的配置按钮。

    系统会显示VPC页面,您创建的所有层都列在图中。

    对于每一个层,会显示以下选项。

    • 内部LB
    • 公共LB IP
    • 静态 NAT
    • 虚拟机
    • CIDR

    显示以下路由器信息:

    • 专用网关
    • 公共IP地址
    • 站点到站点 VPN
    • 网络 ACL列表
  5. 在路由器节点中,选择公共IP地址。

    系统显示IP地址页面。

  6. 点击您要操作的IP。

  7. 在“详细信息”页,点击静态NAT按钮|enable-disable.png| 。该按钮会根据公网IP的静态NAT当前状态,在启用和禁用间切换。

  8. 如果是启用静态NAT,会显示如下对话框:

    selecting a tier to apply staticNAT.

  9. 选择层和目标虚机,然后点击“应用”。

VPC中添加负载均衡规则

在VPC中,你可以配置外部或内部负载均衡。外部负载均衡就是将VPC虚拟路由器接收到的公网流量进行转发的规则。这个流量如何在层里进行均衡取决于你的配置。Citrix NetScaler 和 VPC virtual router都支持外部负载均衡。内部均衡是在层内的虚拟之间进行均衡。比如,到达WEB层请求的流量可以转发到此层另外的虚拟机。外部负载均衡设备不支持内部均衡。内部负载均衡的服务是由目标层的内部虚拟机配置后提供支持服务的。

在层内进行负载均衡(外部负载均衡)

A CloudStack user or administrator may create load balancing rules that balance traffic received at a public IP to one or more VMs that belong to a network tier that provides load balancing service in a VPC. A user creates a rule, specifies an algorithm, and assigns the rule to a set of VMs within a tier.

在VPC层中启用基于NetScaler的负载均衡
  1. 添加并启用 Netscaler VPX独立模块。

    Netscaler只能在独立模块的形式下应用于VPC环境中。

  2. 创建启用持久化选项的网络方案。请参考”创建一个外部负载均衡网络方案”.

  3. 在VPC中创建一个基于Netscaler的公用负载均衡。

    更多信息,请参考 “添加一个VPC”.

  4. 在VPC中获取一个IP地址。

  5. 创建并应用一个外部负载均衡规则。请参考:ref:create-ext-lb-rule.

创建一个外部负载均衡网络方案

要在VPC中启用外部负载均衡支持,依如下操作建立网络方案:

  1. 使用用户或管理员登录到CloudStack用户界面。
  2. 下拉选择方案,选择网络方案:
  3. 点击添加网络方案。
  4. 在对话框中,选择如下操作:
    • 名称: 任何网络方案的名称。
    • 描述: 提供一个简短的方案描述。
    • 网络速度: 允许的数据传输速度(MB/秒)。
    • 流量类型: 允许承载的网络流量类型。
    • 来宾类型: 选择来宾网络为隔离或共享网络。
    • 持续性: 表明来宾网络是否支持持续性。无需提供任何VM部署的网络,称之为持续性网络。
    • VPC: 此选项表明是否在来宾网络中启用VPC。 CloudStack中的虚拟专用云(VPC)是专用、隔离的。 一个VPC可以有一个类似于传统物理网络的虚拟网络拓扑结构。有关的VPC的详细信息,请参考`”关于VPC” <#about-virtual-private-clouds>`_.
    • 指定: (仅隔离的来宾网络) 表明在使用这个网络方案时,是否指定VLAN。
    • 支持服务:选择负载均衡,使用Netscaler 或 VpcVirtualRouter.
    • 负载均衡类型:从下拉列表里选择公用负载均衡。
    • 负载均衡隔离: 如果使用Netscale作为外部负载均衡,选择此项进行隔离。
    • 系统方案: 选择你想在这个网络中使用的虚拟路由器的系统服务方案。
    • 保护模式: 表明是否使用保护模式。在这个模式中,只有网络中第一个虚拟机启动时才分配网络资源。
  5. 点击OK按钮,网络方案就创建好了。
创建一个外部负载均衡规则
  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. 点击要配置负载均衡规则的VPC的配置按钮。

    系统会显示VPC页面,您创建的所有层都列在图中。

    对于每一个层,会显示以下选项。

    • 内部LB
    • 公共LB IP
    • 静态 NAT
    • 虚拟机
    • CIDR

    显示以下路由器信息:

    • 专用网关
    • 公共IP地址
    • 站点到站点 VPN
    • 网络 ACL列表
  5. 在路由器节点中,选择公共IP地址。

    系统显示IP地址页面。

  6. 点击你希望创建规则的IP地址,然后点击配置

  7. 在图的负载均衡节点点上,点击 查看全部。

  8. 选择应用规则的层。

  9. 指定以下信息:

    • 名称: 负载均衡规则的名称。
    • 公网端口: 接收待负载均衡的流入流量的端口。
    • 私有端口: 虚拟机会使用此端口接收流量。
    • 算法。选择您希望CloudStack 使用的负载均衡算法。CloudStack 支持下列知名的算法:
      • 轮询
      • 最少连接
      • 源IP
    • 粘性. (可选)点击配置,选择粘性策略使用的算法。参见负载均衡规则的粘性会话策略。
    • 点击添加VM,选择两个或更多的VM分担流入的流量,然后点击应用。

新的负载均衡策略会显示在列表中。您可以重复以上步骤为该IP地址添加更多的负载均衡策略。

跨越层的负载均衡

CloudStack支持在VPC内不同层之间共享工作负载。这需要先在你的环境里设置好多个层,比如WEB层,应用层。每一个层的流量通过VPC虚拟路由机进行负载均衡。关于这方面的内容, “在VPC里添加负载均衡规则”. 如果你想将WEB层发向应用层的流量进行负载均衡,需要使用Cloudstack的内部负载均衡功能。

在VPC中,内部负载均衡是如何工作的呢?

在这个图中,公网负载均衡规则是这样创建的:公网IP为IP 72.52.125.10,外网端口为80,内网端口为81。VPC的虚拟路由机创建的负载均衡规则将互联网的流量分配到WEB层的各个虚拟机上。在应用层创建了两个内部负载均衡规则。其中一个规则是:客户IP为10.10.10.4的将端口23进行负载分发,实例VM和InternalLBVM1的端口25进行了负载。另一条规则是:客户IP为10.10.10.4的将端口45进行负载分发,实例VM和InternalLBVM1的端口46进行了负载。另一条规则是:客户IP为10.10.10.6的将端口23进行负载分发,实例VM和InternalLBVM1的端口25进行了负载。(两条规则还是三条规则?原文如此,希望图示能明解)

Configuring internal LB for VPC

指南
  • 内部和公网负载均衡在一个层里往往是互斥的。如果一个层已应用了公网负载均衡之后,此层就不能再应用内部负载均衡。
  • 在 CloudStack 4.2版本中,只有VPC网络支持内部负载均衡。
  • 在CloudStack 4.2 版本中,只有Internal LB VM才能作内部负载均衡的提供方。
  • 将网络方案由内部负载均衡更改为公网负载均衡是不可行的。
  • 在VPC中,多层可以应用内部负载均衡。
  • 在VPC中,只有一层只支持公网负载均衡。
在VPC层上启用内部负载均衡功能
  1. 创建一个新的网络方案,请参考:ref:creating-net-offering-internal-lb.
  2. 创建并应用一个内部负载均衡规则。参考:ref:create-int-lb-rule.
创建一个内部负载均衡网络方案

要在VPC当中使用内部负载均衡,可以使用默认的DefaultIsolatedNetworkOfferingForVpcNetworksWithInternalLB,或按如下操作新建一个网络方案:

  1. 使用用户或管理员登录到CloudStack用户界面。
  2. 下拉选择方案,选择网络方案:
  3. 点击添加网络方案。
  4. 在对话框中,选择如下操作:
    • 名称: 任何网络方案的名称。
    • 描述: 提供一个简短的方案描述。
    • 网络速度: 允许的数据传输速度(MB/秒)。
    • 流量类型: 允许承载的网络流量类型。
    • 来宾类型: 选择来宾网络为隔离或共享网络。
    • 持续性: 表明来宾网络是否支持持续性。无需提供任何VM部署的网络,称之为持续性网络。
    • VPC: 此选项表明是否在来宾网络中启用VPC。 CloudStack中的虚拟专用云(VPC)是专用、隔离的。 一个VPC可以有一个类似于传统物理网络的虚拟网络拓扑结构。有关的VPC的详细信息,请参考`”关于VPC” <#about-virtual-private-clouds>`_.
    • 指定: (仅隔离的来宾网络) 表明在使用这个网络方案时,是否指定VLAN。
    • 支持服务: 选择负载均衡,从待提供的下拉列表里选择`InternalLbVM。
    • 负载均衡类型: 从下拉列表里选择内部负载均衡。
    • 系统方案: 选择你想在这个网络中使用的虚拟路由器的系统服务方案。
    • 保护模式: 表明是否使用保护模式。在这个模式中,只有网络中第一个虚拟机启动时才分配网络资源。
  5. 点击OK按钮,网络方案就创建好了。
创建一个内部负载均衡规则

当你创建好一个内部负载均衡规则,并将之用于一个虚拟之后,一个内部负载均衡的应用就建立起来了。

你可以在实例页面中查看创建的内部LB VM 按如下导航 基础构架 > 区域 > <zone_ name> > <physical_network_name> > 网络服务提供 > 内部负载均衡虚拟机,你就可以看到已创建了内部负载均衡的实例上。也可以在此进行内部负载均衡的管理。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. 点击要配置内部负载均衡规则的VPC的配置按钮。

    系统会显示VPC页面,您创建的所有层都列在图中。

  5. 指向你想配置内部负载均衡的层,点击内部负载均衡。

    在 Internal LB页面里,点击添加 Internal LB。

  6. 在对话框里,定义以下内容:

    • 名称: 负载均衡规则的名称。

    • 描述: 提供一个简短的规则描述。

    • 源IP地址: (可选) 是指产生流量的源IP地址。这个地址是从你创建内部负载均衡的层中的CIDR中获取的。如果没有指定,则系统会自动从CIDR中分配。

      对于每一个源IP地址,都可以建立一个针对它的内部负载均衡。

    • 源端口: 与源IP地址关联的端口,此端口上的流量是基于负载均衡的。

    • 实例端口: 内部负载均衡虚拟机的端口。

    • 算法。选择您希望CloudStack 使用的负载均衡算法。CloudStack 支持下列知名的算法:

      • 轮询
      • 最少连接
      • 源IP

在VPC里添加一个端口转发规则。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. 点击要部署虚机的VPC的配置按钮。

    系统会显示VPC页面,您创建的所有层都列在图中。

    对于每一个层,会显示以下选项。

    • 内部LB
    • 公共LB IP
    • 静态 NAT
    • 虚拟机
    • CIDR

    显示以下路由器信息:

    • 专用网关
    • 公共IP地址
    • 站点到站点 VPN
    • 网络 ACL列表
  5. 在路由器节点中,选择公共IP地址。

    系统显示IP地址页面。

  6. 点击你希望创建规则的IP地址,然后点击配置

  7. 在图表的端口转发节点,点击查看所有。

  8. 选择应用规则的层。

  9. 指定以下信息:

    • 公用端口: 你在前面操作所获取的供公共流量使用的公用IP地址的端口。

    • 私有端口: 虚拟机实例将被转发到公共流量的监听端口。

    • Protocol: 两个端口之间所用的互联协议。

      • TCP
      • UDP
    • Add VM: 点击增加虚拟机,选择你想将此规则应用上的虚拟机,点击应用。

      你可以通过SSH连接实例来测试此规则。

删除层

你可以从一个VPC中删除一个层。一个被删除的层是不能被擦除的。当一个层被删除后,只有层的资源被删去。所有的网络规则(端口转发,负载均衡,静态NAT)还有关联到此层的IP地址都会删除。但这些IP地址仍然属于这个VPC。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. 在你希望设置层的VPC里,点击配置按钮。

    配置VPC的页面显示出来了。指向你需要操作的层。

  5. 选择你想删除的层。

  6. 在网络详细栏,点击删除网络按钮。button to remove a tier

    点击YES按钮。稍等片片刻,层就会被删除了。

编辑,重启,删除VPC。

注解

在删除VPC前,需要先删除所有的层。

  1. 使用管理员或者终端用户账号登录CloudStack UI。

  2. 在左侧的导航栏,选择网络。

  3. 在选择视图中,选择VPC。

    此帐号创建的所有VPC将显示在页面中。

  4. 选择你需要的VPC。

  5. 在详细栏,点击删除VPC按钮。button to remove a VPC

    你也可以在快速查看视图里点击删除按钮进行VPC的删除。

    You can edit the name and description of a VPC. To do that, select the VPC, then click the Edit button. button to edit.

    如果要重启一个VPC,点击重启按钮。button to restart a VPC

Tagging Guest Physical Network and Network Offerings

In cases you have more than one Guest Physical Network, you might choose to use them for different purposes - i.e. to carry all “regular” VPC Guest Traffic (vlans/vxlans) on one Guest Physical Network, but use another Guest Physical Network for VPC Private Gateway (networks which are created as part of Private Gateway).

Example above would be accomplished by assigning different tags on these two Guest Physical Networks, and then tag proper Guest Network offerings in certain way, as explained later.

To edit tags in existing zone, for Guest Physical Networks, please do the following:

  1. 用系统管理员登陆到CloudStack UI界面。
  2. Click on Infrastructure, then Zones, then particular Zone, then click on Physical Network tab, and from there select the correct Guest Network by clicking it, and again by clicking on “Guest / Configure” button.
  1. In the presented screen, click on Edit button, and then you will be able to define tag for this particular Physical Network - set it to i.e. “guestvxlan”.
  1. Repeat this step for second (and any additional) Guest Physical Networks, and make sure to use different tag for each of networks (as needed). Here we set it to “guestprivgtw”.
  1. In this example above, we are setting tag “guestvxlan” for Guest Physical Network (bond0.150) that continues to carry VXLAN tunnels for VPCs, and we set tag “guestprivgtw” for Guest Physical Network (bond0) that will carry Private Gateway guest networks.

Next, we need to edit tags on existing Guest Network Offerings. Depending on CloudStack versions, you will need to edit database records directly.

General SQL query would look like following, but please use your own judgement to reflect your environment.
mysql> update network_offerings set tags="guestvxlan" where traffic_type="Guest";

This would set tag for all existing Guest Network Offers.

Now we want to put different tag on the hidden Network Offering that is used to provision Guest networks for Private Gateways.

mysql> update network_offerings set tags="guestprivgtw" where name="System-Private-Gateway-Network-Offering";

From now one, whenever you provision regular Guest Network (private tiers, part of VPC), these networks will be created on Guest Physical Network with tag “guestvxlan”, while Private Gateway Guest networks will be created on Guest Physical Network with tag “guestprivgtw”.

持久化网络

在不部署任何VM的情况下就初始化好的网络称为持久化网络。持久化网络可以是VPC的一部分,也可以不是。

在您创建其它类型的网络时,在网络中第一台VM创建之前,该网络仅是数据库的一条记录。当第一个VM创建时,网络会指定一个VLAN ID并初始化。同样,当网络中最后一个VM销毁后,VLAN ID会被释放,这样该网络就不再可用。通过使用持久化网络,您就有能力在不部署VM的情况下在&PRODUCT;中创建一个网络用来部署物理设备。而且,您可以在该网络中部署物理设备。

使用持久化网络的一个优点是您可以创建具有一个只包含物理设备的层的VPC。例如,您可以为一个三层应用创建一个VPC,在Web层和应用层部署VM,在数据库层使用物理机器。另一个使用场景为如果您使用物理硬件提供网络服务,您可以定义网络为持久化的。这样即便网络中所有VM都销毁了,服务还可以继续提供。

持久化网络的考虑事项

  • Persistent网络是为隔离网络而设计的。
  • 所有默认网络方案都不是持久化的。
  • 网络方案的持久化选项不可编辑。因为修改该选项会影响使用该网络方案创建的已有网络的行为。
  • 当您创建客户网络时,您选择的网络方案定义了该网络的持久化。反过来,这依赖于选择的网络方案是否启用持久化网络。
  • 通过修改使用的网络方案为启用持久化的方案,现有网络可以变为持久化。在设置该属性时,即便网络中没有运行的VM,该网络也会初始化。
  • 通过修改使用的网络方案为禁用持久化的方案,现有网络可以变为非持久化。如果网络中没有运行的VM,在下次网络垃圾回收运行时,该网络会被关闭。
  • 当网络中最后一台VM销毁时,网络垃圾回收器会检查该网络的网络方案是否为持久化,若不是持久化,则会关闭网络。

创建一个Persistent客户网络

要创建一个Persistent网络,请按如下操作:

  1. 创建一个Persistent选项启用的网络方案。

    请参考`”创建一个新的网络方案” <networking.html#creating-a-new-network-offering>`_.

  2. 从左边的导航栏里选择网络。

  3. 选择你希望提供此网络方案服务的客户网络。

  4. 点击编辑按钮。

  5. 在网络方案下拉列表里,选择你刚才创建的persistent网络方案。

  6. 点击确定。

Setup a Palo Alto Networks Firewall

Functionality Provided

This implementation enables the orchestration of a Palo Alto Networks Firewall from within CloudStack UI and API.

The following features are supported:

  • List/Add/Delete Palo Alto Networks service provider
  • List/Add/Delete Palo Alto Networks network service offering
  • List/Add/Delete Palo Alto Networks network using the above service offering
  • Add an instance to a Palo Alto Networks network
  • Source NAT management on network create and delete
  • List/Add/Delete Ingress Firewall rule
  • List/Add/Delete Egress Firewall rule (both ‘Allow’ and ‘Deny’ default rules supported)
  • List/Add/Delete Port Forwarding rule
  • List/Add/Delete Static NAT rule
  • Apply a Threat Profile to all firewall rules (more details in the Additional Features section)
  • Apply a Log Forwarding profile to all firewall rules (more details in the Additional Features section)

Initial Palo Alto Networks Firewall Configuration

Anatomy of the Palo Alto Networks Firewall

  • In ‘Network > Interfaces’ there is a list of physical interfaces as well as aggregated physical interfaces which are used for managing traffic in and out of the Palo Alto Networks Firewall device.
  • In ‘Network > Zones’ there is a list of the different configuration zones. This implementation will use two zones; a public (defaults to ‘untrust’) and private (defaults to ‘trust’) zone.
  • In ‘Network > Virtual Routers’ there is a list of VRs which handle traffic routing for the Palo Alto Firewall. We only use a single Virtual Router on the firewall and it is used to handle all the routing to the next network hop.
  • In ‘Objects > Security Profile Groups’ there is a list of profiles which can be applied to firewall rules. These profiles are used to better understand the types of traffic that is flowing through your network. Configured when you add the firewall provider to CloudStack.
  • In ‘Objects > Log Forwarding’ there is a list of profiles which can be applied to firewall rules. These profiles are used to better track the logs generated by the firewall. Configured when you add the firewall provider to CloudStack.
  • In ‘Policies > Security’ there is a list of firewall rules that are currently configured. You will not need to modify this section because it will be completely automated by CloudStack, but you can review the firewall rules which have been created here.
  • In ‘Policies > NAT’ there is a list of the different NAT rules. You will not need to modify this section because it will be completely automated by CloudStack, but you can review the different NAT rules that have been created here. Source NAT, Static NAT and Destination NAT (Port Forwarding) rules will show up in this list.

Configure the Public / Private Zones on the firewall

No manual configuration is required to setup these zones because CloudStack will configure them automatically when you add the Palo Alto Networks firewall device to CloudStack as a service provider. This implementation depends on two zones, one for the public side and one for the private side of the firewall.

  • The public zone (defaults to ‘untrust’) will contain all of the public interfaces and public IPs.
  • The private zone (defaults to ‘trust’) will contain all of the private interfaces and guest network gateways.

The NAT and firewall rules will be configured between these zones.

Configure the Public / Private Interfaces on the firewall

This implementation supports standard physical interfaces as well as grouped physical interfaces called aggregated interfaces. Both standard interfaces and aggregated interfaces are treated the same, so they can be used interchangeably. For this document, we will assume that we are using ‘ethernet1/1’ as the public interface and ‘ethernet1/2’ as the private interface. If aggregated interfaces where used, you would use something like ‘ae1’ and ‘ae2’ as the interfaces.

This implementation requires that the ‘Interface Type’ be set to ‘Layer3’ for both the public and private interfaces. If you want to be able to use the ‘Untagged’ VLAN tag for public traffic in CloudStack, you will need to enable support for it in the public ‘ethernet1/1’ interface (details below).

Steps to configure the Public Interface:

  1. Log into Palo Alto Networks Firewall
  2. Navigate to ‘Network > Interfaces’
  3. Click on ‘ethernet1/1’ (for aggregated ethernet, it will probably be called ‘ae1’)
  4. Select ‘Layer3’ from the ‘Interface Type’ list
  5. Click ‘Advanced’
  6. Check the ‘Untagged Subinterface’ check-box
  7. Click ‘OK’

Steps to configure the Private Interface:

  1. Click on ‘ethernet1/2’ (for aggregated ethernet, it will probably be called ‘ae2’)
  2. Select ‘Layer3’ from the ‘Interface Type’ list
  3. Click ‘OK’

Configure a Virtual Router on the firewall

The Virtual Router on the Palo Alto Networks Firewall is not to be confused with the Virtual Routers that CloudStack provisions. For this implementation, the Virtual Router on the Palo Alto Networks Firewall will ONLY handle the upstream routing from the Firewall to the next hop.

Steps to configure the Virtual Router:

  1. Log into Palo Alto Networks Firewall
  2. Navigate to ‘Network > Virtual Routers’
  3. Select the ‘default’ Virtual Router or Add a new Virtual Router if there are none in the list
    • If you added a new Virtual Router, you will need to give it a ‘Name’
  4. Navigate to ‘Static Routes > IPv4’
  5. ‘Add’ a new static route
    • Name: next_hop (you can name it anything you want)
    • Destination: 0.0.0.0/0 (send all traffic to this route)
    • Interface: ethernet1/1 (or whatever you set your public interface as)
    • Next Hop: (specify the gateway IP for the next hop in your network)
    • Click ‘OK’
  6. Click ‘OK’

Configure the default Public Subinterface

The current implementation of the Palo Alto Networks firewall integration uses CIDRs in the form of ‘w.x.y.z/32’ for the public IP addresses that CloudStack provisions. Because no broadcast or gateway IPs are in this single IP range, there is no way for the firewall to route the traffic for these IPs. To route the traffic for these IPs, we create a single subinterface on the public interface with an IP and a CIDR which encapsulates the CloudStack public IP range. This IP will need to be inside the subnet defined by the CloudStack public range netmask, but outside the CloudStack public IP range. The CIDR should reflect the same subnet defined by the CloudStack public range netmask. The name of the subinterface is determined by the VLAN configured for the public range in CloudStack.

To clarify this concept, we will use the following example.

Example CloudStack Public Range Configuration:

  • Gateway: 172.30.0.1
  • Netmask: 255.255.255.0
  • IP Range: 172.30.0.100 - 172.30.0.199
  • VLAN: Untagged

Configure the Public Subinterface:

  1. Log into Palo Alto Networks Firewall
  2. Navigate to ‘Network > Interfaces’
  3. Select the ‘ethernet1/1’ line (not clicking on the name)
  4. Click ‘Add Subinterface’ at the bottom of the window
  5. Enter ‘Interface Name’: ‘ethernet1/1’ . ‘9999’
    • 9999 is used if the CloudStack public range VLAN is ‘Untagged’
    • If the CloudStack public range VLAN is tagged (eg: 333), then the name will reflect that tag
  6. The ‘Tag’ is the VLAN tag that the traffic is sent to the next hop with, so set it accordingly. If you are passing ‘Untagged’ traffic from CloudStack to your next hop, leave it blank. If you want to pass tagged traffic from CloudStack, specify the tag.
  7. Select ‘default’ from the ‘Config > Virtual Router’ drop-down (assuming that is what your virtual router is called)
  8. Click the ‘IPv4’ tab
  9. Select ‘Static’ from the ‘Type’ radio options
  10. Click ‘Add’ in the ‘IP’ section
  11. Enter ‘172.30.0.254/24’ in the new line
    • The IP can be any IP outside the CloudStack public IP range, but inside the CloudStack public range netmask (it can NOT be the gateway IP)
    • The subnet defined by the CIDR should match the CloudStack public range netmask
  12. Click ‘OK’

Commit configuration on the Palo Alto Networks Firewall

In order for all the changes we just made to take effect, we need to commit the changes.

  1. Click the ‘Commit’ link in the top right corner of the window
  2. Click ‘OK’ in the commit window overlay
  3. Click ‘Close’ to the resulting commit status window after the commit finishes

Setup the Palo Alto Networks Firewall in CloudStack

Add the Palo Alto Networks Firewall as a Service Provider

  1. Navigate to ‘Infrastructure > Zones > ZONE_NAME > Physical Network > NETWORK_NAME (guest) > Configure; Network Service Providers’
  2. Click on ‘Palo Alto’ in the list
  3. Click ‘View Devices’
  4. Click ‘Add Palo Alto Device’
  5. Enter your configuration in the overlay. This example will reflect the details previously used in this guide.
    • IP Address: (the IP of the Palo Alto Networks Firewall)
    • Username: (the admin username for the firewall)
    • Password: (the admin password for the firewall)
    • Type: Palo Alto Firewall
    • Public Interface: ethernet1/1 (use what you setup earlier as the public interface if it is different from my examples)
    • Private Interface: ethernet1/2 (use what you setup earlier as the private interface if it is different from my examples)
    • Number of Retries: 2 (the default is fine)
    • Timeout: 300 (the default is fine)
    • Public Network: untrust (this is the public zone on the firewall and did not need to be configured)
    • Private Network: trust (this is the private zone on the firewall and did not need to be configured)
    • Virtual Router: default (this is the name of the Virtual Router we setup on the firewall)
    • Palo Alto Threat Profile: (not required. name of the ‘Security Profile Groups’ to apply. more details in the ‘Additional Features’ section)
    • Palo Alto Log Profile: (not required. name of the ‘Log Forwarding’ profile to apply. more details in the ‘Additional Features’ section)
    • Capacity: (not required)
    • Dedicated: (not required)
  6. Click ‘OK’
  7. Click on ‘Palo Alto’ in the breadcrumbs to go back one screen.
  8. Click on ‘Enable Provider’ button to enable or disable feature.

Add a Network Service Offering to use the new Provider

There are 6 ‘Supported Services’ that need to be configured in the network service offering for this functionality. They are DHCP, DNS, Firewall, Source NAT, Static NAT and Port Forwarding. For the other settings, there are probably additional configurations which will work, but I will just document a common case.

  1. Navigate to ‘Service Offerings’
  2. In the drop-down at the top, select ‘Network Offerings’
  3. Click ‘Add Network Offering’
    • Name: (name it whatever you want)
    • Description: (again, can be whatever you want)
    • Guest Type: Isolated
    • Supported Services:
      • DHCP: Provided by ‘VirtualRouter’
      • DNS: Provided by ‘VirtualRouter’
      • Firewall: Provided by ‘PaloAlto’
      • Source NAT: Provided by ‘PaloAlto’
      • Static NAT: Provided by ‘PaloAlto’
      • Port Forwarding: Provided by ‘PaloAlto’
    • System Offering for Router: System Offering For Software Router
    • Supported Source NAT Type: Per account (this is the only supported option)
    • Default egress policy: (both ‘Allow’ and ‘Deny’ are supported)
  4. Click ‘OK’
  5. Click on the newly created service offering
  6. Click ‘Enable network offering’ button to enable or disable feature.

When adding networks in CloudStack, select this network offering to use the Palo Alto Networks firewall.

Additional Features

In addition to the standard functionality exposed by CloudStack, we have added a couple additional features to this implementation. We did not add any new screens to CloudStack, but we have added a couple fields to the ‘Add Palo Alto Service Provider’ screen which will add functionality globally for the device.

Palo Alto Networks Threat Profile

This feature allows you to specify a ‘Security Profile Group’ to be applied to all of the firewall rules which are created on the Palo Alto Networks firewall device.

To create a ‘Security Profile Group’ on the Palo Alto Networks firewall, do the following:

  1. Log into the Palo Alto Networks firewall
  2. Navigate to ‘Objects > Security Profile Groups’
  3. Click ‘Add’ at the bottom of the page to add a new group
  4. Give the group a Name and specify the profiles you would like to include in the group
  5. Click ‘OK’
  6. Click the ‘Commit’ link in the top right of the screen and follow the on screen instructions

Once you have created a profile, you can reference it by Name in the ‘Palo Alto Threat Profile’ field in the ‘Add the Palo Alto Networks Firewall as a Service Provider’ step.

Palo Alto Networks Log Forwarding Profile

This feature allows you to specify a ‘Log Forwarding’ profile to better manage where the firewall logs are sent to. This is helpful for keeping track of issues that can arise on the firewall.

To create a ‘Log Forwarding’ profile on the Palo Alto Networks Firewall, do the following:

  1. Log into the Palo Alto Networks firewall
  2. Navigate to ‘Objects > Log Forwarding’
  3. Click ‘Add’ at the bottom of the page to add a new profile
  4. Give the profile a Name and specify the details you want for the traffic and threat settings
  5. Click ‘OK’
  6. Click the ‘Commit’ link in the top right of the screen and follow the on screen instructions

Once you have created a profile, you can reference it by Name in the ‘Palo Alto Log Profile’ field in the ‘Add the Palo Alto Networks Firewall as a Service Provider’ step.

局限性

  • The implementation currently only supports a single public IP range in CloudStack
  • Usage tracking is not yet implemented