Guida alla configurazione dei cluster con scale out ad alta disponibilità per SAP HANA su SLES

Questa guida mostra come eseguire il deployment e configurare un cluster ad alta disponibilità (HA) SUSE Linux Enterprise Server (SLES) ottimizzato per le prestazioni per un sistema con scale out di SAP HANA su Google Cloud.

Questa guida include i passaggi per:

Questa guida include anche i passaggi per configurare la replica del sistema SAP HANA. Tuttavia, fai riferimento alla documentazione SAP per le istruzioni definitive.

Per eseguire il deployment di un sistema SAP HANA senza un cluster Linux ad alta disponibilità o un host di nodo in standby, consulta la guida al deployment di SAP HANA.

Questa guida è rivolta agli utenti avanzati di SAP HANA che hanno familiarità con le configurazioni Linux ad alta disponibilità per SAP HANA.

Il sistema di cui viene eseguito il deployment in questa guida

Seguendo questa guida, eseguirai il deployment di un sistema SAP HANA ad alta disponibilità a più nodi configurato per la ridondanza completa delle zone con un'istanza aggiuntiva che agisce come creatore di maggioranza, noto anche come nodo tie-break, che garantisce il mantenimento del quorum del cluster in caso di perdita di una zona.

Il deployment finale comprende le seguenti risorse:

  • Un sito principale e uno secondario in cui ogni istanza ha una controparte a livello di zona.
  • Due siti configurati per la replica sincrona.
  • Una singola istanza Compute per fungere da autorità di maggioranza.
  • Un gestore delle risorse del cluster ad alta disponibilità Pacemaker con un meccanismo di recinzione.
  • Dischi permanenti per dati e volumi di log SAP HANA collegati a ogni istanza SAP HANA.

Panoramica di un cluster Linux ad alta disponibilità per un sistema di scale out SAP HANA a più nodi

Questa guida illustra come utilizzare i modelli Terraform forniti da Google Cloud per eseguire il deployment delle macchine virtuali (VM) di Compute Engine e delle istanze SAP HANA, in modo che le VM e i sistemi SAP HANA di base soddisfino i requisiti di supportabilità SAP e siano conformi alle best practice attuali.

SAP HANA Studio viene utilizzato in questa guida per testare la replica del sistema SAP HANA. Se preferisci, puoi utilizzare il Cockpit SAP HANA. Per informazioni sull'installazione di SAP HANA Studio, consulta:

Prerequisiti

Prima di creare il cluster ad alta disponibilità SAP HANA, assicurati che siano soddisfatti i seguenti prerequisiti:

Creare una rete

Per motivi di sicurezza, crea una nuova rete. Puoi controllare chi ha accesso aggiungendo regole firewall o utilizzando un altro metodo di controllo dell'accesso.

Se il progetto ha una rete VPC predefinita, non utilizzarla. Crea invece la tua rete VPC in modo che le uniche regole firewall in vigore siano quelle create in modo esplicito.

Durante il deployment, le istanze VM richiedono in genere l'accesso a internet per scaricare l'agente di Google Cloud per SAP. Se utilizzi una delle immagini Linux certificate per SAP disponibili in Google Cloud, l'istanza VM richiede anche l'accesso a internet per poter registrare la licenza e accedere ai repository dei fornitori di sistemi operativi. Una configurazione con un gateway NAT e con tag di rete VM supporta questo accesso, anche se le VM di destinazione non hanno IP esterni.

Per configurare il networking:

Console

  1. Nella console Google Cloud, vai alla pagina Reti VPC.

    Vai a Reti VPC

  2. Fai clic su Crea rete VPC.
  3. Inserisci un nome per la rete.

    Il nome deve rispettare la convenzione di denominazione. Le reti VPC utilizzano la convenzione di denominazione di Compute Engine.

  4. In Modalità di creazione subnet, scegli Personalizzata.
  5. Nella sezione Nuova subnet, specifica i seguenti parametri di configurazione per una subnet:
    1. Inserisci un nome per la subnet.
    2. In Regione, seleziona la regione di Compute Engine in cui vuoi creare la subnet.
    3. Per il Tipo di stack IP, seleziona IPv4 (stack singolo), quindi inserisci un intervallo di indirizzi IP nel formato CIDR, ad esempio 10.1.0.0/24.

      Questo è l'intervallo IPv4 principale per la subnet. Se prevedi di aggiungere più di una subnet, assegna intervalli IP CIDR non sovrapposti a ciascuna subnet nella rete. Tieni presente che ogni subnet e i relativi intervalli IP interni sono mappati a una singola regione.

    4. Fai clic su Fine.
  6. Per aggiungere altre subnet, fai clic su Aggiungi subnet e ripeti i passaggi precedenti. Dopo aver creato la rete, puoi aggiungere altre subnet alla rete.
  7. Fai clic su Crea.

gcloud

  1. Vai a Cloud Shell.

    Vai a Cloud Shell

  2. Per creare una nuova rete in modalità di subnet personalizzate, esegui:
    gcloud compute networks create NETWORK_NAME --subnet-mode custom

    Sostituisci NETWORK_NAME con il nome della nuova rete. Il nome deve rispettare la convenzione di denominazione. Le reti VPC utilizzano la convenzione di denominazione di Compute Engine.

    Specifica --subnet-mode custom per evitare di utilizzare la modalità automatica predefinita, che crea automaticamente una subnet in ogni regione di Compute Engine. Per ulteriori informazioni, consulta la sezione Modalità di creazione delle subnet.

  3. Crea una subnet e specifica la regione e l'intervallo IP:
    gcloud compute networks subnets create SUBNETWORK_NAME \
        --network NETWORK_NAME --region REGION --range RANGE

    Sostituisci quanto segue:

    • SUBNETWORK_NAME: il nome della nuova subnet
    • NETWORK_NAME: il nome della rete creata nel passaggio precedente
    • REGION: la regione in cui vuoi che venga creata la subnet
    • RANGE: l'intervallo di indirizzi IP, specificato in formato CIDR, ad esempio 10.1.0.0/24

      Se prevedi di aggiungere più di una subnet, assegna intervalli IP CIDR non sovrapposti per ogni subnet nella rete. Tieni presente che ogni subnet e i relativi intervalli IP interni sono mappati a una singola regione.

  4. Se vuoi, ripeti il passaggio precedente e aggiungi altre subnet.

Configurazione di un gateway NAT

Se devi creare una o più VM senza indirizzi IP pubblici, devi utilizzare Network Address Translation (NAT) per consentire alle VM di accedere a internet. Utilizza Cloud NAT, un servizio gestito software-defined distribuito e software-defined di Google Cloud che consente alle VM di inviare pacchetti in uscita a internet e ricevere i pacchetti di risposta in entrata stabiliti corrispondenti. In alternativa, puoi configurare una VM separata come gateway NAT.

Per creare un'istanza Cloud NAT per il progetto, consulta Utilizzo di Cloud NAT.

Dopo aver configurato Cloud NAT per il tuo progetto, le istanze VM possono accedere in modo sicuro a internet senza un indirizzo IP pubblico.

aggiungi regole firewall

Per impostazione predefinita, una regola firewall implicita blocca le connessioni in entrata dall'esterno della rete Virtual Private Cloud (VPC). Per consentire le connessioni in entrata, configura una regola firewall per la tua VM. Dopo aver stabilito una connessione in entrata con una VM, il traffico è consentito in entrambe le direzioni su quella connessione.

Puoi anche creare una regola firewall per consentire l'accesso esterno alle porte specificate o per limitare l'accesso tra VM sulla stessa rete. Se viene utilizzato il tipo di rete VPC default, vengono applicate anche alcune regole predefinite aggiuntive, come la regola default-allow-internal, che consente la connettività tra le VM nella stessa rete su tutte le porte.

A seconda del criterio IT applicabile al tuo ambiente, potrebbe essere necessario isolare o limitare in altro modo la connettività all'host del database creando regole firewall.

A seconda dello scenario, puoi creare regole firewall per consentire l'accesso a:

  • Le porte SAP predefinite elencate nella sezione TCP/IP di tutti i prodotti SAP.
  • Connessioni dal tuo computer o ambiente di rete aziendale alla tua istanza VM di Compute Engine. Se hai dubbi in merito a quale indirizzo IP utilizzare, rivolgiti all'amministratore di rete della tua azienda.

Per creare una regola firewall:

Console

  1. Nella console Google Cloud, vai alla pagina Firewall di Compute Engine.

    Vai a Firewall

  2. Nella parte superiore della pagina, fai clic su Crea regola firewall.

    • Nel campo Rete, seleziona la rete in cui si trova la VM.
    • Nel campo Destinazioni, specifica le risorse su Google Cloud a cui si applica la regola. Ad esempio, specifica Tutte le istanze nella rete. In alternativa, per limitare la regola a istanze specifiche su Google Cloud, inserisci i tag in Tag di destinazione specificati.
    • Nel campo Filtro di origine, seleziona una delle seguenti opzioni:
      • Intervalli IP per consentire il traffico in entrata da indirizzi IP specifici. Specifica l'intervallo di indirizzi IP nel campo Intervalli IP di origine.
      • Subnet per consentire il traffico in entrata da una determinata subnet. Specifica il nome della subnet nel seguente campo Subnet. Puoi utilizzare questa opzione per consentire l'accesso tra le VM in una configurazione a 3 livelli o con scale out.
    • Nella sezione Protocolli e porte, seleziona Protocolli e porte specificati e inserisci tcp:PORT_NUMBER.
  3. Fai clic su Crea per creare la regola firewall.

gcloud

Crea una regola firewall utilizzando il comando seguente:

$ gcloud compute firewall-rules create firewall-name
--direction=INGRESS --priority=1000 \
--network=network-name --action=ALLOW --rules=protocol:port \
--source-ranges ip-range --target-tags=network-tags

Deployment delle VM e di SAP HANA

Per eseguire il deployment di un sistema SAP HANA ad alta disponibilità a più nodi configurato per la ridondanza completa delle zone, utilizza il modello Cloud Deployment Manager per SAP HANA come base per la configurazione, oltre a un modello aggiuntivo per il deployment di un'istanza di creazione della maggioranza.

Il deployment è costituito da quanto segue:

  • Due sistemi SAP HANA corrispondenti, ciascuno con due o più nodi worker.
  • Un'unica istanza di un generatore di maggioranza, nota anche come nodo di tie-break, che garantisce che il quorum del cluster venga mantenuto in caso di perdita di una zona.

Aggiungi la definizione per tutti i sistemi allo stesso file YAML in modo che Deployment Manager distribuisca tutte le risorse in un unico deployment. Una volta eseguito il deployment dei sistemi SAP HANA e dell'istanza del creatore di maggioranza, devi definire e configurare il cluster ad alta disponibilità.

