GCP 实例组可以在虚拟服务的 NSX Advanced Load Balancer 池中配置。控制器会定期轮询在 NSX Advanced Load Balancer 池中配置的 GCP 实例组,并使用 GCP 实例组中的实例更新池服务器。

除了轮询外,还会使用 GCP pub-sub 通知服务获取关于在 GCP 实例组中创建和删除了实例的通知。如果将新的实例添加到在 NSX Advanced Load Balancer 池中配置的 GCP 实例组,则 NSX Advanced Load Balancer 将更新池成员资格以包含新置备的实例。相反,从 GCP 实例组中删除实例时,NSX Advanced Load Balancer 将从其池成员资格中删除此服务器。这样,无需任何操作员干预或配置更新,即可实现对后端服务器资源的无缝、弹性和自动化管理。

NSX Advanced Load Balancer 同时支持 GCP 受管和非受管实例组。实例组可以位于任何 GCP 项目中,但必须具有如下所述的所需权限。有关 GCP 中所需权限的详细信息,请参阅角色和权限(GCP 完全访问)。您可以将服务帐户配置为具有对服务引擎项目中 GCP 实例组自动缩放功能的权限,以及对实例组(服务器)项目的权限。

通过 CLI 配置池

以下是通过 NSX Advanced Load Balancer CLI 配置 GCP 实例组的步骤:

  1. 使用 InstanceGroupName@InstanceGroupProjectID 格式的 GCP 实例组列表设置 NSX Advanced Load Balancer 池中的 external_autoscale_groups 字段。

  2. 实例组可以跨多个池共享。

示例

您可以将两个 GCP 实例组添加到一个池中,这两个 GCP 实例组都属于不同的 GCP 项目。以下是 CLI 详细信息:

[admin:controller]: > configure pool pool-1
[admin:controller]: pool> cloud_ref gcp-cloud
[admin:controller]: pool> external_autoscale_groups instance-group-name-1@instance-group-project-1
[admin:controller]: pool> external_autoscale_groups instance-group-name-2@instance-group-project-2
[admin:controller]: pool> save
+---------------------------------------+-----------------------------------------------------+
| Field                                 | Value                                               |
+---------------------------------------+-----------------------------------------------------+
| uuid                                  | pool-ea2ee84d-a51e-451f-b59e-4906a4a0a4e2           |
| name                                  | pool-1                                              |
| default_server_port                   | 80                                                  |
| graceful_disable_timeout              | 1 min                                               |
| connection_ramp_duration              | 10 min                                              |
| max_concurrent_connections_per_server | 0                                                   |
| lb_algorithm                          | LB_ALGORITHM_LEAST_CONNECTIONS                      |
| lb_algorithm_hash                     | LB_ALGORITHM_CONSISTENT_HASH_SOURCE_IP_ADDRESS      |
| inline_health_monitor                 | True                                                |
| use_service_port                      | False                                               |
| capacity_estimation                   | False                                               |
| capacity_estimation_ttfb_thresh       | 0 milliseconds                                      |
| vrf_ref                               | global                                              |
| fewest_tasks_feedback_delay           | 10 sec                                              |
| enabled                               | True                                                |
| request_queue_enabled                 | False                                               |
| request_queue_depth                   | 128                                                 |
| host_check_enabled                    | False                                               |
| sni_enabled                           | True                                                |
| rewrite_host_header_to_sni            | False                                               |
| rewrite_host_header_to_server_name    | False                                               |
| external_autoscale_groups[1]          | instance-group-name-1@instance-group-project-1 	  |
| external_autoscale_groups[2]          | instance-group-name-2@instance-group-project-2 	  |
| lb_algorithm_core_nonaffinity         | 2                                                   |
| lookup_server_by_name                 | False                                               |
| analytics_profile_ref                 | System-Analytics-Profile                            |
| tenant_ref                            | admin                                               |
| cloud_ref                             | gcp-cloud                                           |
| server_timeout                        | 0 milliseconds                                      |
| delete_server_on_dns_refresh          | True                                                |
| enable_http2                          | False                                               |
| ignore_server_port                    | False                                               |
| routing_pool                          | False                                               |
+---------------------------------------+-----------------------------------------------------+

有关自动缩放服务引擎项目的角色和权限,请参阅角色和权限(GCP 完全访问)

配置云

以下是配置云的步骤:

  1. 您可以使用云配置中的 autoscale_polling_interval 字段配置轮询间隔。

  2. 如果为实例组通知配置了 GCP pub-sub,则建议将轮询间隔增加到 5 分钟。这是在每个周期性时间间隔之后协调 NSX Advanced Load Balancer 池配置所必需的。

通过 CLI 配置云

以下是通过 NSX Advanced Load Balancer CLI 配置云的 CLI 详细信息。

[admin:controller]: > configure cloud gcp-cloud Updating an existing object. [admin:controller]: cloud> autoscale_polling_interval 300 Overwriting the previously entered value for autoscale_polling_interval [admin:controller]: cloud> save +------------------------------+--------------------------------------------+ | Field                        | Value                                      | +------------------------------+--------------------------------------------+ | uuid                         | cloud-32cd1a1e-bfc0-40f9-940b-1b37408ffa67 | | 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              | se-project-id                              | |   network_config             |                                            | |     config                   | INBAND_MANAGEMENT                          | |     inband                   |                                            | |       vpc_subnet_name        | subnet-1                                   | |       vpc_project_id         | network-project-id                         | |       vpc_network_name       | dev-net-1                                  | |   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                                 | | autoscale_polling_interval   | 300 seconds                                | +------------------------------+--------------------------------------------+ 

跟踪 GCP 实例组中的实例

