Администраторы облачных систем могут использовать подключаемый модуль Google Cloud Platform (GCP) для создания подсистем балансировки нагрузки, чтобы поддерживать настраиваемые решения, в том числе обеспечивающие высокую доступность.
Для выполнения определенных требований пользователи могут настраивать некоторые параметры конфигурации подсистемы балансировки нагрузки. Эти функции позволяют поддерживать инфраструктуру подготовки, например для платформ SAP NetWeaver и SAP Hana. Эта конфигурация позволяет развертывать разные экземпляры подсистемы балансировки нагрузки в разных зонах доступности.
- Если у вас нет облачной учетной записи GCP, создайте ее.
- Настройте сопоставления конфигураций ресурсов и образов.
- Создайте профиль сети по умолчанию.
- Создайте зоны доступности вычислительных ресурсов и пометьте их соответствующими тегами. Эти теги позволяют подготовить экземпляры и группы экземпляров для конкретных зон доступности в шаблоне.
- Шаблон должен моделировать соответствующую конфигурацию подсистемы балансировки нагрузки со спецификациями для проверок работоспособности, экземпляров, групп экземпляров, внутренних служб, правил переадресации и брандмауэров.
- В шаблоне должны быть определены виртуальные машины и зоны доступности, в которых они должны быть развернуты.
Настройка внутренней подсистемы балансировки нагрузки TCP
В этом примере шаблона используются помощники выделения, предоставляющие логику выделения для нескольких ресурсов. Шаблон содержит два экземпляра, группы экземпляров, ресурс проверки работоспособности, ресурс брандмауэра, ресурс внутренней службы и ресурс правила переадресации.
После развертывания этого шаблона вы можете войти в консоль Google Cloud, чтобы отфильтровать и выбрать экземпляры, которые нужно добавить в группу экземпляров. В качестве вариантов будут отображаться только экземпляры в той же зоне, что и группа экземпляров. См. раздел Группы экземпляров в консоли Google Cloud.
formatVersion: 1 inputs: suffix: type: string title: '' resources: Allocations_Image_1: type: Allocations.Image properties: image: ubuntu Allocations_Compute_1: type: Allocations.Compute properties: accountType: gcp constraints: - tag: zone-a Allocations_Compute_2: type: Allocations.Compute properties: constraints: - tag: zone-b Allocations_Flavor_1: type: Allocations.Flavor properties: flavor: medium Idem_GCP_COMPUTE_NETWORK_1: type: Idem.GCP.COMPUTE.NETWORK properties: name: network-doc-1-${input.suffix} account: ${resource.Allocations_Compute_1.selectedCloudAccount.name} auto_create_subnetworks: false Idem_GCP_COMPUTE_SUBNETWORK_1: type: Idem.GCP.COMPUTE.SUBNETWORK properties: name: subnetwork-doc-1-${input.suffix} account: ${resource.Allocations_Compute_1.selectedCloudAccount.name} network: ${Idem_GCP_COMPUTE_NETWORK_1.resource_id} region: ${resource.Allocations_Compute_1.selectedRegion.name} ip_cidr_range: '10.0.10.0/24' Idem_GCP_COMPUTE_INSTANCE_1: type: Idem.GCP.COMPUTE.INSTANCE properties: name: vm-doc-1-${input.suffix} zone: ${resource.Allocations_Compute_1.selectedPlacementCompute.id} account: ${resource.Allocations_Compute_1.selectedCloudAccount.name} can_ip_forward: false project: ${resource.Allocations_Compute_1.selectedCloudAccount.additionalProperties.gcp.project} network_interfaces: - name: nic0 stack_type: IPV4_ONLY subnetwork: ${Idem_GCP_COMPUTE_SUBNETWORK_1.resource_id} disks: - initialize_params: disk_name: disk-doc-boot-1-${input.suffix} source_image: ${resource.Allocations_Image_1.selectedImageId} disk_size_gb: 12 disk_type: ${'/projects/' + resource.Allocations_Flavor_1.selectedCloudAccount.additionalProperties.gcp.project + '/zones/' + resource.Allocations_Compute_1.selectedPlacementCompute.id + '/diskTypes/pd-standard'} boot: true auto_delete: true machine_type: ${'/projects/' + resource.Allocations_Flavor_1.selectedCloudAccount.additionalProperties.gcp.project + '/zones/' + resource.Allocations_Compute_1.selectedPlacementCompute.id + '/machineTypes/' + resource.Allocations_Flavor_1.selectedInstanceTypeName} tags: items: - net-tag-1 - net-tag-2 Idem_GCP_COMPUTE_INSTANCE_2: type: Idem.GCP.COMPUTE.INSTANCE properties: name: vm-doc-2-${input.suffix} zone: ${resource.Allocations_Compute_2.selectedPlacementCompute.id} account: ${resource.Allocations_Compute_1.selectedCloudAccount.name} can_ip_forward: false project: ${resource.Allocations_Compute_1.selectedCloudAccount.additionalProperties.gcp.project} network_interfaces: - name: nic0 stack_type: IPV4_ONLY subnetwork: ${Idem_GCP_COMPUTE_SUBNETWORK_1.resource_id} disks: - initialize_params: disk_name: disk-doc-boot-2-${input.suffix} source_image: ${resource.Allocations_Image_1.selectedImageId} disk_size_gb: 12 disk_type: ${'/projects/' + resource.Allocations_Flavor_1.selectedCloudAccount.additionalProperties.gcp.project + '/zones/' + resource.Allocations_Compute_1.selectedPlacementCompute.id + '/diskTypes/pd-standard'} boot: true auto_delete: true machine_type: ${'/projects/' + resource.Allocations_Flavor_1.selectedCloudAccount.additionalProperties.gcp.project + '/zones/' + resource.Allocations_Compute_2.selectedPlacementCompute.id + '/machineTypes/' + resource.Allocations_Flavor_1.selectedInstanceTypeName} tags: items: - net-tag-1 - net-tag-2 Idem_GCP_COMPUTE_INSTANCE_GROUP_1: type: Idem.GCP.COMPUTE.INSTANCE_GROUP properties: name: ig-doc-1-${input.suffix} account: ${resource.Allocations_Compute_1.selectedCloudAccount.name} zone: ${resource.Allocations_Compute_1.selectedPlacementCompute.id} network: ${Idem_GCP_COMPUTE_NETWORK_1.resource_id} Idem_GCP_COMPUTE_INSTANCE_GROUP_2: type: Idem.GCP.COMPUTE.INSTANCE_GROUP properties: name: ig-doc-2-${input.suffix} account: ${resource.Allocations_Compute_1.selectedCloudAccount.name} zone: ${resource.Allocations_Compute_2.selectedPlacementCompute.id} network: ${Idem_GCP_COMPUTE_NETWORK_1.resource_id} Idem_GCP_COMPUTE_HEALTH_CHECK_1: type: Idem.GCP.COMPUTE.HEALTH_CHECK properties: name: hc-doc-1-${input.suffix} account: ${resource.Allocations_Compute_1.selectedCloudAccount.name} type_: TCP check_interval_sec: 10 timeout_sec: 10 unhealthy_threshold: 2 healthy_threshold: 2 tcp_health_check: port: 80 proxy_header: NONE Idem_GCP_COMPUTE_FIREWALL_1: type: Idem.GCP.COMPUTE.FIREWALL properties: name: f-doc-1-${input.suffix} account: ${resource.Allocations_Compute_1.selectedCloudAccount.name} network: ${Idem_GCP_COMPUTE_NETWORK_1.resource_id} direction: INGRESS target_tags: - net-tag-1 - net-tag-2 allowed: - ip_protocol: tcp ports: - ${resource.Idem_GCP_COMPUTE_HEALTH_CHECK_1.tcp_health_check.port} Idem_GCP_COMPUTE_BACKEND_SERVICE_1: type: Idem.GCP.COMPUTE.BACKEND_SERVICE properties: name: bs-doc-1-${input.suffix} account: ${resource.Allocations_Compute_1.selectedCloudAccount.name} health_checks: - ${resource.Idem_GCP_COMPUTE_HEALTH_CHECK_1.resource_id} load_balancing_scheme: INTERNAL region: ${resource.Allocations_Compute_1.selectedRegion.id} network: ${Idem_GCP_COMPUTE_NETWORK_1.resource_id} failover_policy: drop_traffic_if_unhealthy: true disable_connection_drain_on_failover: true failover_ratio: 1 backends: - group: ${resource.Idem_GCP_COMPUTE_INSTANCE_GROUP_1.resource_id} - group: ${resource.Idem_GCP_COMPUTE_INSTANCE_GROUP_2.resource_id} failover: true Idem_GCP_COMPUTE_FORWARDING_RULE_1: type: Idem.GCP.COMPUTE.FORWARDING_RULE properties: ip_protocol: TCP name: fr-doc-1-${input.suffix} account: ${resource.Allocations_Compute_1.selectedCloudAccount.name} load_balancing_scheme: INTERNAL backend_service: ${resource.Idem_GCP_COMPUTE_BACKEND_SERVICE_1.resource_id} all_ports: true region: ${resource.Allocations_Compute_1.selectedRegion.id} subnetwork: ${Idem_GCP_COMPUTE_SUBNETWORK_1.resource_id} ip_address: '10.0.10.102'