Le istruzioni seguenti utilizzano Cloud Shell, ma sono generalmente applicabili a Google Cloud CLI.

  1. Conferma che le tue quote attuali per risorse come dischi permanenti e CPU siano sufficienti per i sistemi SAP HANA che stai per installare. Se le quote non sono sufficienti, il deployment non riesce. Per i requisiti delle quote di SAP HANA, consulta Prezzi e considerazioni sulle quote per SAP HANA.

    Vai alla pagina delle quote

  2. Apri Cloud Shell o, se hai installato gcloud CLI sulla tua workstation locale, apri un terminale.

    Vai a Cloud Shell

  3. Scarica il modello del file di configurazione template.yaml per il cluster ad alta disponibilità SAP HANA nella tua directory di lavoro inserendo il seguente comando in Cloud Shell o gcloud CLI:

    wget https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_hana/template.yaml
  4. Se vuoi, rinomina il file template.yaml per identificare la configurazione che definisce.

  5. Apri il file template.yaml nell'editor di codice di Cloud Shell o, se utilizzi gcloud CLI, l'editor di testo che preferisci.

    Per aprire l'editor di codice Cloud Shell, fai clic sull'icona a forma di matita nell'angolo in alto a destra della finestra del terminale Cloud Shell.

  6. Nel file template.yaml, completa la definizione del sistema SAP HANA principale. Specifica i valori delle proprietà sostituendo le parentesi e i relativi contenuti con i valori dell'installazione. Le proprietà sono descritte nella tabella seguente.

    Per creare le istanze VM senza installare SAP HANA, elimina o commenta tutte le righe che iniziano con sap_hana_.

    Proprietà Tipo di dati Descrizione
    Tipo Stringa

    Specifica la posizione, il tipo e la versione del modello di Deployment Manager da utilizzare durante il deployment.

    Il file YAML include due specifiche type, una delle quali è commentata. La specifica type attiva per impostazione predefinita specifica la versione del modello come latest. La specifica type commentata specifica una versione specifica del modello con un timestamp.

    Se vuoi che tutti i deployment utilizzino la stessa versione del modello, utilizza la specifica type che include il timestamp.

    instanceName Stringa Il nome dell'istanza VM attualmente in fase di definizione. Specifica nomi diversi nelle definizioni delle VM primarie e secondarie. I nomi devono essere specificati in lettere minuscole, numeri o trattini.
    instanceType Stringa Il tipo di macchina virtuale Compute Engine su cui devi eseguire SAP HANA. Se hai bisogno di un tipo di VM personalizzata, specifica un tipo di VM predefinito con un numero di vCPU più vicino al numero necessario, pur essendo più grande. Al termine del deployment, modifica il numero di vCPU e la quantità di memoria Il valore minimo consigliato di instanceType per l'istanza del creatore di maggioranza è n1-standard-2 o l'equivalente di almeno 2 core CPU e 2 GB di memoria.
    zone Stringa La zona Google Cloud in cui eseguire il deployment dell'istanza VM che stai definendo. Specifica zone diverse nella stessa regione per le definizioni delle istanze principali di HANA, HANA secondaria e del creatore di maggioranza . Le zone devono trovarsi nella stessa regione selezionata per la subnet.
    subnetwork Stringa Il nome della subnet creata in un passaggio precedente. Se esegui il deployment in un VPC condiviso, specifica questo valore come [SHAREDVPC_PROJECT]/[SUBNETWORK]. Ad esempio, myproject/network1.
    linuxImage Stringa Il nome della famiglia di immagini o di immagini del sistema operativo Linux che utilizzi con SAP HANA. Per specificare una famiglia di immagini, aggiungi il prefisso family/ al nome della famiglia. Ad esempio, family/sles-15-sp1-sap. Per specificare un'immagine specifica, specifica solo il nome dell'immagine. Per l'elenco delle immagini e delle famiglie disponibili, consulta la pagina Immagini nella console Google Cloud.
    linuxImageProject Stringa Il progetto Google Cloud che contiene l'immagine che utilizzerai. Può trattarsi di un tuo progetto personale o di un progetto di immagini Google Cloud, ad esempio suse-sap-cloud. Per saperne di più sui progetti immagine di Google Cloud, consulta la pagina Immagini nella documentazione di Compute Engine.
    sap_hana_deployment_bucket Stringa Il nome del bucket Google Cloud Storage nel progetto che contiene i file di installazione e revisione di SAP HANA che hai caricato in un passaggio precedente. Qualsiasi file di revisione dell'upgrade nel bucket viene applicato a SAP HANA durante il processo di deployment.
    sap_hana_sid Stringa L'ID sistema (SID) SAP HANA. L'ID deve essere composto da tre caratteri alfanumerici e deve iniziare con una lettera. Tutte le lettere devono essere in maiuscolo.
    sap_hana_instance_number Numero intero Il numero di istanza, da 0 a 99, del sistema SAP HANA. Il valore predefinito è 0.
    sap_hana_sidadm_password Stringa La password dell'amministratore del sistema operativo. Le password devono contenere almeno otto caratteri e includere almeno una lettera maiuscola, una lettera minuscola e un numero.
    sap_hana_system_password Stringa La password per il super user del database. Le password devono contenere almeno 8 caratteri e includere almeno una lettera maiuscola, una lettera minuscola e un numero.
    sap_hana_sidadm_uid Numero intero Il valore predefinito dell'ID utente SID_LCadm è 900 per evitare che i gruppi creati dall'utente siano in conflitto con SAP HANA. Se necessario, puoi cambiarlo con un valore diverso.
    sap_hana_sapsys_gid Numero intero L'ID gruppo predefinito per sapsys è 79. Specificando un valore riportato sopra, puoi sostituirlo in base ai tuoi requisiti.
    sap_hana_scaleout_nodes Numero intero Specifica 1 o un valore superiore.
    sap_hana_shared_nfs Stringa Il punto di montaggio NFS per il volume /hana/shared. Ad esempio, 10.151.91.122:/hana_shared_nfs.
    sap_hana_backup_nfs Stringa Il punto di montaggio NFS per il volume /hanabackup. Ad esempio, 10.216.41.122:/hana_backup_nfs.
    networkTag Stringa Un tag di rete che rappresenta l'istanza VM a scopo di firewall o di routing. Se specifichi publicIP: No e non specifichi un tag di rete, assicurati di fornire un altro mezzo per accedere a internet.
    nic_type Stringa Facoltativo ma consigliato se disponibile per la macchina e la versione del sistema operativo di destinazione. Specifica l'interfaccia di rete da utilizzare con l'istanza VM. Puoi specificare il valore GVNIC o VIRTIO_NET. Per utilizzare un NIC virtuale di Google (gVNIC), devi specificare un'immagine del sistema operativo che supporta gVNIC come valore per la proprietà linuxImage. Per l'elenco delle immagini del sistema operativo, vedi Dettagli sul sistema operativo.

    Se non specifichi un valore per questa proprietà, l'interfaccia di rete viene selezionata automaticamente in base al tipo di macchina specificato per la proprietà instanceType.

    Questo argomento è disponibile nelle versioni dei modelli Deployment Manager 202302060649 o successive.
    publicIP Booleano Facoltativo. Determina se un indirizzo IP pubblico viene aggiunto all'istanza VM. Il valore predefinito è Yes.
    serviceAccount Stringa Facoltativo. Specifica un account di servizio che deve essere utilizzato dalle VM host e dai programmi in esecuzione sulle VM host. Specifica l'indirizzo email dell'account di servizio. ad esempio svc-acct-name@project-id.iam.gserviceaccount.com. Per impostazione predefinita, viene utilizzato l'account di servizio predefinito di Compute Engine. Per maggiori informazioni, consulta Gestione di identità e accessi per programmi SAP su Google Cloud.
  7. Crea la definizione del sistema SAP HANA secondario copiando la definizione del sistema SAP HANA principale e incollando la copia dopo la definizione del sistema SAP HANA principale. Esamina gli esempi riportati di seguito.

  8. Nella definizione del sistema SAP HANA secondario, specifica valori diversi per le seguenti proprietà rispetto a quelli specificati nella definizione del sistema SAP HANA principale:

    • name
    • instanceName
    • zone
  9. Scarica il file di configurazione della maggior parte delle istanze del produttore sap_majoritymaker.yaml:

    wget https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_majoritymaker/template.yaml -O sap_majoritymaker.yaml
  10. Copia e incolla la specifica YAML dal file sap_majoritymaker.yaml, a partire dalla riga 6, in fondo al file SAP HANA template.yaml.

  11. Completa la definizione per l'istanza del creatore di maggioranza:

    • Specifica un valore zone diverso dai due sistemi SAP HANA.
    • Il valore minimo consigliato di instanceType è n1-standard-2 o l'equivalente di almeno 2 core CPU e 2 GB di memoria.

    Ora dovresti avere tre risorse elencate nel tuo file YAML, due cluster SAP HANA e un'istanza del creatore di maggioranza, insieme alle relative proprietà configurabili.

  12. Crea le istanze:

    gcloud deployment-manager deployments create DEPLOYMENT_NAME --config TEMPLATE_NAME.yaml

    Il comando riportato sopra richiama Deployment Manager, che esegue il deployment delle VM, scarica il software SAP HANA dal tuo bucket di archiviazione e installa SAP HANA, il tutto in base alle specifiche nel tuo file template.yaml.

    L'elaborazione del deployment prevede due fasi. Nella prima fase, Deployment Manager scrive il proprio stato nella console. Nella seconda fase, gli script di deployment scrivono il proprio stato in Cloud Logging.

Esempio di file di configurazione template.yaml completo

L'esempio seguente mostra un file di configurazione template.yaml completato che esegue il deployment di due cluster a scalabilità orizzontale con un sistema SAP HANA installato e una singola istanza VM che funge da produttore di maggioranza.

Il file contiene le definizioni di due risorse di cui eseguire il deployment: sap_hana_primary e sap_hana_secondary. Ogni definizione di risorsa contiene le definizioni di una VM e di un'istanza SAP HANA.

La definizione della risorsa sap_hana_secondary è stata creata copiando e incollando la prima definizione e poi modificando i valori delle proprietà name, instanceName e zone. Tutti gli altri valori delle proprietà nelle due definizioni di risorsa sono gli stessi.

Le proprietà networkTag, serviceAccount, sap_hana_sidadm_uid e sap_hana_sapsys_gid provengono dalla sezione Opzioni avanzate del modello del file di configurazione. Le proprietà sap_hana_sidadm_uid e sap_hana_sapsys_gid sono incluse per mostrare i loro valori predefiniti, che vengono utilizzati perché le proprietà sono commentate.

resources:
- name: sap_hana_primary
  type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_hana/sap_hana.py
  #
  # By default, this configuration file uses the latest release of the deployment
  # scripts for SAP on Google Cloud.  To fix your deployments to a specific release
  # of the scripts, comment out the type property above and uncomment the type property below.
  #
  # type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/yyyymmddhhmm/dm-templates/sap_hana/sap_hana.py
  #
  properties:
    instanceName: hana-ha-vm-1
    instanceType: n2-highmem-32
    zone: us-central1-a
    subnetwork: example-subnet-us-central1
    linuxImage: family/sles-15-sp1-sap
    linuxImageProject: suse-sap-cloud
    sap_hana_deployment_bucket: hana2-sp4-rev46
    sap_hana_sid: HA1
    sap_hana_instance_number: 22
    sap_hana_sidadm_password: Tempa55word
    sap_hana_system_password: Tempa55word
    sap_hana_scaleout_nodes: 2
    sap_hana_shared_nfs: 10.151.91.123:/hana_shared_nfs
    sap_hana_backup_nfs: 10.216.41.123:/hana_backup_nfs
    networkTag: cluster-ntwk-tag
    serviceAccount: limited-roles@example-project-123456.iam.gserviceaccount.com
    # sap_hana_sidadm_uid: 900
    # sap_hana_sapsys_gid: 79

