本节介绍了 GCP 中的 NSX Advanced Load Balancer 支持的网络拓扑。

以下是所使用的网络类型:

前端数据网络

此网络将 VIP 连接到 SE。所有 VIP 流量都通过此网络到达 SE。

后端数据网络

此网络将 SE 连接到应用程序服务器。SE 和应用程序服务器之间的所有流量都流经此网络。

管理网络

此网络将 SE 连接到控制器,以执行所有管理操作。

注:
  • 在 GCP 中,您可以跨项目共享 VPC 网络。有关共享 VPC 的更多详细信息,请参阅共享 VPC 指南。

  • GCP 不允许将同一 VPC 中的两个网卡(即使 VPC 中有多个子网)与单个虚拟机相关联(创建具有多个网络接口的实例)。因此,数据网卡和管理网卡必须位于不同的 VPC 中。

  • GCP 负载均衡器仅将流量转发到虚拟机的第一个接口。

网络配置模式

网络配置模式类型如下:

  • 带内管理

  • 使用专用管理的单臂模式

  • 使用专用管理的双臂模式

带内管理

带内管理具有以下特点:

  • SE 仅连接到一个 VPC 子网。

  • 数据流量(前端和后端)与管理流量之间未进行网络隔离,因为两者都通过同一 VPC 子网传输。

  • SE 子网 VPC 可以是共享 VPC,从而灵活地将控制器、SE 和服务器置于不同的项目中,而无需进行 VPC 对等连接。

  • 对于带内管理,SE 虚拟机至少需要一个 vCPU。

以下是带内管理的示意图:



通过 UI 配置 GCP 云

NSX Advanced Load Balancer 版本 22.1.3 开始,您可以通过 UI 配置共享 VPC。以下是配置 GCP 云的步骤:

  1. 导航到基础架构 > 。从创建下拉菜单中选择 Google Cloud Platform



  2. 指定常规详细信息,然后单击设置凭据以设置 GCP 凭据。指定服务引擎项目 ID。您可以选中计算帐户作为默认服务帐户复选框,也可以从下拉菜单中选择凭据。

  3. 指定以下管理详细信息:

    1. 管理 VPC 项目 ID

    2. 管理 VPC 网络名称

    3. 管理 VPC 子网名称

  4. 指定目标标记。这是可选步骤。

  5. 指定存储详细信息,如云存储 ID云存储桶名称

  6. 指定加密密钥详细信息,如下所示。不过,这是可选步骤。

    1. 服务引擎映像加密密钥 ID

    2. 服务引擎磁盘加密密钥 ID

    3. GCS 存储桶加密密钥 ID

    4. GCS 对象加密密钥 ID

  7. 您可以通过路由或通过 ILB 设置 VIP 分配。

  8. 指定 IPAM/DNS 配置文件详细信息。您可以通过选中启用基于状态的 DNS 注册复选框,来启用基于状态的 DNS 注册。

  9. 标记部分中添加键和值。

  10. 指定所需的详细信息后,单击保存以保存配置的云。

通过 CLI 配置 GCP 云

gcp_configurationnetwork_config 字段设置为 inband_management。需要在带内对象中设置以下字段:

  • vpc_project_id:需要连接到 SE 虚拟机的网络的 VPC 项目 ID。默认情况下,将使用 SE 项目 ID。

  • vpc_network_name:需要连接到 SE 虚拟机的网络的 VPC 名称。

  • vpc_subnet_name:从中分配 SE 接口 IP 的 VPC 子网名称。

示例

[admin:controller]: > configure cloud gcp-cloud-inband
[admin:controller]: cloud> vtype cloud_gcp

[admin:controller]: cloud> gcp_configuration
[admin:controller]: cloud:gcp_configuration> se_project_id service-engine-project
[admin:controller]: cloud:gcp_configuration> region_name us-central1
[admin:controller]: cloud:gcp_configuration> zones us-central1-a
[admin:controller]: cloud:gcp_configuration> zones us-central1-b