在跟踪 GCP 实例组中的实例时,将使用对实例组的轮询以及 GCP StackDriver 日志记录中的通知。

使用 GCP StackDriver 日志记录和 GCP Pub/Sub 更新服务器

以下是使用 GCP StackDriver 日志记录和 GCP Pub/Sub 更新服务器的过程:

  • NSX Advanced Load Balancer Controller 在每个云的服务引擎项目中创建一个 GCP pub-sub 主题和一个 GCP pub-sub 订阅。

  • 控制器为服务器项目中的每个实例组创建一个 StackDriver 日志池。

  • 每当在 GCP 实例组中添加或移除实例时,都会在 GCP StackDriver 日志记录中创建一个日志条目。

  • 该日志条目将与配置的实例组池的查询进行匹配,如果相匹配,则会将其导出到服务引擎项目中的 pub-sub 主题。

  • 每当在实例组中添加或移除实例时,控制器都会从 GCP pub-sub 获取通知,并更新包含配置的实例组的所有 NSX Advanced Load Balancer 池。



通过轮询更新服务器

如果缺少某些更新,则将定期轮询 GCP 实例组以同步主题、订阅、池和服务器。

在控制器处理 GCP pub-sub 通知后,NSX Advanced Load Balancer 池即会随服务器一起更新。

[admin:10-138-10-50]: > show pool pool1
+---------------------------------------+----------------------------------------------------------------------------------+
| Field                                 | Value                                                                            |
+---------------------------------------+----------------------------------------------------------------------------------+
| uuid                                  | pool-ea2ee84d-a51e-451f-b59e-4906a4a0a4e2                                        |
| name                                  | pool1                                                                            |
| default_server_port                   | 80                                                                               |
| graceful_disable_timeout              | 1 min                                                                            |
| connection_ramp_duration              | 10 min                                                                           |
| max_concurrent_connections_per_server | 0                                                                                |
| servers[1]                            |                                                                                  |
|   ip                                  | 10.20.0.8                                                                        |
|   hostname                            | instance-group-1-bf52                                                            |
|   enabled                             | True                                                                             |
|   ratio                               | 1                                                                                |
|   external_uuid                       | https://www.googleapis.com/compute/v1/projects/instance-group-project-1/zones/us |
|                                       | -central1-c/instances/instance-group-1-bf52                                      |
|   verify_network                      | False                                                                            |
|   resolve_server_by_dns               | False                                                                            |
|   static                              | False                                                                            |
|   rewrite_host_header                 | False                                                                            |
|   autoscaling_group_name              | instance-group-1@instance-group-project-1                                        |
| servers[2]                            |                                                                                  |
|   ip                                  | 10.20.0.9                                                                        |
|   hostname                            | instance-group-1-9phd                                                            |
|   enabled                             | True                                                                             |
|   ratio                               | 1                                                                                |
|   external_uuid                       | https://www.googleapis.com/compute/v1/projects/instance-group-project-1/zones/us |
|                                       | -central1-b/instances/instance-group-1-9phd                                      |
|   verify_network                      | False                                                                            |
|   resolve_server_by_dns               | False                                                                            |
|   static                              | False                                                                            |
|   rewrite_host_header                 | False                                                                            |
|   autoscaling_group_name              | instance-group-1@instance-group-project-1                                        |
| servers[3]                            |                                                                                  |
|   ip                                  | 10.20.0.7                                                                        |
|   hostname                            | instance-group-1-s078                                                            |
|   enabled                             | True                                                                             |
|   ratio                               | 1                                                                                |
|   external_uuid                       | https://www.googleapis.com/compute/v1/projects/instance-group-project-1/zones/us |
|                                       | -central1-f/instances/instance-group-1-s078                                      |
|   verify_network                      | False                                                                            |
|   resolve_server_by_dns               | False                                                                            |
|   static                              | False                                                                            |
|   rewrite_host_header                 | False                                                                            |
|   autoscaling_group_name              | instance-group-1@instance-group-project-1                                        |
| lb_algorithm                          | LB_ALGORITHM_LEAST_CONNECTIONS                                                   |
| lb_algorithm_hash                     | LB_ALGORITHM_CONSISTENT_HASH_SOURCE_IP_ADDRESS                                   |
| inline_health_monitor                 | True                                                                             |
| use_service_port                      | False                                                                            |
| capacity_estimation                   | False                                                                            |
| capacity_estimation_ttfb_thresh       | 0 milliseconds                                                                   |
| vrf_ref                               | global                                                                           |
| fewest_tasks_feedback_delay           | 10 sec                                                                           |
| enabled                               | True                                                                             |
| request_queue_enabled                 | False                                                                            |
| request_queue_depth                   | 128                                                                              |
| host_check_enabled                    | False                                                                            |
| sni_enabled                           | True                                                                             |
| rewrite_host_header_to_sni            | False                                                                            |
| rewrite_host_header_to_server_name    | False                                                                            |
| external_autoscale_groups[1]          | instance-group-1@instance-group-project-1                                        |
| lb_algorithm_core_nonaffinity         | 2                                                                                |
| lookup_server_by_name                 | False                                                                            |
| analytics_profile_ref                 | System-Analytics-Profile                                                         |
| tenant_ref                            | admin                                                                            |
| cloud_ref                             | gcp-cloud                                                                        |
| server_timeout                        | 0 milliseconds                                                                   |
| delete_server_on_dns_refresh          | True                                                                             |
| enable_http2                          | False                                                                            |
| ignore_server_port                    | False                                                                            |
| routing_pool                          | False                                                                            |
+---------------------------------------+----------------------------------------------------------------------------------+