- name: sap_hana_secondary
  type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_hana/sap_hana.py
  #
  # By default, this configuration file uses the latest release of the deployment
  # scripts for SAP on Google Cloud.  To fix your deployments to a specific release
  # of the scripts, comment out the type property above and uncomment the type property below.
  #
  # type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/yyyymmddhhmm/dm-templates/sap_hana/sap_hana.py
  #
  properties:
    instanceName: hana-ha-vm-2
    instanceType: n2-highmem-32
    zone: us-central1-c
    subnetwork: example-subnet-us-central1
    linuxImage: family/sles-15-sp1-sap
    linuxImageProject: suse-sap-cloud
    sap_hana_deployment_bucket: hana2-sp4-rev46
    sap_hana_sid: HA1
    sap_hana_instance_number: 22
    sap_hana_sidadm_password: Google123
    sap_hana_system_password: Google123
    sap_hana_scaleout_nodes: 2
    sap_hana_shared_nfs: 10.141.91.124:/hana_shared_nfs
    sap_hana_backup_nfs: 10.106.41.124:/hana_backup_nfs
    networkTag: cluster-ntwk-tag
    serviceAccount: limited-roles@example-project-123456.iam.gserviceaccount.com
    # sap_hana_sidadm_uid: 900
    # sap_hana_sapsys_gid: 79
    
- name: sap_majoritymaker
  type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_majoritymaker/sap_majoritymaker.py
  #
  # By default, this configuration file uses the latest release of the deployment
  # scripts for SAP on Google Cloud.  To fix your deployments to a specific release
  # of the scripts, comment out the type property above and uncomment the type property below.
  #
  # type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/202208181245/dm-templates/sap_majoritymaker/sap_majoritymaker.py
  properties:
    instanceName: sap-majoritymaker
    instanceType: n1-standard-2
    zone: us-central1-b
    subnetwork: example-subnet-us-central1
    linuxImage: family/sles-15-sp1-sap
    linuxImageProject: suse-sap-cloud
    publicIP: No
    

Creare regole firewall che consentono l'accesso alle VM host

Se non lo hai già fatto, crea regole firewall che consentano l'accesso a ogni VM host dalle seguenti origini:

  • Ai fini della configurazione, la workstation locale, un bastion host o un jump server
  • Per l'accesso tra i nodi del cluster, le altre VM host nel cluster ad alta disponibilità

Quando crei regole firewall VPC, specifichi i tag di rete definiti nel file di configurazione template.yaml per designare le VM host come destinazione per la regola.

Per verificare il deployment, definisci una regola per consentire le connessioni SSH sulla porta 22 da un bastion host o dalla tua workstation locale.

Per l'accesso tra i nodi cluster, aggiungi una regola firewall che consenta tutti i tipi di connessione su qualsiasi porta da altre VM nella stessa subnet.

Assicurati che vengano create le regole firewall per verificare il deployment e per la comunicazione tra cluster prima di passare alla sezione successiva. Per le istruzioni, vedi Aggiunta delle regole firewall.

Verifica del deployment delle VM e SAP HANA

Per verificare il deployment, controlla i log del deployment in Cloud Logging e i dischi e i servizi sulle VM degli host principali e secondari.

  1. Nella console Google Cloud, apri Cloud Logging per monitorare l'avanzamento dell'installazione e verificare l'eventuale presenza di errori.

    Vai a Cloud Logging

  2. Filtra i log:

    Esplora log

    1. Nella pagina Esplora log, vai al riquadro Query.

    2. Nel menu a discesa Risorsa, seleziona Globale e fai clic su Aggiungi.

      Se non vedi l'opzione Globale, inserisci la seguente query nell'Editor query:

      resource.type="global"
      "Deployment"
      
    3. Fai clic su Esegui query.

    Visualizzatore log legacy

    • Nella pagina Visualizzatore log legacy, dal menu del selettore di base, seleziona Globale come risorsa di logging.
  3. Analizza i log filtrati:

    • Se viene visualizzato "--- Finished", l'elaborazione del deployment è completata e puoi andare al passaggio successivo.
    • Se viene visualizzato un errore di quota:

      1. Nella pagina Quote di IAM e amministrazione, aumenta le quote che non soddisfano i requisiti di SAP HANA elencati nella Guida alla pianificazione di SAP HANA.

      2. Nella pagina Deployment di Deployment Manager, elimina il deployment per ripulire le VM e i dischi permanenti dall'installazione non riuscita.

      3. Esegui nuovamente il deployment.

Controllare lo stato di deployment dell'autore della maggioranza

Puoi controllare lo stato del deployment del creatore di maggioranza utilizzando il comando seguente.

gcloud compute instances describe MAJORITY_MAKER_HOSTNAME --zone MAJORITY_MAKER_ZONE --format="table[box,title='Deployment Status'](name:label=Instance_Name,metadata.items.status:label=Status)"

Se è visualizzato lo stato Complete, l'elaborazione del deployment è riuscita per l'istanza del creatore di maggior parte. Per un deployment in corso, viene visualizzato lo stato <blank>.

Verifica la configurazione delle VM e di SAP HANA

  1. Una volta eseguito il deployment del sistema SAP HANA senza errori, connettiti a ogni VM utilizzando SSH. Nella pagina Istanze VM di Compute Engine, puoi fare clic sul pulsante SSH per ogni istanza VM o utilizzare il tuo metodo SSH preferito.

    Pulsante SSH nella pagina delle istanze VM di Compute Engine.

  2. Passa all'utente root.

    $ sudo su -
  3. Al prompt dei comandi, inserisci df -h. Su ogni VM, assicurati di visualizzare le directory /hana, ad esempio /hana/data.

    Filesystem                        Size  Used Avail Use% Mounted on
    /dev/sda2                          30G  4.0G   26G  14% /
    devtmpfs                          126G     0  126G   0% /dev
    tmpfs                             126G     0  126G   0% /dev/shm
    tmpfs                             126G   17M  126G   1% /run
    tmpfs                             126G     0  126G   0% /sys/fs/cgroup
    /dev/sda1                         200M  9.7M  191M   5% /boot/efi
    /dev/mapper/vg_hana-shared        251G   49G  203G  20% /hana/shared
    /dev/mapper/vg_hana-sap            32G  240M   32G   1% /usr/sap
    /dev/mapper/vg_hana-data          426G  7.0G  419G   2% /hana/data
    /dev/mapper/vg_hana-log           125G  4.2G  121G   4% /hana/log
    /dev/mapper/vg_hanabackup-backup  512G   33M  512G   1% /hanabackup
    tmpfs                              26G     0   26G   0% /run/user/900
    tmpfs                              26G     0   26G   0% /run/user/899
    tmpfs                              26G     0   26G   0% /run/user/1000
  4. Passa all'utente amministratore SAP sostituendo SID_LC nel comando seguente con l'ID sistema specificato nel modello di file di configurazione. Utilizza il minuscolo per tutte le lettere.

    # su - SID_LCadm
  5. Assicurati che i servizi SAP HANA, come hdbnameserver, hdbindexserver e altri, siano in esecuzione nell'istanza inserendo il comando seguente:

    > HDB info
  6. Se utilizzi RHEL per SAP 9.0 o versioni successive, assicurati che i pacchetti chkconfig e compat-openssl11 siano installati sulla tua istanza VM.

    Per maggiori informazioni da SAP, consulta la pagina relativa alla nota SAP 3108316 - Red Hat Enterprise Linux 9.x: Installazione e configurazione.

Convalida l'installazione dell'agente di Google Cloud per SAP

Dopo aver eseguito il deployment di una VM e aver installato il sistema SAP, verifica che l'agente per SAP di Google Cloud funzioni correttamente.

Verifica che l'agente di Google Cloud per SAP sia in esecuzione

Per verificare che l'agente sia in esecuzione:

  1. Stabilisci una connessione SSH con la tua istanza VM host.

  2. Esegui questo comando:

    systemctl status google-cloud-sap-agent

    Se l'agente funziona correttamente, l'output contiene active (running). Ad esempio:

    google-cloud-sap-agent.service - Google Cloud Agent for SAP
    Loaded: loaded (/usr/lib/systemd/system/google-cloud-sap-agent.service; enabled; vendor preset: disabled)
    Active:  active (running)  since Fri 2022-12-02 07:21:42 UTC; 4 days ago
    Main PID: 1337673 (google-cloud-sa)
    Tasks: 9 (limit: 100427)
    Memory: 22.4 M (max: 1.0G limit: 1.0G)
    CGroup: /system.slice/google-cloud-sap-agent.service
           └─1337673 /usr/bin/google-cloud-sap-agent
    

Se l'agente non è in esecuzione, riavvialo.

Verificare che l'agente host SAP stia ricevendo le metriche

Per verificare che le metriche dell'infrastruttura vengano raccolte dall'agente per SAP di Google Cloud e inviate correttamente all'agente host SAP, segui questi passaggi:

  1. Nel tuo sistema SAP, inserisci la transazione ST06.
  2. Nel riquadro Panoramica, controlla la disponibilità e il contenuto dei seguenti campi per la corretta configurazione end-to-end dell'infrastruttura di monitoraggio SAP e Google:

    • Cloud Provider: Google Cloud Platform
    • Accesso a Monitoring avanzato: TRUE
    • Dettagli sul monitoraggio avanzato: ACTIVE

Configura il monitoraggio per SAP HANA

Facoltativamente, puoi monitorare le istanze SAP HANA utilizzando l'agente per SAP di Google Cloud. Dalla versione 2.0, puoi configurare l'agente per raccogliere le metriche di monitoraggio di SAP HANA e inviarle a Cloud Monitoring. Cloud Monitoring consente di creare dashboard per visualizzare queste metriche, configurare avvisi basati su soglie delle metriche e altro ancora.

Per ulteriori informazioni sulla raccolta delle metriche di monitoraggio SAP HANA utilizzando l'agente per SAP di Google Cloud, consulta Raccolta delle metriche di monitoraggio di SAP HANA.

(Facoltativo) Crea un elenco di istanze per l'automazione degli script

Per automatizzare parzialmente alcune delle attività ripetitive durante la configurazione del sistema SAP HANA e del cluster Pacemaker, puoi utilizzare gli script bash. Nell'ambito di questa guida, questi script bash vengono utilizzati per velocizzare la configurazione del tuo sistema SAP HANA e del tuo cluster Pacemaker. Questi script richiedono come input un elenco di tutte le istanze VM di cui è stato eseguito il deployment e le zone corrispondenti.

Per abilitare questa automazione, crea un file denominato nodes.txt e includi i dettagli di tutte le istanze VM di cui è stato eseguito il deployment nel seguente formato: nome della zona, spazio vuoto e poi nome dell'istanza VM. Il seguente file di esempio viene utilizzato in questa guida:

# cat nodes.txt
  us-west1-a hana-ha-vm-1
  us-west1-a hana-ha-vm-1w1
  us-west1-a hana-ha-vm-1w2
  us-west1-b hana-majoritymaker
  us-west1-c hana-ha-vm-2
  us-west1-c hana-ha-vm-2w1
  us-west1-c hana-ha-vm-2w2
 

Configurazione dell'accesso SSH senza password

Per configurare il cluster Pacemaker e sincronizzare le chiavi dell'archivio sicuro SAP HANA (SSFS), è necessario l'accesso SSH senza password tra tutti i nodi, inclusa l'istanza principale. Per l'accesso SSH senza password, devi aggiungere le chiavi pubbliche SSH ai metadati dell'istanza di tutte le istanze di cui è stato eseguito il deployment.