[admin:controller]: cloud:gcp_configuration> network_config config inband_management
[admin:controller]: cloud:gcp_configuration:network_config> inband
[admin:controller]: cloud:gcp_configuration:network_config:inband> vpc_network_name network-shared
[admin:controller]: cloud:gcp_configuration:network_config:inband> vpc_project_id network-project
[admin:controller]: cloud:gcp_configuration:network_config:inband> vpc_subnet_name subnet-1
[admin:controller]: cloud:gcp_configuration:network_config:inband> save
[admin:controller]: cloud:gcp_configuration:network_config> save
[admin:controller]: cloud:gcp_configuration> save
[admin:controller]: cloud> save
+------------------------------+----------------------------------------+
| Field                        | Value                                  |
+------------------------------+----------------------------------------+
| uuid                         | cloud-ce377a7b-965f-4714-be1a-7b6c0e64c22f|
| name                         | gcp-cloud-inband                       |
| vtype                        | CLOUD_GCP                              |
| apic_mode                    | False                                  |
| gcp_configuration            |                                        |
|   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-shared                         |
|   vip_allocation_strategy    |                                        |
|     mode                     | ROUTES                                 |
| 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-31]: >

通过 UI 设置“带内”选项

如果在网络部分中选择带内选项,则需要指定 VPC 项目和网络名称。



使用专用管理的单臂模式

使用专用管理的单臂模式具有以下特点:

  • SE 连接到两个 VPC 子网。第一个 VPC 子网用于管理流量,第二个用于数据流量。

  • 虽然在数据流量与管理流量之间提供了网络隔离,但前端数据和后端数据通过同一网络传输。

  • SE 的第一个接口连接到数据网络。

  • 在先前的 NSX Advanced Load Balancer 版本中,共享 VPC 仅在第一个网卡上受支持。因此,只有数据网卡可以位于共享 VPC 中。

  • 现在,共享 VPC 在多个网卡上受支持。因此,数据网卡和管理网卡都可以来自共享 VPC。

  • 如果 SE 和控制器位于不同的项目中,则管理 VPC 需要与另一个项目 VPC 进行对等连接。

  • SE 虚拟机至少需要一个 vCPU。



以下是使用专用管理的单臂模式的示意图:



通过 CLI 配置 GCP 云

gcp_configurationnetwork_config 字段设置为 one_arm_mode。需要在 one_arm 对象中设置以下字段:

  • data_vpc_project_id:需要连接到服务引擎虚拟机的数据网络的 VPC 项目 ID。默认情况下,将使用服务引擎项目 ID。

  • data_vpc_network_name:需要连接到服务引擎虚拟机的数据网络的 VPC 网络名称。

  • data_vpc_subnet_name:将从中分配服务引擎数据接口 IP 的 VPC 子网名称。

  • management_vpc_network_name:需要连接到服务引擎虚拟机的管理网络的 VPC 网络名称。

  • management_vpc_subnet_name:将从中分配服务引擎管理接口 IP 的 VPC 子网名称。

  • management_vpc_project_id:服务引擎管理网络的项目 ID。默认情况下,将使用服务引擎项目 ID。

示例

[admin:controller]: > configure cloud gcp-cloud-onearm
[admin:controller]: cloud> vtype cloud_gcp
[admin:controller]: cloud> gcp_configuration
[admin:controller]: cloud:gcp_configuration> se_project_id service-engine-project
[admin:controller]: cloud:gcp_configuration> region_name us-central1
[admin:controller]: cloud:gcp_configuration> zones us-central1-a
[admin:controller]: cloud:gcp_configuration> zones us-central1-b

[admin:controller]: cloud:gcp_configuration> network_config config one_arm_mode
[admin:controller]: cloud:gcp_configuration:network_config> one_arm
[admin:controller]: cloud:gcp_configuration:network_config:one_arm> data_vpc_project_id data-network-project-id
[admin:controller]: cloud:gcp_configuration:network_config:one_arm> data_vpc_network_name data-network
[admin:controller]: cloud:gcp_configuration:network_config:one_arm> data_vpc_subnet_name data-subnet
[admin:controller]: cloud:gcp_configuration:network_config:one_arm> management_vpc_network_name management-network
[admin:controller]: cloud:gcp_configuration:network_config:one_arm> management_vpc_subnet_name management-subnet
[admin:controller]: cloud:gcp_configuration:network_config:one_arm> management_vpc_project_id management-vpc-project-id
[admin:controller]: cloud:gcp_configuration:network_config:one_arm> save
[admin:controller]: cloud:gcp_configuration:network_config> save
[admin:controller]: cloud:gcp_configuration> save
[admin:controller]: cloud> save
+-----------------------------------+-----------------------------------+
| Field                             | Value                             |
+-----------------------------------+-----------------------------------+
| uuid                              | cloud-d9e4f50b-eab8-40a1-be1f-b6a90e597ac8 |
| name                              | gcp-cloud-onearm                  |
| vtype                             | CLOUD_GCP                         |
| apic_mode                         | False                             |
| gcp_configuration                 |                                   |
|   region_name                     | us-central1                       |
|   zones[1]                        | us-central1-a                     |
|   zones[2]                        | us-central1-b                     |
|   se_project_id                   | service-engine-project            |
|   network_config                  |                                   |
|     config                        | ONE_ARM_MODE                      |
|     one_arm                       |                                   |
|       data_vpc_subnet_name        | data-subnet                       |
|       data_vpc_project_id         | data-network-project-id           |
|       management_vpc_subnet_name  | management-subnet                 |
|       data_vpc_network_name       | data-network                      |
|       management_vpc_network_name | management-network                |
|       management_vpc_project_id   | management-vpc-project-id         |
|   vip_allocation_strategy         |                                   |
|     mode                          | ROUTES                            |
| 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:admin:controller]: >   

