本主题介绍了如何通过对自带 IP 地址 (Bring Your Own IP Address, BYOIP) 的支持,在 Google Cloud Platform (GCP) 中进行置备和配置。

注:

NSX Advanced Load Balancer 不支持 Linux 服务器云和 GCP 上的 GCP IPAM。有关内部负载均衡器和 BYOIP 的更多详细信息,请参阅“GCP VIP 作为内部负载均衡器以及 BYOIP”。

GCP 中对 BYOIP 的公用 IP 支持

Google 在 GCP 中引入了对内部负载均衡的公用 IP 支持,通过该支持,可以将公用 IP 托管到 Google Cloud。在 Google Cloud 中,NSX Advanced Load Balancer 支持此功能,您可以在其中使用 GCP VPC 子网中的 VIP 创建负载均衡器。您还需要在 GCP 中创建一个静态路由,并将公用 IP 作为目标,将 VIP 作为下一跃点。

GCP 中的 BYOIP

GCP 针对 TCP 和 UDP 流量提供内部负载均衡。这样,您便可以在仅内部虚拟机实例可访问的专用负载均衡 IP 地址后面运行和扩展服务。

使用负载均衡器,您可以将专用负载均衡 IP 地址配置为专用后端实例的前端。这样一来,负载均衡服务将不需要公用 IP 地址。由于所有经过负载均衡的流量都将限制在 Google 网络内,内部客户端请求将保留在 VPC 网络和区域内部,从而减少延迟。

功能

  • 适用于自动模式 VPC 网络、自定义模式 VPC 网络和旧版网络。

  • 允许在整个区域自动缩放,可以在区域受管实例组内实施,从而使服务不受可用区故障的影响。

  • 支持传统的 3 层 Web 服务,其中 Web 层使用外部负载均衡器,例如 HTTP、HTTPS 或 TCP/UDP 网络负载均衡。还支持运行应用程序层的实例,或部署在内部负载均衡器后面的后端数据库。

负载均衡和运行状况检查支持

  • 支持将 TCP 和 UDP 流量负载均衡到内部 IP 地址。您还可以从 VPC 网络中配置内部负载均衡 IP。

  • 支持在区域中的实例之间进行负载均衡。这允许在同一区域内的多个可用区中实例化实例。

  • 提供完全受管的负载均衡服务,该服务可根据需要进行缩放以处理客户端流量。

  • GCP 运行状况检查系统监控后端实例。您可以为这些实例配置 TCP、SSL (TLS)、HTTP 或 HTTPS 运行状况检查。

注意事项

  • 运行状况检查探测的地址范围为 130.211.0.0/22 到 35.191.0.0/16。请添加防火墙规则以允许这些地址。

  • 如果后端服务中的所有实例均不正常,则 ILB 会在所有实例之间对流量进行负载均衡。

VIP - 内部负载均衡器 (ILB)

VIP 可通过内部负载均衡器 (ILB) 进行访问,其中 VIP 是从 GCP 子网中分配的,VIP 是 ILB 的前端 IP。ILB 后端是放置了虚拟服务的 SE。

在共享 VPC 用例中,ILB 跨项目工作。仅支持自动分配 VIP。

您可以在 SE 项目中为 ILB 创建所有 GCP 资源。但是,转发规则端口在创建后便无法更新。

浮动或公用 IP - 将 ILB 作为下一跃点的 GCP 路由

浮动 IP 是一个 GCP 路由,其目标 IP 为公用 IP(BYOIP 或 GCP 分配的 IP),下一跃点为 ILB。

您可以配置 GCP 云路由器,以通过 BGP 通告 FIP 路由。

限制

  • ILB 支持 UDP 和 TCP。但是对于 UDP,运行状况检查类型不是 UDP(由于 Google 限制),因此故障切换时间较长。

  • 由于无法更新转发端口,其他虚拟服务不能共享虚拟 IP。GCP 不允许具有相同 IP 但端口不同的新转发规则。

  • 一个虚拟服务最多只能有 5 个端口,因为转发规则只能有 5 个端口。

  • 运行状况检查在与 VIP 相同的端口上进行,而不是在实例 IP 上进行。

  • 如果服务引擎位于 N 个后端服务中,它会在每次运行状况检查时间间隔内收到 N 个运行状况检查探测。

  • 确保配置的 VIP 与服务引擎不在同一子网中。

部署 BYOIP



使用 BYOIP,您可以将专用 RFC 1918 地址配置为负载均衡 IP 地址,并配置后端实例组以处理从客户端实例发送到负载均衡 IP 地址的请求。

后端实例组可以在可用区或区域级别配置,这使您能够根据可用性需求配置实例组。

与发送到负载均衡 IP 地址和后端相比,从客户端实例发送到 ILB 的流量必须属于同一 VPC 网络和区域,但可以位于不同的子网中。

下图显示了一个示例部署:



置备多项目

Virtual Private Cloud (VPC) 是一个全局专用隔离虚拟网络分区,可为 GCP 资源提供受管网络功能。GCP 中的 BYOIP 支持共享 VPC(也称为 XPN),它允许您将多个项目中的资源连接到一个通用 VPC 网络。