Il formato dei metadati è USERNAME: PUBLIC-KEY-VALUE.

Per saperne di più sull'aggiunta di chiavi SSH alle VM, consulta Aggiungere chiavi SSH alle VM che utilizzano chiavi SSH basate su metadati.

Procedura manuale

  1. Per ogni istanza nei sistemi primari e secondari, nonché nell'istanza del creatore di maggioranza, raccogli la chiave pubblica per l'utente root.

    gcloud compute ssh --quiet --zone ZONE_ID INSTANCE_NAME -- sudo cat /root/.ssh/id_rsa.pub
  2. Anteponi la stringa root: alla chiave e scrivi la chiave come nuova riga nel file denominato public-ssh-keys.txt, ad esempio:

    root:ssh-rsa AAAAB3NzaC1JfuYnOI1vutCs= root@INSTANCE_NAME
  3. Dopo aver raccolto tutte le chiavi pubbliche SSH, carica le chiavi come metadati in tutte le istanze:

    gcloud compute instances add-metadata --metadata-from-file ssh-keys=public-ssh-keys.txt --zone ZONE_ID INSTANCE_NAME

Passaggi automatici

In alternativa, per automatizzare il processo di configurazione dell'accesso SSH senza password per tutte le istanze elencate in nodes.txt, esegui questi passaggi dalla console Google Cloud:

  1. Crea un elenco di chiavi pubbliche da tutte le istanze di cui è stato eseguito il deployment:

    while read -u10 ZONE HOST ;  do echo "Collecting public-key from $HOST"; { echo 'root:'; gcloud compute ssh --quiet --zone $ZONE $HOST --tunnel-through-iap -- sudo cat /root/.ssh/id_rsa.pub; } | tr -ds '\n' " " >> public-ssh-keys.txt; done 10< nodes.txt

  2. Assegna le chiavi pubbliche SSH come voci di metadati a tutte le istanze:

    while read -u10 ZONE HOST ;  do echo "Adding public keys to $HOST"; gcloud compute instances add-metadata --metadata-from-file ssh-keys=public-ssh-keys.txt --zone $ZONE $HOST; done 10< nodes.txt 

Disabilita l'avvio automatico di SAP HANA

Procedura manuale

Per ogni istanza SAP HANA nel cluster, assicurati che l'avvio automatico di SAP HANA sia disabilitato. Per i failover, Pacemaker gestisce l'avvio e l'arresto delle istanze SAP HANA in un cluster.

  1. Su ogni host come SID_LCadm, interrompi SAP HANA:

    > HDB stop
  2. Su ogni host, apri il profilo SAP HANA utilizzando un editor, ad esempio vi:

    vi /usr/sap/SID/SYS/profile/SID_HDBINST_NUM_HOST_NAME
  3. Imposta la proprietà Autostart su 0:

    Autostart=0
  4. Salva il profilo.

  5. Avvia SAP HANA su ciascun host come SID_LCadm:

    > HDB start

Passaggi automatici

In alternativa, per disabilitare l'avvio automatico di SAP HANA per tutte le istanze elencate in nodes.txt, esegui lo script seguente dalla console Google Cloud:

while read -u10 ZONE HOST ;
 do gcloud compute ssh --verbosity=none --zone $ZONE $HOST -- "echo Setting Autostart=0 on \$HOSTNAME;
 sudo sed -i 's/Autostart=1/Autostart=0/g' /usr/sap/SID/SYS/profile/SID_HDBINST_NUM_\$HOSTNAME";
 done 10< nodes.txt
 

Abilita il riavvio rapido di SAP HANA

Google Cloud consiglia vivamente di abilitare il riavvio rapido di SAP HANA per ogni istanza di SAP HANA, in particolare per le istanze più grandi. Il riavvio rapido SAP HANA riduce i tempi di riavvio in caso di chiusura di SAP HANA, ma il sistema operativo rimane in esecuzione.

Come configurato dagli script di automazione forniti da Google Cloud, le impostazioni del sistema operativo e del kernel supportano già il riavvio rapido SAP HANA. Devi definire il file system tmpfs e configurare SAP HANA.

Per definire il file system tmpfs e configurare SAP HANA, puoi seguire i passaggi manuali o utilizzare lo script di automazione fornito da Google Cloud per abilitare il riavvio rapido SAP HANA. Per ulteriori informazioni, consulta:

Per le istruzioni autorevoli complete per il riavvio rapido di SAP HANA, consulta la documentazione relativa all'opzione di riavvio rapido di SAP HANA.

Procedura manuale

Configura il file system tmpfs

Una volta eseguito il deployment delle VM host e dei sistemi SAP HANA di base, devi creare e montare le directory per i nodi NUMA nel file system tmpfs.

Visualizza la topologia NUMA della tua VM

Prima di poter mappare il file system tmpfs richiesto, devi sapere quanti NUMA nodi ha la tua VM. Per visualizzare i nodi NUMA disponibili su una VM di Compute Engine, inserisci il seguente comando:

lscpu | grep NUMA

Ad esempio, un tipo di VM m2-ultramem-208 ha quattro nodi NUMA, numerati da 0 a 3, come mostrato nell'esempio seguente:

NUMA node(s):        4
NUMA node0 CPU(s):   0-25,104-129
NUMA node1 CPU(s):   26-51,130-155
NUMA node2 CPU(s):   52-77,156-181
NUMA node3 CPU(s):   78-103,182-207
Crea le NUMA directory dei nodi

Crea una directory per ogni nodo NUMA nella tua VM e imposta le autorizzazioni.

Ad esempio, per quattro nodi NUMA numerati da 0 a 3:

mkdir -pv /hana/tmpfs{0..3}/SID
chown -R SID_LCadm:sapsys /hana/tmpfs*/SID
chmod 777 -R /hana/tmpfs*/SID
Monta le directory dei nodi NUMA in tmpfs

Monta le directory del file system tmpfs e specifica una preferenza di nodo NUMA per ognuna con mpol=prefer:

SID specifica il SID con lettere maiuscole.

mount tmpfsSID0 -t tmpfs -o mpol=prefer:0 /hana/tmpfs0/SID
mount tmpfsSID1 -t tmpfs -o mpol=prefer:1 /hana/tmpfs1/SID
mount tmpfsSID2 -t tmpfs -o mpol=prefer:2 /hana/tmpfs2/SID
mount tmpfsSID3 -t tmpfs -o mpol=prefer:3 /hana/tmpfs3/SID
Aggiorna /etc/fstab

Per assicurarti che i punti di montaggio siano disponibili dopo il riavvio di un sistema operativo, aggiungi voci alla tabella del file system /etc/fstab:

tmpfsSID0 /hana/tmpfs0/SID tmpfs rw,relatime,mpol=prefer:0
tmpfsSID1 /hana/tmpfs1/SID tmpfs rw,relatime,mpol=prefer:1
tmpfsSID1 /hana/tmpfs2/SID tmpfs rw,relatime,mpol=prefer:2
tmpfsSID1 /hana/tmpfs3/SID tmpfs rw,relatime,mpol=prefer:3

(Facoltativo) Imposta limiti per l'utilizzo della memoria

Il file system tmpfs può crescere e ridursi in modo dinamico.

Per limitare la memoria utilizzata dal file system tmpfs, puoi impostare un limite per le dimensioni di un volume di nodi NUMA con l'opzione size. Ad esempio:

mount tmpfsSID0 -t tmpfs -o mpol=prefer:0,size=250G /hana/tmpfs0/SID

Puoi anche limitare l'utilizzo complessivo della memoria tmpfs per tutti i nodi NUMA per una determinata istanza SAP HANA e un determinato nodo server impostando il parametro persistent_memory_global_allocation_limit nella sezione [memorymanager] del file global.ini.

Configurazione SAP HANA per il riavvio rapido

Per configurare SAP HANA per il riavvio rapido, aggiorna il file global.ini e specifica le tabelle da archiviare in memoria permanente.

Aggiorna la sezione [persistence] nel file global.ini

Configura la sezione [persistence] nel file global.ini SAP HANA in modo che faccia riferimento alle località tmpfs. Separa ogni località tmpfs con un punto e virgola:

[persistence]
basepath_datavolumes = /hana/data
basepath_logvolumes = /hana/log
basepath_persistent_memory_volumes = /hana/tmpfs0/SID;/hana/tmpfs1/SID;/hana/tmpfs2/SID;/hana/tmpfs3/SID

L'esempio precedente specifica quattro volumi di memoria per quattro nodi NUMA, che corrisponde al m2-ultramem-208. Se utilizzi l'm2-ultramem-416, devi configurare otto volumi di memoria (0..7).

Riavvia SAP HANA dopo aver modificato il file global.ini.

SAP HANA può ora utilizzare la località tmpfs come spazio di memoria permanente.

Specifica le tabelle da archiviare in memoria permanente

Specifica specifiche tabelle di colonne o partizioni da archiviare in memoria permanente.

Ad esempio, per attivare la memoria permanente per una tabella esistente, esegui la query SQL:

ALTER TABLE exampletable persistent memory ON immediate CASCADE

Per modificare il valore predefinito per le nuove tabelle, aggiungi il parametro table_default nel file indexserver.ini. Ad esempio:

[persistent_memory]
table_default = ON

Per ulteriori informazioni su come controllare colonne, tabelle e quali viste di monitoraggio forniscono informazioni dettagliate, consulta Memoria permanente di SAP HANA.

Passaggi automatici

Lo script di automazione fornito da Google Cloud per abilitare il riavvio rapido di SAP HANA apporta modifiche alle directory /hana/tmpfs*, al file /etc/fstab e alla configurazione di SAP HANA. Quando esegui lo script, potrebbe essere necessario eseguire ulteriori passaggi a seconda che si tratti del deployment iniziale del tuo sistema SAP HANA o del ridimensionamento della tua macchina a una dimensione NUMA diversa.

Per il deployment iniziale del tuo sistema SAP HANA o ridimensionando la macchina in modo da aumentare il numero di nodi NUMA, assicurati che SAP HANA sia in esecuzione durante l'esecuzione dello script di automazione fornito da Google Cloud per abilitare il riavvio rapido di SAP HANA.

Quando ridimensioni la macchina per ridurre il numero di nodi NUMA, assicurati che SAP HANA sia arrestato durante l'esecuzione dello script di automazione fornito da Google Cloud per abilitare il riavvio rapido di SAP HANA. Dopo l'esecuzione dello script, devi aggiornare manualmente la configurazione SAP HANA per completare la configurazione del riavvio rapido di SAP HANA. Per ulteriori informazioni, consulta Configurazione di SAP HANA per il riavvio rapido.