使用专用管理的双臂模式

使用专用管理的双臂模式具有以下特点:

  • SE 连接到三个 VPC 子网,分别用于前端数据流量、管理流量和后端数据流量。

  • 在管理网络、前端数据网络和后端数据网络之间进行隔离。

  • SE 的第一个接口连接到前端数据网络。

  • 共享 VPC 在多个网卡上受支持。因此,所有三个网卡都可以来自共享 VPC。

  • 在早期版本的 NSX Advanced Load Balancer 中,共享 VPC 仅在第一个网卡上受支持。因此,只有前端数据网卡可以位于共享 VPC 中。

  • 如果 SE 和控制器位于不同的项目中,则管理 VPC 需要与另一个项目 VPC 进行对等连接。

  • SE 的第三个接口连接到后端数据网络。

  • SE 虚拟机至少需要四个 vCPU。您可以在 ServiceEngineGroup 属性中添加具有四个或更多 vCPU 的类型。

以下是使用专用管理的双臂模式的示意图:



通过 CLI 配置 GCP 云

gcp_configurationnetwork_config 字段设置为 two_arm_mode。需要在 two_arm 对象中设置以下字段。

  • frontend_data_vpc_project_id:需要连接到服务引擎虚拟机的前端数据网络的 VPC 项目 ID。默认情况下,将使用 SE 项目 ID。

  • frontend_data_vpc_network_name:需要连接到 SE 虚拟机的前端数据网络的 VPC 网络名称。

  • frontend_data_vpc_subnet_name:从中分配 SE 前端数据接口 IP 的 VPC 子网名称。

  • management_vpc_network_name:需要连接到 SE 虚拟机的管理网络的 VPC 网络名称。

  • management_vpc_subnet_name:从中分配 SE 管理接口 IP 的 VPC 子网名称。

  • backend_data_vpc_network_name:需要连接到 SE 虚拟机的后端数据网络的 VPC 网络名称。

  • backend_data_vpc_subnet_name:从中分配 SE 后端数据接口 IP 的 VPC 子网名称。

  • management_vpc_project_id:SE 管理网络的项目 ID。默认情况下,将使用 SE 项目 ID。

  • backend_data_vpc_project_id:SE 后端数据网络的项目 ID。默认情况下,将使用 SE 项目 ID。

示例

[admin:controller]: > configure cloud gcp-cloud-twoarm

