警告

NOTICE: THIS DOCUMENTATION SITE HAS BEEN SUPERSEDED.

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

配置一个虚拟私有云(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”.