Per abilitare il riavvio rapido di SAP HANA, segui questi passaggi:

  1. Stabilisci una connessione SSH con la VM host.

  2. Passa alla directory principale:

    sudo su -

  3. Scarica lo script sap_lib_hdbfr.sh:

    wget https://storage.googleapis.com/cloudsapdeploy/terraform/latest/terraform/lib/sap_lib_hdbfr.sh
  4. Rendi il file eseguibile:

    chmod +x sap_lib_hdbfr.sh
  5. Verifica che lo script non contenga errori:

    vi sap_lib_hdbfr.sh
    ./sap_lib_hdbfr.sh -help

    Se il comando restituisce un errore, contatta l'assistenza clienti Google Cloud. Per ulteriori informazioni su come contattare l'assistenza clienti, vedi Ricevere assistenza per SAP su Google Cloud.

  6. Esegui lo script dopo aver sostituito l'ID (SID) e la password di sistema SAP HANA per l'utente SYSTEM del database SAP HANA. Per fornire la password in modo sicuro, ti consigliamo di utilizzare un secret in Secret Manager.

    Esegui lo script utilizzando il nome di un secret in Secret Manager. Questo secret deve esistere nel progetto Google Cloud che contiene l'istanza VM dell'host.

    sudo ./sap_lib_hdbfr.sh -h 'SID' -s SECRET_NAME 

    Sostituisci quanto segue:

    • SID: specifica il SID con lettere maiuscole. Ad esempio, AHA.
    • SECRET_NAME: specifica il nome del secret corrispondente alla password per l'utente SYSTEM del database SAP HANA. Questo secret deve esistere nel progetto Google Cloud che contiene l'istanza VM host.

    In alternativa, puoi eseguire lo script utilizzando una password in testo normale. Dopo aver abilitato il riavvio rapido di SAP HANA, assicurati di cambiare la password. Non è consigliabile utilizzare una password in testo normale perché la password verrebbe registrata nella cronologia della riga di comando della VM.

    sudo ./sap_lib_hdbfr.sh -h 'SID' -p 'PASSWORD'

    Sostituisci quanto segue:

    • SID: specifica il SID con lettere maiuscole. Ad esempio, AHA.
    • PASSWORD: specifica la password per l'utente di sistema del database SAP HANA.

Per un'esecuzione iniziale riuscita, dovresti visualizzare un output simile al seguente:

INFO - Script is running in standalone mode
ls: cannot access '/hana/tmpfs*': No such file or directory
INFO - Setting up HANA Fast Restart for system 'TST/00'.
INFO - Number of NUMA nodes is 2
INFO - Number of directories /hana/tmpfs* is 0
INFO - HANA version 2.57
INFO - No directories /hana/tmpfs* exist. Assuming initial setup.
INFO - Creating 2 directories /hana/tmpfs* and mounting them
INFO - Adding /hana/tmpfs* entries to /etc/fstab. Copy is in /etc/fstab.20220625_030839
INFO - Updating the HANA configuration.
INFO - Running command: select * from dummy
DUMMY
"X"
1 row selected (overall time 4124 usec; server time 130 usec)

INFO - Running command: ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'SYSTEM') SET ('persistence', 'basepath_persistent_memory_volumes') = '/hana/tmpfs0/TST;/hana/tmpfs1/TST;'
0 rows affected (overall time 3570 usec; server time 2239 usec)

INFO - Running command: ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'SYSTEM') SET ('persistent_memory', 'table_unload_action') = 'retain';
0 rows affected (overall time 4308 usec; server time 2441 usec)

INFO - Running command: ALTER SYSTEM ALTER CONFIGURATION ('indexserver.ini', 'SYSTEM') SET ('persistent_memory', 'table_default') = 'ON';
0 rows affected (overall time 3422 usec; server time 2152 usec)

Scarica i pacchetti SUSE

Disinstalla gli agenti delle risorse utilizzati per i deployment di scale up e sostituiscili con quelli utilizzati per lo scale out.

Procedura manuale

Esegui i seguenti passaggi su tutti gli host, inclusa l'istanza di maggioranza maker:

  1. Disinstalla gli agenti delle risorse di scale up di HANA:

    zypper remove SAPHanaSR SAPHanaSR-doc
  2. Installa gli agenti di risorse con scale out di HANA:

    zypper in SAPHanaSR-ScaleOut SAPHanaSR-ScaleOut-doc
  3. Installa socat:

    zypper install socat
  4. Installa le patch del sistema operativo più recenti:

    zypper patch

Passaggi automatici

In alternativa, per automatizzare questo processo per tutte le istanze elencate in nodes.txt, esegui lo script seguente dalla console Google Cloud:

while read -u10 HOST ;  do gcloud compute ssh --zone $HOST -- "sudo zypper remove -y SAPHanaSR SAPHanaSR-doc; sudo zypper in -y SAPHanaSR-ScaleOut SAPHanaSR-ScaleOut-doc socat; sudo zypper patch -y"; done 10< nodes.txt

Esegui il backup dei database

Crea backup dei tuoi database per avviare il logging dei database per la replica del sistema SAP HANA e creare un punto di recupero.

Se hai più database tenant in una configurazione MDC, esegui il backup di ogni database tenant.

Il modello di Deployment Manager utilizza /hanabackup/data/SID come directory di backup predefinita.

Per creare backup dei nuovi database SAP HANA:

  1. Sull'host principale, passa a SID_LCadm. A seconda dell'immagine del sistema operativo, il comando potrebbe essere diverso.

    sudo -i -u SID_LCadm
  2. Crea backup dei database:

    • Per un sistema SAP HANA a singolo database e container:

      > hdbsql -t -u system -p SYSTEM_PASSWORD -i INST_NUM \
        "backup data using file ('full')"

      L'esempio seguente mostra una risposta riuscita da un nuovo sistema SAP HANA:

      0 rows affected (overall time 18.416058 sec; server time 18.414209 sec)
    • Per un sistema multi-database-container (MDC) SAP HANA, crea un backup del database di sistema e di eventuali database tenant:

      > hdbsql -t -d SYSTEMDB -u system -p SYSTEM_PASSWORD -i INST_NUM \
        "backup data using file ('full')"
      > hdbsql -t -d SID -u system -p SYSTEM_PASSWORD -i INST_NUM \
        "backup data using file ('full')"

    L'esempio seguente mostra una risposta riuscita da un nuovo sistema SAP HANA:

    0 rows affected (overall time 16.590498 sec; server time 16.588806 sec)
  3. Conferma che la modalità di logging sia impostata su normale:

    > hdbsql -u system -p SYSTEM_PASSWORD -i INST_NUM \
      "select value from "SYS"."M_INIFILE_CONTENTS" where key='log_mode'"

    Dovresti vedere:

    VALUE
    "normal"

Abilita la replica del sistema SAP HANA

Nell'ambito dell'abilitazione della replica del sistema SAP HANA, devi copiare i dati e i file delle chiavi per gli archivi sicuri SAP HANA sul file system (SSFS) dall'host principale all'host secondario. Il metodo utilizzato da questa procedura per copiare i file è solo uno dei possibili metodi.

  1. Nell'host principale come SID_LCadm, abilita la replica di sistema:

    > hdbnsutil -sr_enable --name=PRIMARY_HOST_NAME
  2. Sull'host secondario:

    1. Come SID_LCadm, interrompi SAP HANA:

      > sapcontrol -nr INST_NUM -function StopSystem
    2. Come root, archivia i dati SSFS esistenti e i file delle chiavi:

      # cd /usr/sap/SID/SYS/global/security/rsecssfs/
      # mv data/SSFS_SID.DAT data/SSFS_SID.DAT-ARC
      # mv key/SSFS_SID.KEY key/SSFS_SID.KEY-ARC
    3. Copia il file di dati dall'host principale:

      # scp -o StrictHostKeyChecking=no \
      PRIMARY_HOST_NAME:/usr/sap/SID/SYS/global/security/rsecssfs/data/SSFS_SID.DAT \
      /usr/sap/SID/SYS/global/security/rsecssfs/data/SSFS_SID.DAT
    4. Copia il file della chiave dall'host principale:

      # scp -o StrictHostKeyChecking=no \
      PRIMARY_HOST_NAME:/usr/sap/SID/SYS/global/security/rsecssfs/key/SSFS_SID.KEY \
      /usr/sap/SID/SYS/global/security/rsecssfs/key/SSFS_SID.KEY
    5. Aggiorna la proprietà dei file:

      # chown SID_LCadm:sapsys /usr/sap/SID/SYS/global/security/rsecssfs/data/SSFS_SID.DAT
      # chown SID_LCadm:sapsys /usr/sap/SID/SYS/global/security/rsecssfs/key/SSFS_SID.KEY
    6. Aggiorna le autorizzazioni per i file:

      # chmod 644 /usr/sap/SID/SYS/global/security/rsecssfs/data/SSFS_SID.DAT
      # chmod 640 /usr/sap/SID/SYS/global/security/rsecssfs/key/SSFS_SID.KEY
    7. Come SID_LCadm, registra il sistema SAP HANA secondario con la replica del sistema SAP HANA:

      > hdbnsutil -sr_register --remoteHost=PRIMARY_HOST_NAME --remoteInstance=INST_NUM \
      --replicationMode=syncmem --operationMode=logreplay --name=SECONDARY_HOST_NAME
    8. Come SID_LCadm, avvia SAP HANA:

      > sapcontrol -nr INST_NUM -function StartSystem

Convalida della replica del sistema in corso...

Nell'host principale come SID_LCadm, conferma che la replica del sistema SAP HANA sia attiva eseguendo il seguente script Python:

$ python $DIR_INSTANCE/exe/python_support/systemReplicationStatus.py

Se la replica è configurata correttamente, tra gli altri indicatori vengono visualizzati i seguenti valori per i servizi xsengine, nameserver e indexserver:

  • Il valore Secondary Active Status è YES
  • Il valore Replication Status è ACTIVE

Inoltre, l'overall system replication status mostra ACTIVE.

Abilita gli hook del provider SAP HANA/RE

SUSE consiglia di abilitare gli hook del provider ad alta disponibilità/RE di SAP HANA, in modo da consentire a SAP HANA di inviare notifiche per determinati eventi e migliorare il rilevamento degli errori. Gli hook dei provider SAP HANA/RE richiedono SAP HANA 2.0 SPS 03 o una versione successiva.

Completa i seguenti passaggi sia sul sito principale che su quello secondario:

  1. Come SID_LCadm, interrompi SAP HANA:

    > sapcontrol -nr 00 -function StopSystem

  1. Come root o SID_LCadm, apri il file global.ini per modificarlo:

    > vi /hana/shared/SID/global/hdb/custom/config/global.ini
  2. Aggiungi le seguenti definizioni al file global.ini:

    [ha_dr_provider_saphanasrmultitarget]
    provider = SAPHanaSrMultiTarget
    path = /usr/share/SAPHanaSR-ScaleOut/
    execution_order = 1
    
    [ha_dr_provider_sustkover]
    provider = susTkOver
    path = /usr/share/SAPHanaSR-ScaleOut/
    execution_order = 2
    sustkover_timeout = 30
    
    [ha_dr_provider_suschksrv]
    provider = susChkSrv
    path = /usr/share/SAPHanaSR-ScaleOut/
    execution_order = 3
    action_on_lost = stop
    
    [trace]
    ha_dr_saphanasrmultitarget = info
    ha_dr_sustkover = info

  3. Come root, crea un file di configurazione personalizzato nella directory /etc/sudoers.d eseguendo questo comando. Questo nuovo file di configurazione consente all'utente SID_LCadm di accedere agli attributi dei nodi cluster quando viene richiamato il metodo di hook srConnectionChanged().

    > sudo visudo -f /etc/sudoers.d/SAPHanaSR
  4. Nel file /etc/sudoers.d/SAPHanaSR, aggiungi il seguente testo:

    Sostituisci SID_LC con il SID in lettere minuscole.

    SID_LCadm ALL=(ALL) NOPASSWD: /usr/sbin/crm_attribute -n hana_SID_LC_site_srHook_*
    SID_LCadm ALL=(ALL) NOPASSWD: /usr/sbin/crm_attribute -n hana_SID_LC_gsh *
    SID_LCadm ALL=(ALL) NOPASSWD: /usr/sbin/SAPHanaSR-hookHelper --sid=SID_LC *

  5. Assicurati che nel file /etc/sudoers sia incluso il seguente testo:

    • Per SLES for SAP 15 SP3 e versioni successive:

      @includedir /etc/sudoers.d

    • Per le versioni fino a SLES for SAP 15 SP2:

      #includedir /etc/sudoers.d

      Tieni presente che # in questo testo fa parte della sintassi e non significa che la riga è un commento.

  6. Come SID_LCadm, avvia SAP HANA:

    > sapcontrol -nr 00 -function StartSystem

  7. Dopo aver completato la configurazione del cluster per SAP HANA, puoi verificare che l'hook funzioni correttamente durante un test di failover come descritto in Risoluzione dei problemi relativi all'hook python SAPHanaSR e Il takeover del cluster ad alta disponibilità richiede troppo tempo in caso di errore del server di indice HANA.

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

