Su Google Cloud, il modo consigliato per implementare un indirizzo IP virtuale (VIP) per un cluster ad alta disponibilità (HA) basato su sistema operativo per SAP è utilizzare il supporto del failover di un bilanciatore del carico TCP/UDP interno.
Se hai già un cluster HA SUSE Linux Enterprise Server (SLES) per SAP su Google Cloud che utilizza un VIP implementato con un indirizzo IP alias, puoi eseguire la migrazione del VIP in modo che utilizzi un bilanciatore del carico interno.
Se hai utilizzato il modello sap_hana_ha
Deployment Manager,
che non è più supportato, per eseguire il deployment di un sistema SAP HANA scalabile verticalmente
in un cluster HA su SLES,
la tua VIP è implementata con un alias IP.
Queste istruzioni mostrano come eseguire la migrazione di un VIP in un SLES ad alta disponibilità.
Prerequisiti
Queste istruzioni presuppongono che tu abbia già un'alta disponibilità configurata correttamente su Google Cloud che utilizza un IP alias per l'implementazione VIP.
Panoramica della procedura
- Configurare e testare un bilanciatore del carico utilizzando una regola di forwarding temporanea un indirizzo IP temporaneo al posto del VIP.
- Imposta il cluster in modalità di manutenzione e, se possibile, arresta le istanze del server di applicazioni SAP per evitare comportamenti imprevisti.
- Dealloca l'indirizzo IP alias dall'host principale. Questo indirizzo diventa il VIP con il bilanciatore del carico.
- Nella configurazione del cluster Pacemaker:
- Modifica la classe della risorsa VIP esistente.
- Sostituisci i parametri esistenti per l'alias IP con i parametri per il servizio di controllo di integrità.
Conferma l'indirizzo VIP esistente
Come utente root, nell'istanza VM principale, visualizza la configurazione del cluster basata su alias IP esistente:
$
crm configure show
Nella definizione della risorsa, l'intervallo di indirizzi VIP viene visualizzato nelle risorse alias
e IPaddr2
. Se devi modificare l'indirizzo VIP,
devi aggiornare entrambe le risorse. Vedi l'esempio che segue:
primitive rsc_vip_gcp-primary ocf:gcp:alias \ op monitor interval=60s timeout=60s \ op start interval=0 timeout=600s \ op stop interval=0 timeout=180s \ params alias_ip="10.128.1.200/32" hostlist="ha1 ha2" gcloud_path="/usr/local/google-cloud-sdk/bin/gcloud" logging=yes \ meta priority=10 primitive rsc_vip_int-primary IPaddr2 \ params ip=10.128.1.200 cidr_netmask=32 nic=eth0 \ op monitor interval=3600s timeout=60s
Nella console Google Cloud, verifica che l'indirizzo IP utilizzato con l'IP alias sia riservato. L'indirizzo IP può essere l'indirizzo IP utilizzato per l'IP alias o può essere un nuovo indirizzo IP.
$
gcloud compute addresses list --filter="region:( cluster-region )"
Se l'indirizzo IP è riservato e allocato all'istanza VM principale, il relativo stato viene visualizzato come IN_USE
. Quando riallochi
l'IP al bilanciatore del carico, lo devi prima deallocare dall'IP principale
all'istanza e a quel punto il suo stato diventa RESERVED
.
Se l'indirizzo non è incluso negli indirizzi IP restituiti dal list, prenotalo ora per evitare conflitti di indirizzi in futuro:
$
gcloud compute addresses create vip-name \
--region cluster-region --subnet cluster-subnet \
--addresses vip-address
Elenca di nuovo i tuoi indirizzi per verificare che l'indirizzo IP venga visualizzato come
RESERVED
.
Configurare il supporto del failover di Cloud Load Balancing
Il servizio bilanciatore del carico di rete passthrough interno con supporto del failover instrada il traffico all'host attivo in un cluster SAP HANA in base a un servizio di controllo di integrità.
Per evitare conflitti e consentire test prima della migrazione completato, devi creare un modulo di inoltro temporaneo con un indirizzo IP segnaposto della stessa subnet dell'indirizzo VIP. Quando tutto è pronto per il passaggio all'implementazione VIP, puoi creare un nuovo, la regola di forwarding finale con l'indirizzo VIP.
Prenota un indirizzo IP temporaneo per l'IP virtuale
Indirizzo VIP segue il sistema SAP HANA attivo. Il bilanciatore del carico instrada il traffico inviato al VIP alla VM che attualmente ospita il sistema SAP HANA attivo.
Apri Cloud Shell:
Prenota un indirizzo IP temporaneo per nella stessa subnet dell'IP alias per i test scopi. Se ometti il flag
--addresses
, un indirizzo IP nella subnet specificata scelti per te:$
gcloud compute addresses create VIP_NAME \ --region CLUSTER_REGION --subnet CLUSTER_SUBNET \ --addresses VIP_ADDRESSPer saperne di più sulla prenotazione di un indirizzo IP statico, consulta Prenotazione di un indirizzo IP interno statico.
Conferma prenotazione dell'indirizzo IP:
$
gcloud compute addresses describe VIP_NAME \ --region CLUSTER_REGIONDovresti vedere un output simile all'esempio seguente:
address: 10.0.0.19 addressType: INTERNAL creationTimestamp: '2020-05-20T14:19:03.109-07:00' description: '' id: '8961491304398200872' kind: compute#address name: vip-for-hana-ha networkTier: PREMIUM purpose: GCE_ENDPOINT region: https://www.googleapis.com/compute/v1/projects/example-project-123456/regions/us-central1 selfLink: https://www.googleapis.com/compute/v1/projects/example-project-123456/regions/us-central1/addresses/vip-for-hana-ha status: RESERVED subnetwork: https://www.googleapis.com/compute/v1/projects/example-project-123456/regions/us-central1/subnetworks/example-subnet-us-central1
Crea gruppi di istanze per le VM host
In Cloud Shell, crea due gruppi di istanze non gestite e assegna la VM dell'host master principale all'una e la VM dell'host master secondario all'altra:
$
gcloud compute instance-groups unmanaged create PRIMARY_IG_NAME \ --zone=PRIMARY_ZONE$
gcloud compute instance-groups unmanaged add-instances PRIMARY_IG_NAME \ --zone=PRIMARY_ZONE \ --instances=PRIMARY_HOST_NAME$
gcloud compute instance-groups unmanaged create SECONDARY_IG_NAME \ --zone=SECONDARY_ZONE$
gcloud compute instance-groups unmanaged add-instances SECONDARY_IG_NAME \ --zone=SECONDARY_ZONE \ --instances=SECONDARY_HOST_NAMEConferma la creazione dei gruppi di istanze:
$
gcloud compute instance-groups unmanaged listDovresti vedere un output simile all'esempio seguente:
NAME ZONE NETWORK NETWORK_PROJECT MANAGED INSTANCES hana-ha-ig-1 us-central1-a example-network example-project-123456 No 1 hana-ha-ig-2 us-central1-c example-network example-project-123456 No 1
Crea un controllo di integrità di Compute Engine
In Cloud Shell, crea il controllo di integrità. Per la porta utilizzata dal controllo di integrità, scegli una porta privata intervallo, 49152-65535, per evitare conflitti con altri servizi. I valori di intervallo di controllo e timeout sono leggermente più lunghi di quelli predefiniti per aumentare la tolleranza al failover durante gli eventi di migrazione live di Compute Engine. Se necessario, puoi modificare i valori:
$
gcloud compute health-checks create tcp HEALTH_CHECK_NAME --port=HEALTHCHECK_PORT_NUM \ --proxy-header=NONE --check-interval=10 --timeout=10 --unhealthy-threshold=2 \ --healthy-threshold=2Conferma la creazione del controllo di integrità:
$
gcloud compute health-checks describe HEALTH_CHECK_NAMEDovresti vedere un output simile al seguente esempio:
checkIntervalSec: 10 creationTimestamp: '2020-05-20T21:03:06.924-07:00' healthyThreshold: 2 id: '4963070308818371477' kind: compute#healthCheck name: hana-health-check selfLink: https://www.googleapis.com/compute/v1/projects/example-project-123456/global/healthChecks/hana-health-check tcpHealthCheck: port: 60000 portSpecification: USE_FIXED_PORT proxyHeader: NONE timeoutSec: 10 type: TCP unhealthyThreshold: 2
Crea una regola firewall per i controlli di integrità
Definisci una regola firewall per una porta nell'intervallo privato che consenta l'accesso alle VM host dagli intervalli IP utilizzati dai controlli di salute di Compute Engine, 35.191.0.0/16
e 130.211.0.0/22
. Per saperne di più, consulta Creare regole firewall per i controlli di integrità.
Se non ne hai già uno, aggiungi un tag di rete alle VM host. Questo tag di rete viene utilizzato dalla regola firewall per i controlli di integrità.
$
gcloud compute instances add-tags PRIMARY_HOST_NAME \ --tags NETWORK_TAGS \ --zone PRIMARY_ZONE$
gcloud compute instances add-tags SECONDARY_HOST_NAME \ --tags NETWORK_TAGS \ --zone SECONDARY_ZONESe non ne hai già una, crea una regola firewall per consentire i controlli di integrità:
$
gcloud compute firewall-rules create RULE_NAME \ --network NETWORK_NAME \ --action ALLOW \ --direction INGRESS \ --source-ranges 35.191.0.0/16,130.211.0.0/22 \ --target-tags NETWORK_TAGS \ --rules tcp:HLTH_CHK_PORT_NUMAd esempio:
gcloud compute firewall-rules create fw-allow-health-checks \ --network example-network \ --action ALLOW \ --direction INGRESS \ --source-ranges 35.191.0.0/16,130.211.0.0/22 \ --target-tags cluster-ntwk-tag \ --rules tcp:60000
Configura il bilanciatore del carico e il gruppo di failover
Crea il servizio di backend del bilanciatore del carico:
$
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme internal \ --health-checks HEALTH_CHECK_NAME \ --no-connection-drain-on-failover \ --drop-traffic-if-unhealthy \ --failover-ratio 1.0 \ --region CLUSTER_REGION \ --global-health-checksAggiungi il gruppo di istanze principali al servizio di backend:
$
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group PRIMARY_IG_NAME \ --instance-group-zone PRIMARY_ZONE \ --region CLUSTER_REGIONAggiungi il gruppo di istanze di failover secondario al servizio di backend:
$
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group SECONDARY_IG_NAME \ --instance-group-zone SECONDARY_ZONE \ --failover \ --region CLUSTER_REGIONCrea una regola di inoltro temporanea. Per l'indirizzo IP, specifica l'indirizzo IP temporaneo che hai riservato per i test. Se hai bisogno di accedere al sistema SAP HANA dall'esterno della regione specificato di seguito, includi il flag
--allow-global-access
nel definizione:$
gcloud compute forwarding-rules create RULE_NAME \ --load-balancing-scheme internal \ --address VIP_ADDRESS \ --subnet CLUSTER_SUBNET \ --region CLUSTER_REGION \ --backend-service BACKEND_SERVICE_NAME \ --ports ALLPer ulteriori informazioni sull'accesso tra regioni al tuo SAP HANA sistema ad alta disponibilità, vedi Bilanciamento del carico TCP/UDP interno.
Testa la configurazione del bilanciatore del carico
Anche se i gruppi di istanza di backend non verranno registrati come integri fino a puoi testare la configurazione del bilanciatore del carico configurando un listener che risponda ai controlli di integrità. Dopo aver configurato un ascoltatore, se il bilanciatore del carico è configurato correttamente, lo stato dei gruppi di istanze di backend diventa Stabile.
Le sezioni seguenti presentano diversi metodi che puoi utilizzare per testare la configurazione.
Test del bilanciatore del carico con l'utilità socat
Puoi utilizzare l'utilità socat
per ascoltare temporaneamente sulla porta di controllo di stato. Devi comunque installare socat
l'utilità, perché
in seguito, durante la configurazione delle risorse del cluster.
Installa l'
socat
su entrambe le VM host come root utility:#
zypper install -y socatAvvia un processo
socat
per ascoltare per 60 secondi sulla porta del controllo di integrità:#
timeout 60s socat - TCP-LISTEN:HLTH_CHK_PORT_NUM,forkIn Cloud Shell, dopo aver atteso qualche secondo affinché il controllo di integrità rilevi il listener, controlla lo stato dei gruppi di istanze di backend:
$
gcloud compute backend-services get-health BACKEND_SERVICE_NAME \ --region CLUSTER_REGIONDovresti vedere un output simile al seguente:
--- backend: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-a/instanceGroups/hana-ha-ig-1 status: healthStatus: ‐ healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-a/instances/hana-ha-vm-1 ipAddress: 10.0.0.35 port: 80 kind: compute#backendServiceGroupHealth --- backend: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-c/instanceGroups/hana-ha-ig-2 status: healthStatus: ‐ healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-c/instances/hana-ha-vm-2 ipAddress: 10.0.0.34 port: 80 kind: compute#backendServiceGroupHealth
Test del bilanciatore del carico utilizzando la porta 22
Se la porta 22 è aperta per le connessioni SSH sulle VM host, puoi modifica temporaneamente il controllo di integrità in modo da usare la porta 22, che ha un listener in grado di rispondere al controllo dello stato di integrità.
Per utilizzare temporaneamente la porta 22, segui questi passaggi:
Fai clic sul controllo di integrità nella console:
Fai clic su Modifica.
Nel campo Porta, imposta il numero di porta su 22.
Fai clic su Salva e attendi un minuto o due.
In Cloud Shell, controlla lo stato dei gruppi di istanze di backend:
$
gcloud compute backend-services get-health BACKEND_SERVICE_NAME \ --region CLUSTER_REGIONDovresti vedere un output simile al seguente:
--- backend: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-a/instanceGroups/hana-ha-ig-1 status: healthStatus: ‐ healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-a/instances/hana-ha-vm-1 ipAddress: 10.0.0.35 port: 80 kind: compute#backendServiceGroupHealth --- backend: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-c/instanceGroups/hana-ha-ig-2 status: healthStatus: ‐ healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-c/instances/hana-ha-vm-2 ipAddress: 10.0.0.34 port: 80 kind: compute#backendServiceGroupHealth
Al termine, ripristina il numero di porta del controllo di integrità.
Eseguire la migrazione dell'implementazione VIP per utilizzare il bilanciatore del carico
I passaggi che seguono modificano la configurazione del cluster Pacemaker e la regola di inoltro del bilanciatore del carico per completare la migrazione del VIP.
Prepara il sistema per la modifica
Se puoi, interrompi la connessione dell'applicazione SAP al database SAP HANA perché interromperai per breve tempo la connessione per scambiare gli indirizzi IP. I processi di lavoro di NetWeaver sono in grado di riconnettersi al database, potrebbero verificarsi errori o situazioni di sospensione, interrompendo così il e la connessione wireless può essere evitata. Assicurati che il tuo IP sia registrato in una che fa parte del tuo VPC nella regione target.
Come utente root nell'istanza principale attiva, imposta il cluster in modalità di manutenzione:
$
crm configure property maintenance-mode="true"Esegui il backup della configurazione del cluster:
$
crm configure show > clusterconfig.backup
Dealloca l'IP alias
In Cloud Shell, verifica gli intervalli IP alias assegnati all'istanza principale di SAP HANA:
$
gcloud compute instances describe \ primary-host-name \ --zone primary-zone \ --format="flattened(name,networkInterfaces[].aliasIpRanges)"Nella console Google Cloud, aggiorna l'interfaccia di rete. Se non ti serve per conservare gli IP alias, specifica
--aliases ""
:$
gcloud compute instances network-interfaces update primary-host-name \ --zone primary-zone \ --aliases "ip-ranges-to-retain"
Crea la regola di inoltro VIP e ripulisci
Nella console Google Cloud, crea una nuova regola di inoltro frontend per il bilanciatore del carico, specificando come indirizzo IP l'indirizzo IP utilizzato in precedenza per l'alias IP. Questo è il tuo VIP.
$
gcloud compute forwarding-rules create rule-name \ --load-balancing-scheme internal \ --address vip-address \ --subnet cluster-subnet \ --region cluster-region \ --backend-service backend-service-name \ --ports ALLConferma la creazione della regola di forwarding e prendi nota del nome del regola di forwarding temporanea per l'eliminazione:
$
gcloud compute forwarding-rules listElimina la regola di inoltro temporanea:
$
gcloud compute forwarding-rules delete rule-name --region=cluster-regionRilascia l'indirizzo IP temporaneo che hai prenotato:
$
gcloud compute addresses delete temp-ip-name --region=cluster-region
Modifica la risorsa primitiva VIP nella configurazione del cluster
Nell'istanza principale come utente root, modifica la definizione della risorsa primitiva VIP. Se il cluster è stato creato da Deployment Manager modelli forniti da Google Cloud, il componente VIP primitivo il nome della risorsa è
rsc_vip_gcp-primary
:$
crm configure edit rsc_nameLa definizione della risorsa si apre in un editor di testo, ad esempio vi.
Apporta le seguenti modifiche alla risorsa VIP nella Configurazione del cluster ad alta disponibilità di pacemaker:
- Sostituisci la classe della risorsa
ocf:gcp:alias
conanything
- Modifica l'intervallo
op monitor
ininterval=10s
- Cambia il timeout di
op monitor
intimeout=20s
- Rimuovi la definizione delle operazioni
op start
eop stop
- Rimuovi
meta priority=10
- Sostituisci i parametri IP alias:
con parametri del servizio per il controllo di integrità:alias_ip="10.0.0.10/32" hostlist="example-ha-vm1 example-ha-vm2" gcloud_path="/usr/bin/gcloud" logging=yes
binfile="/usr/bin/socat" cmdline_options="-U TCP-LISTEN:healthcheck-port-num,backlog=10,fork,reuseaddr /dev/null"
Ad esempio, sostituisci le voci in grassetto nel seguente esempio di indirizzo IP dell'alias:
primitive rsc_vip_gcp-primary ocf:gcp:alias \ op monitor interval=60s timeout=60s \ op start interval=0 timeout=180s \ op stop interval=0 timeout=180s \ params alias_ip="10.0.0.10/32" hostlist="example-ha-vm1 example-ha-vm2" gcloud_path="/usr/bin/gcloud" logging=yes \ meta priority=10
Al termine della modifica, la definizione della risorsa per il servizio di controllo di integrità dovrebbe avere il seguente aspetto:
primitive rsc_vip_gcp-primary anything \ op monitor interval=10s timeout=20s \ params binfile="/usr/bin/socat" cmdline_options="-U TCP-LISTEN:healthcheck-port-num,backlog=10,fork,reuseaddr /dev/null"
Nell'esempio precedente,
HC port
rappresenta l'integrità controlla la porta specificata al momento della creazione del controllo di integrità configurato l'utilità Socat.- Sostituisci la classe della risorsa
Rimuovi il cluster dalla modalità di manutenzione:
$
crm configure property maintenance-mode="false"
Testa il cluster ad alta disponibilità aggiornato
Dall'istanza dell'applicazione, verifica di poter raggiungere il database utilizzando uno dei seguenti comandi:
Come utente
sidadm
:>
R3trans -dCome qualsiasi utente:
telnet VIP HANA SQL port
o
nc -zv VIP HANA SQL port