[admin:controller]: cloud> vtype cloud_gcp
[admin:controller]: cloud> gcp_configuration
[admin:controller]: cloud:gcp_configuration> se_project_id service-engine-project
[admin:controller]: cloud:gcp_configuration> region_name us-central1
[admin:controller]: cloud:gcp_configuration> zones us-central1-a
[admin:controller]: cloud:gcp_configuration> zones us-central1-b
[admin:controller]: cloud:gcp_configuration> network_config config two_arm_mode
[admin:controller]: cloud:gcp_configuration:network_config> two_arm
[admin:controller]: cloud:gcp_configuration:network_config:two_arm> frontend_data_vpc_project_id frontend-data-network-project
[admin:controller]: cloud:gcp_configuration:network_config:two_arm> frontend_data_vpc_network_name frontend-data-network-name
[admin:controller]: cloud:gcp_configuration:network_config:two_arm> frontend_data_vpc_subnet_name frontend-data-subnet-name
[admin:controller]: cloud:gcp_configuration:network_config:two_arm> management_vpc_network_name management-network-name
[admin:controller]: cloud:gcp_configuration:network_config:two_arm> management_vpc_subnet_name management-subnet-name
[admin:controller]: cloud:gcp_configuration:network_config:two_arm> management_vpc_project_id management-vpc-project-id
[admin:controller]: cloud:gcp_configuration:network_config:two_arm> backend_data_pc_project_id backend-data-pc-project-id
[admin:controller]: cloud:gcp_configuration:network_config:two_arm> backend_data_vpc_network_name backend-data-network-name
[admin:controller]: cloud:gcp_configuration:network_config:two_arm> backend_data_vpc_subnet_name backend-data-subnet-name
[admin:controller]: cloud:gcp_configuration:network_config:two_arm> save
[admin:controller]: cloud:gcp_configuration:network_config> save
[admin:controller]: cloud:gcp_configuration> save
[admin:controller]: cloud> save
+--------------------------------------+--------------------------------+
| Field                                | Value                          |
+--------------------------------------+--------------------------------+
| uuid                                 | cloud-500d70f5-0457-467c-b796-7652c701e2c7 |
| name                                 | gcp-cloud-twoarm               |
| vtype                                | CLOUD_GCP                      |
| apic_mode                            | False                          |
| gcp_configuration                    |                                |
|   region_name                        | us-central1                    |
|   zones[1]                           | us-central1-a                  |
|   zones[2]                           | us-central1-b                  |
|   se_project_id                      | service-engine-project         |
|   network_config                     |                                |
|     config                           | TWO_ARM_MODE                   |
|     two_arm                          |                                |
|       frontend_data_vpc_subnet_name  | frontend-data-subnet-name      |
|       frontend_data_vpc_project_id   | frontend-data-network-project  |
|       management_vpc_subnet_name     | management-subnet-name         |
|       backend_data_vpc_subnet_name   | backend-data-subnet-name       |
|       frontend_data_vpc_network_name | frontend-data-network-name     |
|       management_vpc_network_name    | management-network-name        |
|       management_vpc_project_id      | management-vpc-project-id      |
|       backend_data_pc_project_id     | backend-data-pc-project-id     |
|       backend_data_vpc_network_name  | backend-data-network-name      |
|   vip_allocation_strategy            |                                |
|     mode                             | ROUTES                         |
| 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:controller]: >
Configuring ServiceEngineGroup via CLI
You can set GCP n2-standard-4 machine type in the Service Engine group as follows:

[admin:controller]: > configure serviceenginegroup Default-Group
[admin:controller]: serviceenginegroup> instance_flavor n2-standard-4
[admin:controller]: serviceenginegroup> save

配置静态路由以访问后端服务器

如果后端服务器所在的子网不是在云中配置的 SE 后端数据子网,则需要静态路由。

配置静态路由时,需要执行以下操作:

  • 将目标范围设置为后端服务器子网前缀。

  • 将下一跃点设置为连接到 SE 的 GCP 后端数据子网的网关。

在以下配置中,10.152.134.192/26 是服务器子网的子网前缀,10.152.134.1 是后端子网 VPC 中连接到 SE 的子网的网关。

示例

[admin:controller]: > configure vrfcontext global
Multiple objects found for this query.
	[0]: vrfcontext-0390ab9e-510c-49ab-8906-7f6eb72ef7f9#global in tenant admin, Cloud Default-Cloud
	[1]: vrfcontext-ef6ae4f4-42c2-4225-9194-cec7ae294979#global in tenant admin, Cloud gcp-cloud-twoarm
Select one: 1
[admin:controller]: vrfcontext> static_routes
New object being created
[admin:controller]: vrfcontext:static_routes> prefix 10.152.134.192/26
[admin:controller]: vrfcontext:static_routes> next_hop 10.152.134.1
[admin:controller]: vrfcontext:static_routes> route_id 1
[admin:controller]: vrfcontext:static_routes> save
[admin:controller]: vrfcontext> save
+------------------+-------------------------------------------------+
| Field            | Value                                           |
+------------------+-------------------------------------------------+
| uuid             | vrfcontext-ef6ae4f4-42c2-4225-9194-cec7ae294979 |
| name             | global                                          |
| static_routes[1] |                                                 |
|   prefix         | 10.152.134.192/26                               |
|   next_hop       | 10.152.134.1                                    |
|   route_id       | 1                                               |
| system_default   | True                                            |
| tenant_ref       | admin                                           |
| cloud_ref        | gcp-cloud-twoarm                                |
+------------------+-------------------------------------------------+
[admin:admin:controller]: >

在所有接口上启用 VIP

您可以在 GCP 云中配置 VIP,以列出所有 SE 数据接口。使用此功能,您可以从前端和后端数据 VPC 访问 VIP。



此功能只能用于以下 NSX Advanced Load Balancer 云配置:

  • vip_allocation_strategy 设置为“routes”。将在前端数据和后端数据 VPC 中都创建用于 VIP 的 GCP 路由。请参阅为 GCP 配置 IPAM,了解 GCP 中的不同 VIP 分配策略。

  • network_config 模式为“two_arm”。

