Gli amministratori del cloud possono utilizzare al meglio il plug-in Google Cloud Platform (GCP) per creare bilanciamenti del carico per supportare soluzioni personalizzate, inclusa l'alta disponibilità.
È possibile configurare diversi aspetti della configurazione del bilanciamento del carico per supportare requisiti specifici. Queste funzionalità possono supportare, ad esempio, l'infrastruttura di provisioning per SAP NetWeaver e SAP Hana. Questa configurazione consente di distribuire varie istanze del bilanciamento del carico in diverse zone di disponibilità.
- Creare un account cloud GCP se non ne è già disponibile uno.
- Configurare le mappature delle caratteristiche e delle immagini.
- Creare un profilo di rete predefinito.
- Creare zone di disponibilità di elaborazione e contrassegnarle in modo appropriato. Questi tag consentono di eseguire il provisioning di istanze e gruppi di istanze in zone di disponibilità specifiche in un modello.
- Il modello deve modellare la configurazione del bilanciamento del carico appropriata con specifiche per i controlli di integrità, le istanze, i gruppi di istanze, i servizi di back-end, le regole di inoltro e i firewall.
- Il modello deve inoltre specificare le macchine virtuali e le zone di disponibilità in cui devono essere distribuite.
Configurazione di un bilanciamento del carico TCP interno
Questo modello di esempio utilizza gli helper di allocazione per fornire la logica di allocazione per diverse risorse. Il modello contiene due istanze, gruppi di istanze, una risorsa di controllo di integrità, una risorsa firewall, una risorsa del servizio back-end e una risorsa della regola di inoltro.
Dopo aver distribuito questo modello, è possibile accedere alla console Google Cloud per filtrare e scegliere le istanze da aggiungere al gruppo di istanze. Solo le istanze nella stessa zona del gruppo di istanze verranno visualizzate come opzioni. Vedere Gruppi di istanze nella console 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'