Les administrateurs de cloud peuvent exploiter le plug-in Google Cloud Platform (GCP) pour créer des équilibreurs de charge afin de prendre en charge des solutions personnalisées, notamment la haute disponibilité.
Vous pouvez paramétrer plusieurs aspects de la configuration de l'équilibreur de charge pour prendre en charge des exigences spécifiques. Ces fonctionnalités peuvent prendre en charge l’infrastructure de provisionnement pour SAP NetWeaver et SAP Hana, par exemple. Cette configuration vous permet de déployer différentes instances d'équilibreur de charge dans différentes zones de disponibilité.
- Créez un compte de cloud GCP si vous n'en avez pas.
- Configurez des mappages de type et d'image.
- Créez un profil réseau par défaut.
- Créez des zones de disponibilité de calcul et balisez-les de manière appropriée. Ces balises vous permettent de provisionner des instances et des groupes d'instances dans des zones de disponibilité spécifiques dans un modèle.
- Le modèle doit modéliser la configuration d'équilibrage de charge appropriée avec des spécifications pour les instances de groupes d'instances, les règles de transfert et les pare-feu.
- Le modèle doit spécifier les machines virtuelles et les zones de disponibilité dans lesquelles elles doivent être déployées.
Configuration d'un équilibrage de charge TCP interne
- Un réseau
- Une plage CIDR d'adresses IP de sous-réseau
- Adresse IP virtuelle (VIP) pour l'équilibrage de charge interne
Il s'agit de l'adresse que vous avez définie pour la règle de transfert. Reportez-vous à la documentation de Google Cloud pour savoir comment réserver des adresses IP pour NetWeaver et SAP Hana.
Cet exemple de modèle utilise des aides d'allocation pour fournir une logique d'allocation pour plusieurs ressources. Le modèle contient deux instances, des groupes d'instances, une ressource de contrôle de santé, une ressource de pare-feu, une ressource de service du serveur principal et une ressource de règle de transfert.
Après le déploiement de ce modèle, vous pouvez vous connecter à votre console Google Cloud pour filtrer et choisir les instances que vous souhaitez ajouter à votre groupe d'instances. Seules les instances de la même zone que le groupe d'instances seront affichées en tant qu'options. Reportez-vous à la section Groupes d'instances dans votre 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'