您可以通过在 NSX Advanced Load Balancer 云配置中设置 enable_vip_on_all_interfaces 字段,来启用此功能。服务引擎组中的所有 SE 将在所有数据接口上列出。

如果 NSX Advanced Load Balancer 云中已存在虚拟服务和 SE,则无法更改此字段。

注:

不支持 GCP 上的 GCP IPAM。

通过 CLI 进行配置

您可以通过 CLI 使用以下命令配置 VIP:

[admin:admin:controller]: > configure cloud gcp-cloud-twoarm-all-interfaces

[admin:controller]: cloud> vtype cloud_gcp
[admin:controller]: cloud> gcp_configuration
[admin:controller]: cloud:gcp_configuration> se_project_id service-engine-project
[admin:controller]: cloud:gcp_configuration> region_name us-central1
[admin:controller]: cloud:gcp_configuration> zones us-central1-a
[admin:controller]: cloud:gcp_configuration> zones us-central1-b
[admin:controller]: cloud:gcp_configuration> network_config config two_arm_mode
[admin:controller]: cloud:gcp_configuration:network_config> two_arm
[admin:controller]: cloud:gcp_configuration:network_config:two_arm> frontend_data_vpc_project_id frontend-data-network-project
[admin:controller]: cloud:gcp_configuration:network_config:two_arm> frontend_data_vpc_network_name frontend-data-network-name
[admin:controller]: cloud:gcp_configuration:network_config:two_arm> frontend_data_vpc_subnet_name frontend-data-subnet-name
[admin:controller]: cloud:gcp_configuration:network_config:two_arm> management_vpc_network_name management-network-name
[admin:controller]: cloud:gcp_configuration:network_config:two_arm> management_vpc_subnet_name management-subnet-name
[admin:controller]: cloud:gcp_configuration:network_config:two_arm> backend_data_vpc_network_name backend-data-network-name
[admin:controller]: cloud:gcp_configuration:network_config:two_arm> backend_data_vpc_subnet_name backend-data-subnet-name
[admin:controller]: cloud:gcp_configuration:network_config:two_arm> save
[admin:controller]: cloud:gcp_configuration:network_config> save
[admin:controller]: cloud:gcp_configuration> save
[admin:controller]: cloud> enable_vip_on_all_interfaces
[admin:controller]: cloud> save
+--------------------------------------+--------------------------------+
| Field                                | Value                          |
+--------------------------------------+--------------------------------+
| uuid                                 | cloud-cd70e433-a85f-49db-bfbe-b9db6a938ba6 |
| name                                 | gcp-cloud-twoarm-all-interfaces|
| vtype                                | CLOUD_GCP                      |
| apic_mode                            | False                          |
| gcp_configuration                    |                                |
|   region_name                        | us-central1                    |
|   zones[1]                           | us-central1-a                  |
|   zones[2]                           | us-central1-b                  |
|   se_project_id                      | service-engine-project         |
|   network_config                     |                                |
|     config                           | TWO_ARM_MODE                   |
|     two_arm                          |                                |
|       frontend_data_vpc_subnet_name  | frontend-data-subnet-name      |
|       frontend_data_vpc_project_id   | frontend-data-network-project  |
|       management_vpc_subnet_name     | management-subnet-name         |
|       backend_data_vpc_subnet_name   | backend-data-subnet-name       |
|       frontend_data_vpc_network_name | frontend-data-network-name     |
|       management_vpc_network_name    | management-network-name        |
|       backend_data_vpc_network_name  | backend-data-network-name      |
|   vip_allocation_strategy            |                                |
|     mode                             | ROUTES                         |
| 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         | True                           |
| tenant_ref                           | admin                          |
| license_tier                         | ENTERPRISE_18                  |
| autoscale_polling_interval           | 60 seconds                     |
+--------------------------------------+--------------------------------+
[admin:controller]: > 
注:

在所有 VPC 项目中,GCP 服务帐户都需要具有拥有以下权限的角色:

  • network_project_role.yaml

有关更多详细信息,请参阅角色和权限(GCP 完全访问)

VIP 路由优先级

目前,您可以在 GCP 中创建到 VIP 的路由(默认优先级为 2000),还可以配置路由优先级。仅当云中没有虚拟服务或所有虚拟服务都处于禁用状态时,才能修改 VIP 路由优先级。仅当在 VIP 配置模式下选择了路由时,才能设置路由优先级。所有新路由都将使用新 route_priority 值进行创建。