在使用共享 VPC 时,您需要将一个项目指定为主机项目,并将一个或多个项目指定为服务项目。

主机项目:

主机项目包含一个或多个共享 VPC 网络。可以将一个或多个服务项目附加到主机项目,以使用共享网络资源。

服务项目:

服务项目是通过附加到主机项目而加入共享 VPC 的任何项目。您可以在 NSX Advanced Load Balancer 中配置新的 IPAM 字段,也支持跨项目部署。

要允许使用特定项目,请联系您的 Google 支持代表。

GCP 设置

NSX Advanced Load Balancer Controller、服务引擎和网络可能都在不同的项目中。

默认情况下,GCP 会使用以下格式为每个虚拟机添加一个服务帐户:[PROJECT_NUMBER][email protected]

要与 NSX Advanced Load Balancer 集成,请执行以下操作:

  1. 为控制器虚拟机设置具有编辑者角色的服务帐户,以调用 Google Cloud API。

  2. 将此服务帐户作为成员添加到服务引擎和 XPN 项目中。

  3. 将此帐户映射到创建的虚拟机,以便分配所需的权限。

下面是在控制器项目中创建新服务帐户

[email protected] 的示例:



NSX Advanced Load Balancer 配置

按照以下步骤操作,以在 GCP 中配置 NSX Advanced Load Balancer BYOIP 支持:

  1. 设置控制器。

  2. 虚拟机配置 GCP IPAM。

  3. 附加 GCP IPAM。

  4. 设置服务引擎。

  5. 配置虚拟服务。

设置 NSX Advanced Load Balancer Controller 虚拟机

按照在 Linux 服务器云中安装 NSX Advanced Load Balancer Controller 中的说明,在之前创建的实例上安装或运行控制器。此外,还要确保服务引擎处于活动状态(显示为绿色)。

使用 CLI 配置 GCP IPAM

您可以使用如下所示命令来配置 GCP IPAM。

[admin:10-1-1-1]: > configure ipamdnsproviderprofile gcp-ipam 
      [admin:10-1-1-1]: ipamdnsproviderprofile> type ipamdns_type_gcp
      [admin:10-1-1-1]: ipamdnsproviderprofile> gcp_profile                                                 
      [admin:10-1-1-1]: ipamdnsproviderprofile:gcp_profile> **use_gcp_network**
      [admin:10-1-1-1]: ipamdnsproviderprofile:gcp_profile> vpc_network_name gcp_vcp
      [admin:10-1-1-1]: ipamdnsproviderprofile:gcp_profile> region_name us-central1
      [admin:10-1-1-1]: ipamdnsproviderprofile:gcp_profile> network_host_project_id net1
      [admin:10-1-1-1]: ipamdnsproviderprofile:gcp_profile> save
      [admin:10-1-1-1]: ipamdnsproviderprofile> save

    +-------------------------+-------------------------------------------------------------+
    | Field                   | Value                                                       |
    +-------------------------+-------------------------------------------------------------+
    | uuid                    | ipamdnsproviderprofile-e39d51e5-2170-415d-b4ac-7a82068b2bc5 |
    | name                    | gcp-ipam                                                    |
    | type                    | IPAMDNS_TYPE_GCP                                            |
    | gcp_profile             |                                                             | 
    | match_se_group_subnet   | False                                                       |
    | **use_gcp_network**     | True                                                        |
    | region_name             | us-central1                                                 |
    | vpc_network_name        | gcp_vcp                                                     |
    | allocate_ip_in_vrf      | False                                                       |
    | network_host_project_id | net1                                                        |
    | tenant_ref              | admin                                                       |
    +-------------------------+-------------------------------------------------------------+
注:

use_gcp_network 字段在 UI 中不可用。只能通过 CLI 启用此选项。

通过 UI 配置 GCP IPAM

  1. 导航到模板 > 配置文件 > IPAM/DNS 配置文件,然后单击创建

  2. 从下拉菜单中选择“Google Cloud Platform IPAM”作为类型

    1. 对于配置文件配置,单击手动配置,以输入以下详细信息:

      1. 网络主机项目 ID

      2. 服务引擎项目 ID

      3. 区域名称

      4. VPC 网络名称

      或者,您也可以选择从控制器获取选项,以获取配置文件配置参数。

  3. 单击添加可用的网络,以指定网络详细信息。



NSX Advanced Load Balancer 22.1.3 开始,可以使用以下 UI:



  1. 新建 IPAM/DNS 配置文件屏幕中,指定配置文件名称。

  2. 类型下拉菜单中选择 Avi Vantage IPAM,然后为“云”字段选择之前创建的云。

  3. 添加可用的网络,然后单击保存

附加 GCP IPAM

要将 GCP IPAM 附加到 Linux 服务器云,请编辑 Default-Cloud。选择 GCP IPAM 提供程序。



NSX Advanced Load Balancer 22.1.3 开始,可以使用以下 UI:

您可以在编辑云时添加 IPAM 配置文件,如下所示:

  1. 编辑现有云。

  2. 导航到 IPAM/DNS 选项卡。在 IPAM 配置文件字段中,从下拉菜单中选择已创建的 IPAM 配置文件。



设置服务引擎

  1. 创建服务引擎。

  2. 将创建的服务引擎添加到 Linux 服务器云。

  3. 使用服务引擎实例的 IP 地址配置 Linux 服务器云。

配置虚拟服务

按照《NSX Advanced Load Balancer 部署指南》的创建虚拟服务中为 Google Cloud Platform (GCP) 提供的说明来创建虚拟服务。

确保配置的 VIP 与服务引擎不在同一子网中。

云路由器集成

通过 Google Cloud 路由器,可使用边界网关协议 (Border Gateway Protocol, BGP) 在 Virtual Private Cloud (VPC) 和内部部署网络之间动态交换路由。

控制器将更新 GCP 云路由器。

必备条件

要更新云路由器,需要以下权限:

有关更多信息,请参阅创建自定义角色

限制

  • 多个集群无法共享同一个云路由器,因为无法在它们之间协调更新。

  • 多个 NSX Advanced Load Balancer 云无法共享同一个云路由器。

  • 如果从云配置中移除某个云路由器,则必须在 GCP 中从该云路由器手动删除云路由器上的 NSX Advanced Load Balancer 浮动 IP (Floating IP, FIP),因为控制器将不再管理该路由器。

配置云路由器

  1. 在网络项目和创建了服务引擎虚拟机的区域中创建云路由器。如需了解更多信息,请参阅创建云路由器

  2. 在云的 custom_tags 字段中添加云路由器名称,如以下配置中所示:

[admin:10-152-134-17]: > configure cloud Default-Cloud
 [admin:10-152-134-17]: cloud> custom_tags
 New object being created
 [admin:10-152-134-17]: cloud:custom_tags> tag_key cloud_router_ids
 [admin:10-152-134-17]: cloud:custom_tags> tag_val "router-1, router-2"
 [admin:10-152-134-17]: cloud:custom_tags> save
 [admin:10-152-134-17]: cloud> save
 +--------------------------------+--------------------------------------------+
 | Field                          | Value                                      |
 +--------------------------------+--------------------------------------------+
 | uuid                           | cloud-1a388500-1d6c-45e0-a557-f7b79af6f362 |
 | name                           | Default-Cloud                         	   |
 | vtype                          | CLOUD_LINUXSERVER                          |
 | apic_mode                      | False                                  	   |
 | linuxserver_configuration      |                                            |
 |   se_sys_disk_size_GB          | 10                                         |
 |   se_log_disk_size_GB          | 5                                          |
 |   se_inband_mgmt               | False                                      |
 |   ssh_user_ref                 | user1                                      |
 | dhcp_enabled                   | False                                  	   |
 | mtu                            | 1500 bytes                                 |
 | prefer_static_routes           | False                                      |
 | enable_vip_static_routes       | False                                      |
 | license_type                   | LIC_CORES                              	   |
 | ipam_provider_ref              | gcp-ipam                                   |
 | custom_tags[1]                 |                                            |
 |   tag_key                      | cloud_router_ids                           |
 |   tag_val                      | router-1, router-2                         |
 | state_based_dns_registration   | True                                       |
 | ip6_autocfg_enabled            | False                                  	   |
 | tenant_ref                     | admin                                      |
 | license_tier                   | ENTERPRISE_18                              |
 | autoscale_polling_interval     | 60 seconds                                 |
 +--------------------------------+--------------------------------------------+
注:
  • 可以为一个 NSX Advanced Load Balancer 云添加多个云路由器,并且将使用 FIP 更新所有路由器。

  • 为云添加自定义标记,其中 tag_keycloud_router_idstag_val 是以逗号分隔的云路由器名称列表。

对于每次云路由器更新,都将生成一个相应的事件,如下所示:

  • GCP_CLOUD_ROUTER_UPDATE_SUCCESS:每次成功更新云路由器时生成的内部事件。

  • GCP_CLOUD_ROUTER_UPDATE_FAIL:云路由器更新失败时生成的外部事件。

注:

云路由器可能还具有其他 IP,这些 IP 不是由 NSX Advanced Load Balancer 创建的。这些 IP 将保持不变,云路由器中由控制器配置的所有 IP 都将带有“由 AVI 添加”这一描述。

故障排除

如果未通告 FIP,请查看云路由器详细信息中的自定义 IP 范围

要查看云路由器详细信息,请执行以下操作:

  1. 导航到混合连接 > 云路由器

  2. 单击所需的云路由器。

  3. 单击自定义 IP 范围选项卡,以查看 IP 范围描述,如下所示:



如果 FIP 未在“自定义 IP 范围”下列出,请在 NSX Advanced Load Balancer 中查看控制器的事件页面。

  1. 导航到运维 > 事件

  2. 单击 GCP_CLOUD_ROUTER_UPDATE_FAIL 事件以查看错误消息,如下所示: