NSX Advanced Load Balancer 支持将 VIP 作为 GCP 内部负载均衡器 (ILB)。VIP 可通过 ILB 进行访问,其中 VIP 是从 GCP 子网中分配的,VIP 是 ILB 的前端 IP。ILB 后端具有在其中放置虚拟服务的所有服务引擎。虚拟服务的 GCP 内部负载均衡器在云中配置的服务引擎项目中创建。您可以通过 NSX Advanced Load Balancer CLI 或 REST API,将 VIP 配置为云的 ILB。本主题介绍了如何使用带内网络配置创建 GCP 云。

有关其他网络配置,请参阅 GCP 云网络配置

将 VIP 配置为内部负载均衡器

您需要将 GCP 云配置中的 vip_allocation_strategy 字段设置为 ILB。在此云中创建的所有 VIP 均从 GCP 子网进行分配,且虚拟服务将配置为 ILB,其中前端 IP 为 VIP。

创建 GCP 凭据

以下是创建 GCP 凭据的步骤:

  1. 导航到管理 > 用户凭据,然后单击创建按钮。

  2. 指定用户名和 GCP 服务帐户密钥文件数据。有关身份验证的更多详细信息,请参阅 GCP 完全访问部署



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



  1. 导航到基础架构 > 。单击创建 > Google Cloud Platform

  2. 导航到 GCP 选项卡下的凭据部分。

  3. 单击设置凭据

  4. 单击凭据字段中的垂直省略号,然后单击创建

  5. 新建用户凭据屏幕中,从凭据类型下拉菜单中选择 GCP

  6. 以 JSON 格式粘贴服务帐户密钥

  7. 单击保存以创建凭据。

创建 GCP 云

以下是创建 GCP 云的步骤:

  1. 登录到 NSX Advanced Load Balancer Shell。使用以下 CLI:

[admin:10-138-10-49]: > configure cloud gcp-cloud
  [admin:10-138-10-49]: cloud> vtype cloud_gcp
  [admin:10-138-10-49]: cloud> gcp_configuration
  [admin:10-138-10-49]: cloud:gcp_configuration> cloud_credentials_ref gcp-service-account
  [admin:10-138-10-49]: cloud:gcp_configuration> region_name us-central1
  [admin:10-138-10-49]: cloud:gcp_configuration> zones us-central1-a
  [admin:10-138-10-49]: cloud:gcp_configuration> zones us-central1-b
  [admin:10-138-10-49]: cloud:gcp_configuration> se_project_id service-engine-project
  [admin:10-138-10-49]: cloud:gcp_configuration> network_config config inband_management
  [admin:10-138-10-49]: cloud:gcp_configuration:network_config> inband
  [admin:10-138-10-49]: cloud:gcp_configuration:network_config:inband> vpc_subnet_name subnet-1
  [admin:10-138-10-49]: cloud:gcp_configuration:network_config:inband> vpc_project_id network-project
  [admin:10-138-10-49]: cloud:gcp_configuration:network_config:inband> vpc_network_name network-1
  [admin:10-138-10-49]: cloud:gcp_configuration:network_config:inband> save
  [admin:10-138-10-49]: cloud:gcp_configuration:network_config> save
  [admin:10-138-10-49]: cloud:gcp_configuration> vip_allocation_strategy mode ilb
  [admin:10-138-10-49]: cloud:gcp_configuration:vip_allocation_strategy> ilb
  [admin:10-138-10-49]: cloud:gcp_configuration:vip_allocation_strategy:ilb> save
  [admin:10-138-10-49]: cloud:gcp_configuration:vip_allocation_strategy> save
  [admin:10-138-10-49]: cloud:gcp_configuration> save
  [admin:10-138-10-49]: cloud> save
  
 +-----------------------------+--------------------------------------------+
  | Field                        | Value                                      |
  +------------------------------+--------------------------------------------+
  | uuid                         | cloud-90c34ff6-f3fd-4bbd-a6b6-32e725c521ea |
  | name                         | gcp-cloud                                  |
  | vtype                        | CLOUD_GCP                                  |
  | apic_mode                    | False                                      |
  | gcp_configuration            |                                            |
  |   cloud_credentials_ref      | gcp-service-account                        |
  |   region_name                | us-central1                                |
  |   zones[1]                   | us-central1-a                              |
  |   zones[2]                   | us-central1-b                              |
  |   se_project_id              | service-engine-project                     |
  |   network_config             |                                            |
  |     config                   | INBAND_MANAGEMENT                          |
  |     inband                   |                                            |
  |       vpc_subnet_name        | subnet-1                                   |
  |       vpc_project_id         | network-project                            |
  |       vpc_network_name       | network-1                                  |
  |   vip_allocation_strategy    |                                            |
  |     mode                     | ILB                                        |
  | dhcp_enabled                 | True                                       |
  | mtu                          | 1500 bytes                                 |
  | prefer_static_routes         | False                                      |
  | enable_vip_static_routes     | False                                      |
  | license_type                 | LIC_CORES                                  |
  | state_based_dns_registration | True                                       |
  | ip6_autocfg_enabled          | False                                      |
  | dns_resolution_on_se         | False                                      |
  | enable_vip_on_all_interfaces | False                                      |
  | tenant_ref                   | admin                                      |
  | license_tier                 | ENTERPRISE_18                              |
  | autoscale_polling_interval   | 60 seconds                                 |
  +------------------------------+--------------------------------------------+
  [admin:10-138-10-49]: > 

创建虚拟服务

以下是用于创建虚拟服务的 CLI 详细信息:

configure vsvip <name>
vip
subnet_uuid <subnet-name>
auto_allocate_ip
save
save
[admin:controller]: > configure virtualservice ilb-vs-1
[admin:controller]: virtualservice> cloud_ref gcp-cloud
[admin:controller]: virtualservice> pool_ref pool-1
[admin:controller]: virtualservice> services
New object being created
[admin:controller]: virtualservice:services> port 80
[admin:controller]: virtualservice:services> save
[admin:controller]: vsvip_ref <name>
+------------------------------------+-----------------------------------------------------+
| Field                              | Value                                               |
+------------------------------------+-----------------------------------------------------+
| uuid                               | virtualservice-63190c5f-3e58-4d84-9931-b860f17c20e6 |
| name                               | ilb-vs-1                                            |
| enabled                            | True                                                |
| services[1]                        |                                                     |
|   port                             | 80                                                  |
|   enable_ssl                       | False                                               |
|   port_range_end                   | 80                                                  |
| application_profile_ref            | System-HTTP                                         |
| network_profile_ref                | System-TCP-Proxy                                    |
| pool_ref                           | pool-1                                              |
| se_group_ref                       | Default-Group                                       |
| vrf_context_ref                    | global                                              |
| enable_autogw                      | True                                                |
| analytics_profile_ref              | System-Analytics-Profile                            |
| weight                             | 1                                                   |
| delay_fairness                     | False                                               |
| max_cps_per_client                 | 0                                                   |
| limit_doser                        | False                                               |
| type                               | VS_TYPE_NORMAL                                      |
| cloud_type                         | CLOUD_NONE                                          |
| use_bridge_ip_as_vip               | False                                               |
| flow_dist                          | LOAD_AWARE                                          |
| ign_pool_net_reach                 | False                                               |
| ssl_sess_cache_avg_size            | 1024                                                |
| remove_listening_port_on_vs_down   | False                                               |
| close_client_conn_on_config_update | False                                               |
| bulk_sync_kvcache                  | False                                               |
| tenant_ref                         | admin                                               |
| cloud_ref                          | gcp-cloud                                           |
| east_west_placement                | False                                               |
| scaleout_ecmp                      | True                                                |
| active_standby_se_tag              | ACTIVE_STANDBY_SE_1                                 |
| flow_label_type                    | NO_LABEL                                            |
| vip[1]                             |                                                     |
|   vip_id                           | 0                                                   |
|   ip_address                       | 10.138.0.134                                        |
|   enabled                          | True                                                |
|   network_ref                      | subnet-2                                            |
|   port_uuid                        | avi-ilbip-32e725c521ea-fa4d0dada487                 |
|   subnet_uuid                      | subnet-2                                            |
|   subnet                           | 10.138.0.128/25                                     |
|   auto_allocate_ip                 | True                                                |
|   auto_allocate_floating_ip        | False                                               |
|   avi_allocated_vip                | True                                                |
|   avi_allocated_fip                | False                                               |
|   ipam_network_subnet              |                                                     |
|     network_ref                    | subnet-2                                            |
|     subnet                         | 10.138.0.128/25                                     |
|     subnet_uuid                    | subnet-2                                            |
|   auto_allocate_ip_type            | V4_ONLY                                             |
| vsvip_ref                          | vsvip-P4fAJB                                        |
| use_vip_as_snat                    | False                                               |
| traffic_enabled                    | True                                                |
| allow_invalid_client_cert          | False                                               |
+------------------------------------+-----------------------------------------------------+

您可以在 GCP 中将 VIP 10.138.0.134 创建为内部负载均衡器,并将服务引擎作为后端。



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

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

限制

以下是 ILB 存在的限制:

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

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

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

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

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

  • 确保配置的 VIP 与 SE 不在同一子网中。

自带 IP (BYOIP)

通过 BYOIP,您可以在 GCP 中使用公用 IP 在后端服务器之间对流量进行负载均衡。

配置 BYOIP

以下是配置 BYOIP 的步骤:

  1. 为虚拟服务配置浮动 IP,该虚拟服务的 VIP 是 GCP 中的内部负载均衡器。这会在 GCP 中添加一个静态路由,其中目标范围为公用 IP,下一跃点为内部负载均衡器,前端 IP 为 VIP。

  2. 通过 GCP 云路由器通告 GCP 中使用的公用 IP。

配置云路由器

以下是配置云路由器的步骤:

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

  2. 您可以为一个 NSX Advanced Load Balancer 云添加多个云路由器。将使用 FIP 更新云路由器。

  3. 在云配置 vip_allocation_strategy 字段的内部负载均衡器配置中添加云路由器名称。

以下是配置云路由器的 CLI:

[admin:10-138-10-49]: > configure cloud gcp-cloud
Updating an existing object. Currently, the object is:
[admin:10-138-10-49]: cloud> gcp_configuration
[admin:10-138-10-49]: cloud:gcp_configuration> vip_allocation_strategy
[admin:10-138-10-49]: cloud:gcp_configuration:vip_allocation_strategy> ilb
[admin:10-138-10-49]: cloud:gcp_configuration:vip_allocation_strategy:ilb>
[admin:10-138-10-49]: cloud:gcp_configuration:vip_allocation_strategy:ilb> cloud_router_names cloud-router-1
[admin:10-138-10-49]: cloud:gcp_configuration:vip_allocation_strategy:ilb> save
[admin:10-138-10-49]: cloud:gcp_configuration:vip_allocation_strategy> save
[admin:10-138-10-49]: cloud:gcp_configuration> save
[admin:10-138-10-49]: cloud> save
+------------------------------+--------------------------------------------+
| Field                        | Value                                      |
+------------------------------+--------------------------------------------+
| uuid                         | cloud-90c34ff6-f3fd-4bbd-a6b6-32e725c521ea |
| name                         | gcp-cloud                                  |
| vtype                        | CLOUD_GCP                                  |
| apic_mode                    | False                                      |
| gcp_configuration            |                                            |
|   cloud_credentials_ref      | gcp-service-account                        |
|   region_name                | us-central1                                |
|   zones[1]                   | us-central1-a                              |
|   zones[2]                   | us-central1-b                              |
|   se_project_id              | development-237409                         |
|   network_config             |                                            |
|     config                   | INBAND_MANAGEMENT                          |
|     inband                   |                                            |
|       vpc_subnet_name        | subnet-11                                  |
|       vpc_project_id         | development-237409                         |
|       vpc_network_name       | dev-vnet-1                                 |
|   vip_allocation_strategy    |                                            |
|     mode                     | ILB                                        |
|     ilb                      |                                            |
|       cloud_router_names[1]  | cloud-router-1                             |
| dhcp_enabled                 | True                                       |
| mtu                          | 1500 bytes                                 |
| prefer_static_routes         | False                                      |
| enable_vip_static_routes     | False                                      |
| license_type                 | LIC_CORES                                  |
| state_based_dns_registration | True                                       |
| ip6_autocfg_enabled          | False                                      |
| dns_resolution_on_se         | False                                      |
| enable_vip_on_all_interfaces | False                                      |
| tenant_ref                   | admin                                      |
| license_tier                 | ENTERPRISE_18                              |
| autoscale_polling_interval   | 60 seconds                                 |
+------------------------------+--------------------------------------------+

为虚拟服务添加浮动 IP

以下是为虚拟服务添加浮动 IP 的 CLI。这会在 GCP 中创建一个静态路由,并使用公用 IP 更新云路由器。

[admin:10-138-10-49]: > configure virtualservice ilb-vs-1
Updating an existing object. Currently, the object is:
[admin:10-138-10-49]: virtualservice> vip index 1
[admin:10-138-10-49]: virtualservice:vip> floating_ip 35.78.2.109
[admin:10-138-10-49]: virtualservice:vip> save
[admin:10-138-10-49]: virtualservice> save
+------------------------------------+-----------------------------------------------------+
| Field                              | Value                                               |
+------------------------------------+-----------------------------------------------------+
| uuid                               | virtualservice-63190c5f-3e58-4d84-9931-b860f17c20e6 |
| name                               | ilb-vs-1                                            |
| enabled                            | True                                                |
| services[1]                        |                                                     |
|   port                             | 80                                                  |
|   enable_ssl                       | False                                               |
|   port_range_end                   | 80                                                  |
| application_profile_ref            | System-HTTP                                         |
| network_profile_ref                | System-TCP-Proxy                                    |
| pool_ref                           | pool-1                                              |
| se_group_ref                       | Default-Group                                       |
| vrf_context_ref                    | global                                              |
| enable_autogw                      | True                                                |
| analytics_profile_ref              | System-Analytics-Profile                            |
| weight                             | 1                                                   |
| delay_fairness                     | False                                               |
| max_cps_per_client                 | 0                                                   |
| limit_doser                        | False                                               |
| type                               | VS_TYPE_NORMAL                                      |
| cloud_type                         | CLOUD_NONE                                          |
| use_bridge_ip_as_vip               | False                                               |
| flow_dist                          | LOAD_AWARE                                          |
| ign_pool_net_reach                 | False                                               |
| ssl_sess_cache_avg_size            | 1024                                                |
| remove_listening_port_on_vs_down   | False                                               |
| close_client_conn_on_config_update | False                                               |
| bulk_sync_kvcache                  | False                                               |
| tenant_ref                         | admin                                               |
| cloud_ref                          | gcp-cloud                                           |
| east_west_placement                | False                                               |
| scaleout_ecmp                      | True                                                |
| active_standby_se_tag              | ACTIVE_STANDBY_SE_1                                 |
| flow_label_type                    | NO_LABEL                                            |
| vip[1]                             |                                                     |
|   vip_id                           | 0                                                   |
|   ip_address                       | 10.138.0.134                                        |
|   enabled                          | True                                                |
|   network_ref                      | subnet-2                                            |
|   port_uuid                        | avi-ilbip-32e725c521ea-fa4d0dada487                 |
|   subnet_uuid                      | subnet-2                                            |
|   subnet                           | 10.138.0.128/25                                     |
|   auto_allocate_ip                 | True                                                |
|   floating_ip                      | 35.78.2.109                                         |
|   auto_allocate_floating_ip        | False                                               |
|   avi_allocated_vip                | True                                                |
|   avi_allocated_fip                | False                                               |
|   ipam_network_subnet              |                                                     |
|     network_ref                    | subnet-2                                            |
|     subnet                         | 10.138.0.128/25                                     |
|     subnet_uuid                    | subnet-2                                            |
|   auto_allocate_ip_type            | V4_ONLY                                             |
| vsvip_ref                          | vsvip-P4fAJB                                        |
| use_vip_as_snat                    | False                                               |
| traffic_enabled                    | True                                                |
| allow_invalid_client_cert          | False                                               |
+------------------------------------+-----------------------------------------------------+

限制

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

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

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

对云路由器进行故障排除

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

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

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

注:

云路由器可能还具有其他 IP,这些 IP 不是由 NSX Advanced Load Balancer 创建的。这些 IP 将保持不变,云路由器中由 NSX ALB 配置的所有 IP 都将带有相应描述以指示它们是由 NSX Advanced Load Balancer 添加的。

如果未通告 FIP,您可以在云路由器详细信息中查看自定义 IP 范围,如下所示:

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

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

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



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

  1. 导航到运维 > 事件

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



更新 SE 项目 ID

云中的 SE Project ID 字段用于指定在其中创建 SE 的项目。设置此字段后,只有在满足以下条件时,才能修改此字段:

  • VIPAllocationStrategy - ILB

    • 云中不存在虚拟服务和 SE。

    • 没有为池配置自动缩放组。

  • VIPAllocationStrategy - 路由

    • 创建所有虚拟服务时,VIPAllocationMode 均设置为 Routes

    • 所有虚拟服务均未分配公用 IP。

注:

下面列出了更改 SE 项目 ID 时,将影响的各个方面:

  1. 将始终在新 SE 项目中创建新的 SE。

  2. 在云的 network_config 选项中指定的网络也必须与新 SE 项目共享。

  3. 旧项目中的现有 SE 将由本产品管理。

  4. NSX Advanced Load Balancer 会清理旧 SE 项目中的映像。

  5. NSX Advanced Load Balancer 会清理旧 SE 项目中的主题和订阅。