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à.

Prima di eseguire il provisioning del bilanciamento del carico, è necessario configurare i componenti appropriati in VMware Aria Automation.
  • 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.
Una volta completati questi passaggi, è possibile aprire la scheda Progettazione in Automation Assembler per creare un modello. Quando si crea il modello, tenere presenti questi fattori:
  • 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

Il modello seguente illustra come configurare un bilanciamento del carico TCP interno per SAP Hana. Per distribuire questo modello, è necessario quanto segue:
  1. Una rete
  2. Un intervallo CIDR dell'IP della sottorete
  3. Un indirizzo IP virtuale (VIP) per il bilanciamento del carico interno

    Questo è l'indirizzo impostato per la regola di inoltro. Vedere la documentazione di Google Cloud per informazioni su come riservare gli indirizzi IP per NetWeaver e SAP Hana.

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'