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 を使用したプールの構成
GCP インスタンス グループを NSX Advanced Load Balancer CLI を介して構成するには、次の手順を実行します。
GCP インスタンス グループのリストを InstanceGroupName@InstanceGroupProjectID の形式で NSX Advanced Load Balancer プールの external_autoscale_groups フィールドに設定します。
インスタンス グループは、複数のプールで共有できます。
例
2 つの 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 フル アクセス)」を参照してください。
クラウドの構成
クラウドを構成する手順は、次のとおりです。
クラウド構成の autoscale_polling_interval フィールドを使用して、ポーリング間隔を構成できます。
インスタンス グループ通知に 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 は、各クラウドのサービス エンジン プロジェクトに 1 つの GCP Pub/Sub トピックと 1 つの GCP Pub/Sub サブスクリプションを作成します。
Controller は、サーバ プロジェクト内の各インスタンス グループに StackDriver ログ シンクを作成します。
インスタンスが GCP インスタンス グループに追加または削除されるたびに、GCP StackDriver ログの記録にログ エントリが作成されます。
ログ エントリは、構成されたインスタンス グループ シンクのクエリと一致し、一致する場合は、サービス エンジン プロジェクトの Pub/Sub トピックにエクスポートされます。
コントローラは、インスタンスがインスタンス グループに追加または削除されるたびに GCP Pub/Sub から通知を取得し、構成されたインスタンス グループを使用してすべての NSX Advanced Load Balancer プールを更新します。
ポーリングによるサーバの更新
GCP インスタンス グループの定期的なポーリングは、一部の更新が失われた場合にトピック、サブスクリプション、シンク、サーバを同期するために実行されます。
Controller によって 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 | +---------------------------------------+----------------------------------------------------------------------------------+