Prenota un indirizzo IP per l'IP virtuale

L'indirizzo IP virtuale (VIP), talvolta indicato come indirizzo IP mobile, 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.

  1. Apri Cloud Shell:

    Vai a Cloud Shell

  2. Prenotare un indirizzo IP per l'IP virtuale. Questo è l'indirizzo IP che le applicazioni utilizzano per accedere a SAP HANA. Se ometti il flag --addresses, viene scelto automaticamente un indirizzo IP nella subnet specificata:

    $ gcloud compute addresses create VIP_NAME \
      --region CLUSTER_REGION --subnet CLUSTER_SUBNET \
      --addresses VIP_ADDRESS

    Per saperne di più sulla prenotazione di un IP statico, consulta Prenotare un indirizzo IP interno statico.

  3. Conferma prenotazione indirizzo IP:

    $ gcloud compute addresses describe VIP_NAME \
      --region CLUSTER_REGION

    Dovresti vedere un output simile al seguente esempio:

    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

  1. In Cloud Shell, crea due gruppi di istanze non gestite e assegna la VM dell'host master principale a uno e la VM dell'host master secondario all'altro:

    $ 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_NAME
    
  2. Conferma la creazione dei gruppi di istanze:

    $ gcloud compute instance-groups unmanaged list

    Dovresti vedere un output simile al seguente esempio:

    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

  1. In Cloud Shell, crea il controllo di integrità. Scegline una che rientra nell'intervallo privato, 49152-65535, per evitare conflitti con altri servizi. I valori di timeout e intervallo di controllo sono leggermente più lunghi dei valori predefiniti, in modo da aumentare la tolleranza di 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=2
  2. Conferma la creazione del controllo di integrità:

    $ gcloud compute health-checks describe HEALTH_CHECK_NAME

    Dovresti 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 integrità di Compute Engine, 35.191.0.0/16 e 130.211.0.0/22. Per maggiori informazioni, consulta Creazione di regole firewall per i controlli di integrità.

  1. Se non ne hai già uno, aggiungi un tag di rete alle VM host. Questo tag di rete è 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_ZONE
    
  2. Se 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_NUM

    Ad 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

  1. 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-checks
  2. Aggiungi il gruppo di istanze principale 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_REGION
  3. Aggiungi 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_REGION
  4. Creare una regola di forwarding. Per l'indirizzo IP, specifica l'indirizzo IP che hai prenotato per il VIP. Se devi accedere al sistema SAP HANA dall'esterno della regione specificata di seguito, includi il flag --allow-global-access nella 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 ALL

    Per saperne di più sull'accesso tra regioni al tuo sistema ad alta disponibilità SAP HANA, consulta Bilanciamento del carico TCP/UDP interno.

Testa la configurazione del bilanciatore del carico

Anche se i gruppi di istanza di backend non si registrano come integri fino a dopo, puoi testare la configurazione del bilanciatore del carico impostando un listener che risponda ai controlli di integrità. Dopo aver configurato un listener, se il bilanciatore del carico è configurato correttamente, lo stato dei gruppi di istanza di backend diventa integro.

Le seguenti sezioni illustrano diversi metodi che puoi utilizzare per testare la configurazione.

Test del bilanciatore del carico con l'utilità socat

Puoi utilizzare l'utilità socat per rimanere temporaneamente in ascolto sulla porta per il controllo di integrità. Devi comunque installare l'utilità socat, perché la utilizzerai in seguito, quando configuri le risorse del cluster.

  1. Su entrambe le VM host master principali e secondarie come root, installa l'utilità socat:

    # zypper install -y socat

  2. Avvia un processo socat per rimanere in ascolto per 60 secondi sulla porta per il controllo di integrità:

    # timeout 60s socat - TCP-LISTEN:HLTH_CHK_PORT_NUM,fork

  3. In Cloud Shell, dopo aver atteso alcuni secondi affinché il controllo di integrità rilevasse il listener, controlla l'integrità dei gruppi di istanza di backend:

    $ gcloud compute backend-services get-health BACKEND_SERVICE_NAME \
      --region CLUSTER_REGION

    Dovresti 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 modificare temporaneamente il controllo di integrità in modo da utilizzare la porta 22, che include un listener in grado di rispondere al controllo di integrità.

Per utilizzare temporaneamente la porta 22:

  1. Fai clic sul controllo di integrità nella console:

    Vai alla pagina Controlli di integrità

  2. Fai clic su Modifica.

  3. Nel campo Porta, imposta il numero di porta su 22.

  4. Fai clic su Salva e attendi un paio di minuti.

  5. In Cloud Shell, controlla l'integrità dei gruppi di istanza di backend:

    $ gcloud compute backend-services get-health BACKEND_SERVICE_NAME \
      --region CLUSTER_REGION

    Dovresti 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
  6. Al termine, ripristina il numero di porta originale per il controllo di integrità.

Configurazione di pacemaker

La seguente procedura configura l'implementazione SUSE di un cluster Pacemaker sulle VM di Compute Engine per SAP HANA.

Per ulteriori informazioni sulla configurazione di cluster ad alta disponibilità su SLES, consulta la documentazione relativa all'estensione ad alta disponibilità di SUSE Linux Enterprise per la tua versione di SLES.

Scarica gli script dell'agente della risorsa

Procedura manuale

Come root su tutti gli host principali e secondari, nonché su quello che ha creato la maggioranza, scarica gli script richiesti per gli agenti delle risorse:

# mkdir -p /usr/lib64/stonith/plugins/external
# curl https://storage.googleapis.com/sapdeploy/pacemaker-gcp/gcpstonith -o /usr/lib64/stonith/plugins/external/gcpstonith
# chmod +x /usr/lib64/stonith/plugins/external/gcpstonith

Passaggi automatici

In alternativa, per scaricare gli script degli agenti delle risorse richiesti per tutte le istanze elencate in nodes.txt, esegui lo script seguente dalla console Google Cloud:

while read -u10 HOST ;  do gcloud compute ssh --tunnel-through-iap --quiet --zone $HOST -- "echo 'CLOUDSDK_PYTHON=/usr/bin/python' | sudo tee -a /etc/sysconfig/pacemaker; sudo curl --silent https://storage.googleapis.com/sapdeploy/pacemaker-gcp/gcpstonith -o /usr/lib64/stonith/plugins/external/gcpstonith; sudo chmod +x /usr/lib64/stonith/plugins/external/gcpstonith"; done 10< nodes.txt

Inizializza il cluster

Inizializza il cluster sull'host principale come root:

SLES 15

crm cluster init -y

SLES 12

ha-cluster-init -y

Ignora gli avvisi relativi a SBD e alla password predefinita. SBD e la password predefinita non vengono utilizzati in questo deployment.

Configura il cluster

Esegui i seguenti passaggi sull'host principale come root.

Abilita modalità di manutenzione

Attiva la modalità di manutenzione per il cluster Pacemaker:

crm configure property maintenance-mode="true"

Configura le proprietà generali del cluster

Configura le seguenti proprietà generali del cluster:

crm configure property stonith-timeout="300s"
crm configure property stonith-action="reboot"
crm configure property stonith-enabled="true"
crm configure property cluster-infrastructure="corosync"
crm configure property cluster-name="hacluster"
crm configure property placement-strategy="balanced"
crm configure property no-quorum-policy="freeze"
crm configure property concurrent-fencing="true"

crm configure rsc_defaults migration-threshold="50"
crm configure rsc_defaults resource-stickiness="1000"

crm configure op_defaults timeout="600"

Modifica le impostazioni predefinite di corosync.conf

  1. Apri il file /etc/corosync/corosync.conf utilizzando un editor a tua scelta.

  2. Rimuovi il parametro consensus.

  3. Modifica i parametri rimanenti in base ai suggerimenti di Google Cloud.

    La seguente tabella mostra i parametri totem per i quali Google Cloud consiglia valori, insieme all'impatto della modifica dei valori. Per i valori predefiniti di questi parametri, che possono variare tra le distribuzioni Linux, consulta la documentazione relativa alla distribuzione Linux.
    Parametro Valore consigliato Impatto della modifica del valore
    secauth off Disattiva l'autenticazione e la crittografia di tutti i messaggi totem.
    join 60 (ms) Aumenta il tempo di attesa del nodo per i messaggi join nel protocollo di appartenenza.
    max_messages 20 Aumenta il numero massimo di messaggi che potrebbero essere inviati dal nodo dopo la ricezione del token.
    token 20.000 (ms)

    Aumenta il tempo di attesa del nodo per un token di protocollo totem prima che il nodo dichiari una perdita di token, presume un errore del nodo e inizi a intervenire.

    L'aumento del valore del parametro token rende il cluster più tollerante a eventi infrastrutturali temporanei, come una migrazione live. Tuttavia, può anche allungare il tempo di rilevamento e ripristino da parte del cluster in caso di errore del nodo.

    Il valore del parametro token determina anche il valore predefinito del parametro consensus, che controlla per quanto tempo un nodo attende il consenso prima che venga raggiunto il consenso prima di tentare di ristabilire l'appartenenza alla configurazione.

    consensus N/D

    Specifica, in millisecondi, quanto tempo attendere il consenso per ottenere il consenso prima di iniziare un nuovo round di configurazione dell'appartenenza.

    Ti consigliamo di omettere questo parametro. Quando il parametro consensus non è specificato, Corosync imposta il suo valore su 1,2 volte il valore del parametro token. Se utilizzi il valore consigliato del parametro token di 20000, il parametro consesus viene impostato con il valore 24000.

    Se specifichi esplicitamente un valore per consensus, assicurati che il valore sia 24000 o 1.2*token, a seconda di quale sia maggiore.

    token_retransmits_before_loss_const 10 Aumenta il numero di ritrasmissioni del token che il nodo tenta di eseguire prima di concludere che il nodo destinatario ha esito negativo e intervenire.
    transport
    • Per SLES: udpu
    • Per RHEL 8 o versioni successive: knet
    • Per RHEL 7: udpu
    Specifica il meccanismo di trasporto utilizzato da corosync.

Unisci tutti gli host al cluster Pacemaker

Unisci tutti gli altri host, incluso il creatore di maggioranza, al cluster Pacemaker sull'host principale:

Procedura manuale

SLES 15

crm cluster join -y -c PRIMARY_HOST_NAME

SLES 12

ha-cluster-join -y -c PRIMARY_HOST_NAME

Passaggi automatici

