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 凭据的步骤:
导航到创建按钮。
,然后单击指定用户名和 GCP 服务帐户密钥文件数据。有关身份验证的更多详细信息,请参阅 GCP 完全访问部署。
从 NSX Advanced Load Balancer 22.1.3 开始,可以使用以下 UI:
导航到
。单击 。导航到 GCP 选项卡下的凭据部分。
单击设置凭据。
单击凭据字段中的垂直省略号,然后单击创建。
在新建用户凭据屏幕中,从凭据类型下拉菜单中选择 GCP。
以 JSON 格式粘贴服务帐户密钥。
单击保存以创建凭据。
创建 GCP 云
以下是创建 GCP 云的步骤:
登录到 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 的步骤:
为虚拟服务配置浮动 IP,该虚拟服务的 VIP 是 GCP 中的内部负载均衡器。这会在 GCP 中添加一个静态路由,其中目标范围为公用 IP,下一跃点为内部负载均衡器,前端 IP 为 VIP。
通过 GCP 云路由器通告 GCP 中使用的公用 IP。
配置云路由器
以下是配置云路由器的步骤:
在网络项目和创建了服务引擎虚拟机的区域中创建云路由器。有关更多信息,请参阅创建云路由器。
您可以为一个 NSX Advanced Load Balancer 云添加多个云路由器。将使用 FIP 更新云路由器。
在云配置 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 范围,如下所示:
导航到
。单击所需的云路由器。
单击自定义 IP 范围选项卡,以查看 IP 范围和描述,如下所示:
如果 FIP 未在“自定义 IP 范围”下列出,可在 NSX Advanced Load Balancer UI 中查看控制器的事件页面,如下所示:
导航到
。单击
GCP_CLOUD_ROUTER_UPDATE_FAIL
事件以查看错误消息,如下所示:
更新 SE 项目 ID
云中的 SE Project ID 字段用于指定在其中创建 SE 的项目。设置此字段后,只有在满足以下条件时,才能修改此字段:
VIPAllocationStrategy - ILB
云中不存在虚拟服务和 SE。
没有为池配置自动缩放组。
VIPAllocationStrategy - 路由
创建所有虚拟服务时,VIPAllocationMode 均设置为
Routes
。所有虚拟服务均未分配公用 IP。
下面列出了更改 SE 项目 ID 时,将影响的各个方面:
将始终在新 SE 项目中创建新的 SE。
在云的 network_config 选项中指定的网络也必须与新 SE 项目共享。
旧项目中的现有 SE 将由本产品管理。
NSX Advanced Load Balancer 会清理旧 SE 项目中的映像。
NSX Advanced Load Balancer 会清理旧 SE 项目中的主题和订阅。