In alternativa, per automatizzare questo processo per tutte le istanze elencate in nodes.txt, esegui lo script seguente dalla console Google Cloud:

while read -u10 HOST ;  do echo "Joining $HOST to Pacemaker cluster";
gcloud compute ssh --tunnel-through-iap --quiet --zone $HOST -- sudo ha-cluster-join -y -c PRIMARY_HOST_NAME;
done 10< nodes.txt

Ignora il messaggio di errore ERROR: cluster.join: Abort: Cluster is currently active che viene attivato quando unisci il nodo principale a se stesso.

Da qualsiasi host come root, verifica che il cluster mostri tutti i nodi:

# crm_mon -s

Dovresti vedere un output simile al seguente:

CLUSTER OK: 5 nodes online, 0 resources configured

Configurazione della recinzione

Puoi configurare la recinzione definendo una risorsa cluster con un agente di recinzione per ogni VM host.

Per garantire la corretta sequenza degli eventi dopo un'azione di recinzione, devi anche configurare il sistema operativo in modo da ritardare il riavvio di Corosync dopo il fencing di una VM. Puoi anche regolare il timeout del Pacemaker per i riavvii per tenere conto del ritardo.

Creare le risorse per i dispositivi di recinzione

Procedura manuale

Crea le risorse di recinzione per tutti i nodi del cluster primario e secondario come host principale:

  1. Esegui questo comando dopo aver sostituito PRIMARY_HOST_NAME con il nome host di un nodo nel cluster principale:

    # crm configure primitive STONITH-"PRIMARY_HOST_NAME" stonith:external/gcpstonith \
        op monitor interval="300s" timeout="120s" \
        op start interval="0" timeout="60s" \
        params instance_name="PRIMARY_HOST_NAME" gcloud_path="/usr/bin/gcloud" logging="yes" \
        pcmk_reboot_timeout=300 pcmk_monitor_retries=4 pcmk_delay_max=30
  2. Ripeti il passaggio precedente per tutti gli altri nodi nel cluster primario.

  3. Esegui questo comando dopo aver sostituito SECONDARY_HOST_NAME con il nome host di un nodo nel cluster secondario.

    # crm configure primitive STONITH-"SECONDARY_HOST_NAME" stonith:external/gcpstonith \
        op monitor interval="300s" timeout="120s" \
        op start interval="0" timeout="60s" \
        params instance_name="SECONDARY_HOST_NAME" gcloud_path="/usr/bin/gcloud" logging="yes" \
        pcmk_reboot_timeout=300 pcmk_monitor_retries=4
  4. Ripeti il passaggio precedente per tutti gli altri nodi nel cluster secondario.

  5. Esegui questo comando dopo aver sostituito MAJORITY_MAKER_HOSTNAME con il nome host dell'istanza del creatore di maggioranza:

    # crm configure primitive STONITH-"MAJORITY_MAKER_HOSTNAME" stonith:external/gcpstonith \
        op monitor interval="300s" timeout="120s" \
        op start interval="0" timeout="60s" \
        params instance_name="MAJORITY_MAKER_HOSTNAME" gcloud_path="/usr/bin/gcloud" logging="yes" \
        pcmk_reboot_timeout=300 pcmk_monitor_retries=4
  6. Imposta la posizione del dispositivo di recinzione:

    # crm configure location LOC_STONITH_"PRIMARY_HOST_NAME" \
        STONITH-"PRIMARY_HOST_NAME" -inf: "PRIMARY_HOST_NAME"

  7. Ripeti il passaggio precedente per tutti gli altri host sui cluster primari e secondari, incluso l'host che crea la maggioranza.

Passaggi automatici

In alternativa, per configurare la recinzione per tutte le istanze elencate in nodes.txt, esegui lo script seguente dalla console Google Cloud:

while read -u10 HOST;  do gcloud compute ssh --tunnel-through-iap --quiet --zone $HOST   -- "sudo crm configure primitive STONITH-\$HOSTNAME stonith:external/gcpstonith op monitor interval=\"300s\" timeout=\"60s\" on-fail=\"restart\" op start interval=\"0\" timeout=\"60s\" onfail=\"restart\" params instance_name=\$HOSTNAME gcloud_path=\"/usr/bin/gcloud\" logging=\"yes\" pcmk_reboot_timeout=300 pcmk_monitor_retries=4; sudo crm configure location LOC_STONITH_\$HOSTNAME STONITH-\$HOSTNAME -inf: \$HOSTNAME"; done 10< nodes.txt

Imposta un ritardo per il riavvio di Corosync

Procedura manuale

  1. Su tutti gli host come root, crea un file drop-in systemd che ritarda l'avvio di Corosync per garantire la corretta sequenza di eventi dopo il riavvio di una VM protetta:

    systemctl edit corosync.service
  2. Aggiungi le seguenti righe al file:

    [Service]
    ExecStartPre=/bin/sleep 60
  3. Salva il file e esci dall'editor.

  4. Ricarica la configurazione di Systemd Manager.

    systemctl daemon-reload
  5. Verifica la creazione del file dell'accesso:

    service corosync status

    Dovresti visualizzare una riga per il file personale, come mostrato nell'esempio seguente:

    ● corosync.service - Corosync Cluster Engine
       Loaded: loaded (/usr/lib/systemd/system/corosync.service; disabled; vendor preset: disabled)
      Drop-In: /etc/systemd/system/corosync.service.d
               └─override.conf
       Active: active (running) since Tue 2021-07-20 23:45:52 UTC; 2 days ago

Passaggi automatici

In alternativa, per automatizzare questo processo per tutte le istanze elencate in nodes.txt, esegui lo script seguente dalla console Google Cloud:

while read -u10 HOST;  do gcloud compute ssh --tunnel-through-iap --quiet --zone $HOST   --  "sudo mkdir -p /etc/systemd/system/corosync.service.d/; sudo echo -e '[Service]\nExecStartPre=/bin/sleep 60' | sudo tee -a /etc/systemd/system/corosync.service.d/override.conf; sudo systemctl daemon-reload"; done 10< nodes.txt

crea una risorsa IP del cluster locale per l'indirizzo VIP

Per configurare l'indirizzo VIP nel sistema operativo, crea una risorsa IP del cluster locale per l'indirizzo VIP che hai prenotato in precedenza:

# crm configure primitive rsc_vip_int-primary IPaddr2 \
     params ip=VIP_ADDRESS cidr_netmask=32 nic="eth0" op monitor interval=3600s timeout=60s

Configurare il servizio di controllo di integrità helper

Il bilanciatore del carico utilizza un listener sulla porta per il controllo di integrità di ciascun host per determinare dove è in esecuzione l'istanza principale del cluster SAP HANA.

Per gestire i listener nel cluster, devi creare una risorsa per l'ascoltatore.

In queste istruzioni viene utilizzato l'utilità socat come listener.

  1. Installa socat utility su entrambi gli host come root:

    # zypper in -y socat
  2. Nell'host principale, crea una risorsa per il servizio di controllo di integrità helper:

    crm configure primitive rsc_healthcheck-primary anything \
    params binfile="/usr/bin/socat" \
    cmdline_options="-U TCP-LISTEN:HEALTHCHECK_PORT_NUM,backlog=10,fork,reuseaddr /dev/null" \
    op monitor timeout=20s interval=10s \
    op_params depth=0
  3. Raggruppa le risorse del servizio di controllo di integrità VIP e helper:

    # crm configure group g-primary rsc_vip_int-primary rsc_healthcheck-primary meta resource-stickiness="0"

Crea la risorsa primitiva SAPHanaTopology

Puoi definire la risorsa primitiva SAPHanaTopology in un file di configurazione temporaneo, che poi caricherai su Corosync.

Sull'host principale come root:

  1. Crea un file di configurazione temporaneo per i parametri di configurazione di SAPHanaTopology:

    # vi /tmp/cluster.tmp
  2. Copia e incolla le definizioni delle risorse SAPHanaTopology nel file /tmp/cluster.tmp:

    primitive rsc_SAPHanaTopology_SID_HDBINST_NUM ocf:suse:SAPHanaTopology \
     operations \$id="rsc_sap2_SID_HDBINST_NUM-operations" \
     op monitor interval="10" timeout="600" \
     op start interval="0" timeout="600" \
     op stop interval="0" timeout="300" \
     params SID="SID" InstanceNumber="INST_NUM"
    
    clone cln_SAPHanaTopology_SID_HDBINST_NUM rsc_SAPHanaTopology_SID_HDBINST_NUM \
     meta clone-node-max="1" target-role="Started" interleave="true"
    location SAPHanaTop_not_on_majority_maker cln_SAPHanaTopology_SID_HDBINST_NUM -inf: MAJORITY_MAKER_HOSTNAME

  3. Modifica il file /tmp/cluster.tmp per sostituire il testo della variabile con il SID e il numero di istanza per il tuo sistema SAP HANA.

  4. Nel file principale come root, carica i contenuti del file /tmp/cluster.tmp in Corosync:

    crm configure load update /tmp/cluster.tmp

Crea la risorsa primitiva SAPHana

Per definire la risorsa primitiva SAPHana devi utilizzare lo stesso metodo utilizzato per la risorsa SAPHanaTopology: in un file di configurazione temporaneo, che poi caricherai su Corosync.

  1. Sostituisci il file di configurazione temporaneo:

    # rm /tmp/cluster.tmp
    # vi /tmp/cluster.tmp
  2. Copia e incolla le definizioni delle risorse SAPHana nel file /tmp/cluster.tmp:

    primitive rsc_SAPHana_SID_HDBINST_NUM ocf:suse:SAPHanaController \
     operations \$id="rsc_sap_SID_HDBINST_NUM-operations" \
     op start interval="0" timeout="3600" \
     op stop interval="0" timeout="3600" \
     op promote interval="0" timeout="3600" \
     op demote interval="0" timeout="3600" \
     op monitor interval="60" role="Master" timeout="700" \
     op monitor interval="61" role="Slave" timeout="700" \
     params SID="SID" InstanceNumber="INST_NUM" PREFER_SITE_TAKEOVER="true" \
     DUPLICATE_PRIMARY_TIMEOUT="7200" AUTOMATED_REGISTER="true"
    
    ms msl_SAPHana_SID_HDBINST_NUM rsc_SAPHana_SID_HDBINST_NUM \
     meta master-node-max="1" master-max="1" clone-node-max="1" \
     target-role="Started" interleave="true"
    
    colocation col_saphana_ip_SID_HDBINST_NUM 4000: g-primary:Started \
     msl_SAPHana_SID_HDBINST_NUM:Master
    order ord_SAPHana_SID_HDBINST_NUM Optional: cln_SAPHanaTopology_SID_HDBINST_NUM \
     msl_SAPHana_SID_HDBINST_NUM
    location SAPHanaCon_not_on_majority_maker  msl_SAPHana_SID_HDBINST_NUM -inf: MAJORITY_MAKER_HOSTNAME

    Per un cluster SAP HANA ad alta disponibilità multi-livello, se utilizzi una versione precedente a SAP HANA 2.0 SP03, imposta AUTOMATED_REGISTER su false. In questo modo, un'istanza recuperata non può tentare di autoregistrarsi per la replica su un sistema HANA su cui è già configurata una destinazione di replica. Per SAP HANA 2.0 SP03 o versioni successive, puoi impostare AUTOMATED_REGISTER su true per le configurazioni SAP HANA che utilizzano la replica di sistema multilivello. Per ulteriori informazioni, vedi:

  3. Nel file principale come root, carica i contenuti del file /tmp/cluster.tmp in Corosync:

    crm configure load update /tmp/cluster.tmp

Verifica che la replica del sistema SAP HANA sia attiva

Controlla lo stato della replica nell'host principale come SID_LCadm:

# python $DIR_INSTANCE/exe/python_support/systemReplicationStatus.py

Attiva il cluster

  1. Nell'host principale come root, disattiva la modalità di manutenzione del cluster:

    # crm configure property maintenance-mode="false"

    Se viene visualizzato un messaggio che ti chiede di rimuovere "manutenzione", inserisci y.

  2. Attendi 15 secondi, quindi controlla lo stato del cluster sull'host principale come root:

    # crm status

    I seguenti esempi mostrano lo stato di un cluster attivo e configurato correttamente:

7 nodes configured
21 resources configured
Online: [   hana-ha-vm-1 hana-ha-vm-1w1 hana-ha-vm-1w2 hana-ha-vm-2 hana-ha-vm-2w1 hana-ha-vm-2w2 sap-majoritymaker ]


Full list of resources:


 STONITH-hana-ha-vm-1   (stonith:external/gcpstonith):  Started hana-ha-vm-1w2
 STONITH-hana-ha-vm-1w1 (stonith:external/gcpstonith):  Started hana-ha-vm-1
 STONITH-hana-ha-vm-1w2 (stonith:external/gcpstonith):  Started hana-ha-vm-2
 STONITH-sap-majoritymaker      (stonith:external/gcpstonith):  Started hana-ha-vm-1w2
 STONITH-hana-ha-vm-2   (stonith:external/gcpstonith):  Started hana-ha-vm-2w1
 STONITH-hana-ha-vm-2w1 (stonith:external/gcpstonith):  Started hana-ha-vm-2w2
 STONITH-hana-ha-vm-2w2 (stonith:external/gcpstonith):  Started sap-majoritymaker
 Clone Set: cln_SAPHanaTopology_HA1_HDB22 [rsc_SAPHanaTopology_HA1_HDB22]
     Started: [ hana-ha-vm-1 hana-ha-vm-1w1 hana-ha-vm-1w2 hana-ha-vm-2 hana-ha-vm-2w1 hana-ha-vm-2w2 ]
     Stopped: [ sap-majoritymaker ]
 Resource Group: g-primary
     rsc_vip_int-primary        (ocf::heartbeat:IPaddr2):       Started hana-ha-vm-1
     rsc_healthcheck-primary    (ocf::heartbeat:anything):      Started hana-ha-vm-1
 Clone Set: msl_SAPHana_HA1_HDB22 [rsc_SAPHana_HA1_HDB22] (promotable)
     Masters: [ hana-ha-vm-1 ]
     Slaves: [ hana-ha-vm-1w1 hana-ha-vm-1w2 hana-ha-vm-2 hana-ha-vm-2w1 hana-ha-vm-2w2 ]
     Stopped: [ sap-majoritymaker ]

Testa il failover

Testa il cluster simulando un errore sull'host principale. Utilizza un sistema di test o esegui il test sul tuo sistema di produzione prima di rilasciare il sistema per l'uso.

Esegui il backup del sistema prima del test.

Puoi simulare un errore in diversi modi, tra cui:

  • HDB stop
  • HDB kill
  • reboot (sul nodo attivo)
  • ip link set eth0 down per istanze con una singola interfaccia di rete
  • iptables ... DROP per istanze con più interfacce di rete
  • echo c > /proc/sysrq-trigger

Queste istruzioni utilizzano ip link set eth0 down o iptables per simulare un'interruzione di rete tra i due host nel cluster. Utilizza il comando ip link su un'istanza con una singola interfaccia di rete e il comando iptables sulle istanze con una o più interfacce di rete. Il test convalida sia il failover sia la recinzione. Nel caso in cui le istanze abbiano più interfacce di rete definite, utilizza il comando iptables sull'host secondario per eliminare il traffico in entrata e in uscita in base all'IP utilizzato dall'host principale per la comunicazione del cluster, simulando così la perdita della connessione di rete a quella principale.

  1. Metti l'interfaccia di rete offline come root sull'host attivo:

    # ip link set eth0 down

    In alternativa, se sono attive più interfacce di rete, utilizzando iptables sull'host secondario:

    # iptables -A INPUT -s PRIMARY_CLUSTER_IP -j DROP; iptables -A OUTPUT -d PRIMARY_CLUSTER_IP -j DROP
  2. Riconnettiti a uno degli host tramite SSH e passa all'utente root.

  3. Inserisci crm status per confermare che l'host principale sia ora attivo sulla VM che conteneva l'host secondario. Il riavvio automatico è abilitato nel cluster, pertanto l'host interrotto verrà riavviato e assumerà il ruolo di host secondario, come mostrato nell'esempio seguente.

    Stack: corosync
    Current DC: hana-ha-vm-2 (version 2.0.1+20190417.13d370ca9-3.9.1-2.0.1+20190417.13d370ca9) - partition with quorum
    Last updated: Fri Jun 12 16:46:07 2020
    Last change: Fri Jun 12 16:46:07 2020 by root via crm_attribute on hana-ha-vm-2
    
    2 nodes configured
    8 resources configured
    
    Online: [ hana-ha-vm-1 hana-ha-vm-2 hana-ha-vm-1w1 hana-ha-vm-2w1]
    
    Full list of resources:
    
    STONITH-hana-ha-vm-1   (stonith:external/gcpstonith):  Started hana-ha-vm-2
    STONITH-hana-ha-vm-2   (stonith:external/gcpstonith):  Started hana-ha-vm-1
    STONITH-hana-ha-vm-1w1   (stonith:external/gcpstonith):    Started hana-ha-vm-2w1
    STONITH-hana-ha-vm-1w1   (stonith:external/gcpstonith):    Started hana-ha-vm-mm
    STONITH-hana-ha-vm-mm   (stonith:external/gcpstonith):    Started hana-ha-vm-1w1
    Clone Set: cln_SAPHanaTopology_HA1_HDB22 [rsc_SAPHanaTopology_HA1_HDB22]
        Started: [ hana-ha-vm-1 hana-ha-vm-2 hana-ha-vm-1w1 hana-ha-vm-2w1
        Stopped: [ hana-ha-vm-mm ]]
    Resource Group: g-primary
        rsc_vip_int-primary        (ocf::heartbeat:IPaddr2):       Started hana-ha-vm-2
        rsc_healthcheck-primary        (ocf::heartbeat:anything):      Started hana-ha-vm-2
    Clone Set: msl_SAPHana_HA1_HDB22 [rsc_SAPHana_HA1_HDB22] (promotable)
        Masters: [ hana-ha-vm-2 ]
        Slaves: [ hana-ha-vm-1 hana-ha-vm-1w1 hana-ha-vm-2w1
        Stopped: [ hana-ha-vm-mm ]]

Valuta il tuo carico di lavoro SAP HANA

Per automatizzare i controlli di convalida continua dei carichi di lavoro ad alta disponibilità SAP HANA in esecuzione su Google Cloud, puoi utilizzare Workload Manager.

Workload Manager ti consente di analizzare e valutare automaticamente i carichi di lavoro ad alta disponibilità SAP HANA in base alle best practice dei fornitori di SAP, Google Cloud e di sistemi operativi. Ciò consente di migliorare qualità, prestazioni e affidabilità dei carichi di lavoro.

Per informazioni sulle best practice supportate da Workload Manager per la valutazione dei carichi di lavoro ad alta disponibilità SAP HANA in esecuzione su Google Cloud, consulta Best practice di Workload Manager per SAP. Per informazioni sulla creazione e sull'esecuzione di una valutazione utilizzando Gestore carichi di lavoro, consulta Creare ed eseguire una valutazione.

Risoluzione dei problemi

Per risolvere i problemi relativi alle configurazioni ad alta disponibilità per SAP HANA su SLES, consulta Risoluzione dei problemi relativi alle configurazioni ad alta disponibilità per SAP.

Ottenere assistenza per SAP HANA su SLES

Se hai bisogno di aiuto per risolvere un problema con i cluster ad alta disponibilità per SAP HANA su SLES, raccogli le informazioni di diagnostica richieste e contatta l'assistenza clienti Google Cloud. Per saperne di più, consulta Informazioni diagnostiche sui cluster ad alta disponibilità su SLES.

Assistenza

In caso di problemi con l'infrastruttura o i servizi Google Cloud, contatta l'assistenza clienti. Puoi trovare le informazioni di contatto nella pagina Panoramica dell'assistenza della console Google Cloud. Se l'assistenza clienti stabilisce che un problema risiede nei tuoi sistemi SAP, ti indirizzerà all'assistenza SAP.

Per problemi relativi ai prodotti SAP, registra la tua richiesta di assistenza con l'assistenza SAP. SAP valuta il ticket di assistenza e, se sembra trattarsi di un problema dell'infrastruttura di Google Cloud, lo trasferisce al componente Google Cloud BC-OP-LNX-GOOGLE o BC-OP-NT-GOOGLE.

Requisiti per l'assistenza

Prima di poter ricevere assistenza per i sistemi SAP, nonché per l'infrastruttura e i servizi Google Cloud che utilizzano, devi soddisfare i requisiti minimi del piano di assistenza.

Per ulteriori informazioni sui requisiti minimi di assistenza per SAP su Google Cloud, consulta:

Connessione a SAP HANA

Se le VM host non hanno un indirizzo IP esterno per SAP HANA, puoi connetterti alle istanze SAP HANA solo tramite l'istanza del bastion utilizzando SSH o tramite il server Windows mediante SAP HANA Studio.

  • Per connetterti a SAP HANA tramite il bastion, esegui la connessione al bastion host, quindi alle istanze SAP HANA utilizzando un client SSH di tua scelta.

  • Per connetterti al database SAP HANA tramite SAP HANA Studio, utilizza un client desktop remoto per eseguire la connessione all'istanza di Windows Server. Dopo la connessione, installa SAP HANA Studio manualmente e accedi al tuo database SAP HANA.

Attività post-deployment

Dopo aver completato il deployment, completa i seguenti passaggi:

  1. Modifica le password temporanee dell'amministratore di sistema e del super user del database SAP HANA. Ad esempio:

    sudo passwd SID_LCadm

    Per informazioni da SAP sulla modifica della password, consulta Reimpostare la password utente SYSTEM del database di sistema.

  2. Prima di utilizzare l'istanza SAP HANA, configura ed esegui il backup del tuo nuovo database SAP HANA.

  3. Se il deployment del tuo sistema SAP HANA è stato eseguito su un'interfaccia di rete VirtIO, ti consigliamo di assicurarti che il valore del parametro TCP /proc/sys/net/ipv4/tcp_limit_output_bytes sia impostato su 1048576. Questa modifica consente di migliorare la velocità effettiva complessiva della rete nell'interfaccia di rete VirtIO senza influire sulla latenza di rete.

Per ulteriori informazioni, vedi:

Passaggi successivi

Per saperne di più, consulta la seguente risorsa:

  • Replica automatica del sistema SAP HANA nello scale up nel cluster di pacemaker
  • Guida alla pianificazione dell'alta disponibilità di SAP HANA
  • Guida alla pianificazione del ripristino di emergenza di SAP HANA
  • Per ulteriori informazioni sull'amministrazione e sul monitoraggio delle VM, consulta la Guida operativa di Sap HANA