Guida alla configurazione dei cluster di scale up ad alta disponibilità per SAP HANA su RHEL

Questa guida mostra come eseguire il deployment e configurare un cluster Red Hat Enterprise Linux (RHEL) ad alta disponibilità per un sistema SAP HANA 1.0 SPS 12 o successivo su Google Cloud.

Questa guida illustra i passaggi per:

Questa guida include anche i passaggi per configurare la replica di sistema SAP HANA, ma 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 del nodo in standby, consulta la guida al deployment di SAP HANA.

Per configurare un cluster ad alta disponibilità per SAP HANA su SUSE Linux Enterprise Server (SLES), consulta la guida alla configurazione dei cluster ad alta disponibilità per lo scale up di SAP HANA su SLES.

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

Il sistema implementato da questa guida

Seguendo questa guida, eseguirai il deployment di due istanze SAP HANA e configurerai un cluster ad alta disponibilità su RHEL. Esegui il deployment di ogni istanza SAP HANA su una VM di Compute Engine in una zona diversa all'interno della stessa regione. Questa guida non è trattata un'installazione ad alta disponibilità di SAP NetWeaver.

Panoramica di un cluster Linux ad alta disponibilità per un sistema di scaleup SAP HANA a nodo singolo

Il cluster di cui è stato eseguito il deployment include le seguenti funzioni e caratteristiche:

  • Due VM host, ciascuna con un'istanza di SAP HANA
  • Replica sincrona di sistema SAP HANA.
  • Gestore delle risorse del cluster ad alta disponibilità Pacemaker.
  • Un meccanismo di scherma STONITH.
  • Riavvio automatico dell'istanza non riuscita come nuova istanza secondaria.

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

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

Prerequisiti

Prima di creare il cluster SAP HANA ad alta disponibilità, 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 in genere richiedono l'accesso a internet per scaricare l'agente di Google Cloud per SAP. Se utilizzi una delle immagini Linux certificate SAP disponibili su Google Cloud, l'istanza VM richiede anche l'accesso a internet per registrare la licenza e accedere ai repository dei fornitori di sistemi operativi. Questo accesso è supportato da una configurazione con un gateway NAT e tag di rete VM, 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 Tipo di stack IP, seleziona IPv4 (stack singolo) e 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 per ogni 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. Puoi aggiungere altre subnet alla rete dopo aver creato la rete.
  7. Fai clic su Crea.

gcloud

  1. Vai a Cloud Shell.

    Vai a Cloud Shell

  2. Per creare una nuova rete in modalità 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 maggiori informazioni, vedi Modalità di creazione 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 che hai creato nel passaggio precedente
    • REGION: la regione in cui vuoi 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 distribuito e software-defined di Google Cloud, che consente alle VM di inviare pacchetti in uscita a internet e ricevere tutti 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 tuo 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 VM. Dopo aver stabilito una connessione in entrata con una VM, il traffico viene consentito in entrambe le direzioni su questa connessione.

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

A seconda del criterio IT applicabile al tuo ambiente, potresti dover isolare o limitare la connettività all'host del database creando regole firewall.

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

  • Le porte SAP predefinite elencate in TCP/IP di tutti i prodotti SAP.
  • Connessioni dal computer o dall'ambiente di rete aziendale alla tua istanza VM di Compute Engine. Se hai dubbi in merito all'indirizzo IP da utilizzare, rivolgiti all'amministratore di rete della tua azienda.
  • Comunicazione tra VM nella subnet SAP HANA, inclusa la comunicazione tra i nodi in un sistema SAP HANA con scale out o la comunicazione tra il server di database e i server delle applicazioni in un'architettura a 3 livelli. Puoi abilitare la comunicazione tra le VM creando una regola firewall per consentire il traffico che ha origine all'interno della subnet.

Per creare una regola firewall:

Console

  1. Nella console Google Cloud, vai alla pagina Firewall della rete VPC.

    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 questa 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 questo comando:

$ 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

Prima di iniziare a configurare il cluster ad alta disponibilità, definisci ed esegui il deployment delle istanze VM e dei sistemi SAP HANA che fungono da nodi primari e secondari nel tuo cluster ad alta disponibilità.

Per definire ed eseguire il deployment dei sistemi, utilizza lo stesso modello di Cloud Deployment Manager che utilizzi per eseguire il deployment di un sistema SAP HANA nella guida al deployment di SAP HANA.

Tuttavia, per eseguire il deployment di due sistemi anziché di uno, devi aggiungere al file di configurazione la definizione del secondo sistema copiandola e incollandola. Dopo aver creato la seconda definizione, devi modificare i nomi delle risorse e delle istanze nella seconda definizione. Per evitare un errore a livello di zona, specifica una zona diversa nella stessa regione. Tutti gli altri valori di proprietà nelle due definizioni rimangono invariati.

Una volta eseguito il deployment dei sistemi SAP HANA, devi definire e configurare il cluster ad alta disponibilità.

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

  1. Verifica che le quote attuali per risorse come dischi permanenti e CPU siano sufficienti per i sistemi SAP HANA che stai per installare. Se le quote sono insufficienti, il deployment non va a buon fine. Per i requisiti delle quote di SAP HANA, consulta Considerazioni su prezzi e quote per SAP HANA.

    Vai alla pagina delle quote

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

    Vai a Cloud Shell

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

    wget https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_hana/template.yaml
  4. Facoltativamente, 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 di 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 per l'installazione. Le proprietà sono descritte nella seguente tabella.

    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 String

    Specifica la località, 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 che viene commentata specifica una versione specifica del modello con un timestamp.

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

    instanceName String Il nome dell'istanza VM attualmente in fase di definizione. Specifica nomi diversi nelle definizioni della VM primaria e secondaria. I nomi devono essere specificati in lettere minuscole, numeri o trattini.
    instanceType String Il tipo di macchina virtuale Compute Engine su cui hai bisogno di 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 a quello necessario, ma comunque di dimensioni maggiori. Al termine del deployment, modifica il numero di vCPU e la quantità di memoria.
    zone String La zona Google Cloud in cui eseguire il deployment dell'istanza VM che stai definendo. Specifica zone diverse nella stessa regione per le definizioni HANA primarie e secondarie. Le zone devono trovarsi nella stessa regione selezionata per la subnet.
    subnetwork String Il nome della subnet che hai creato in un passaggio precedente. Se esegui il deployment in un VPC condiviso, specifica questo valore come [SHAREDVPC_PROJECT]/[SUBNETWORK]. Ad esempio, myproject/network1.
    linuxImage String Il nome dell'immagine o della famiglia di immagini del sistema operativo Linux che utilizzi con SAP HANA. Per specificare una famiglia di immagini, aggiungi il prefisso family/ al cognome. Ad esempio, family/rhel-7-6-sap-ha. Per specificare un'immagine specifica, indica solo il nome dell'immagine. Per l'elenco delle immagini e delle famiglie disponibili, consulta la pagina Immagini nella console Google Cloud.
    linuxImageProject String Il progetto Google Cloud che contiene l'immagine che utilizzerai. Questo progetto potrebbe essere il tuo o un progetto immagine Google Cloud, ad esempio rhel-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 String 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. Tutti i file di revisione dell'upgrade nel bucket vengono applicati a SAP HANA durante il processo di deployment.
    sap_hana_sid String L'ID di 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 Integer Il numero di istanza, da 0 a 99, del sistema SAP HANA. Il valore predefinito è 0.
    sap_hana_sidadm_password String 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 String 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 Integer Il valore predefinito per l'ID utente SID_LCadm è 900 per evitare che i gruppi creati dall'utente siano in conflitto con SAP HANA. Se necessario, puoi modificare il valore.
    sap_hana_sapsys_gid Integer L'ID gruppo predefinito per sapsys è 79. Se specifichi un valore sopra, puoi sostituirlo in base ai tuoi requisiti.
    sap_hana_scaleout_nodes Integer Specifica 0. Queste istruzioni sono solo per sistemi SAP HANA con scale up.
    networkTag String Un tag di rete che rappresenta la tua istanza VM ai fini del firewall o del routing. Se specifichi publicIP: No senza specificare un tag di rete, assicurati di fornire un altro mezzo di accesso a internet.
    nic_type String 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 supporti 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 del modello di Deployment Manager 202302060649 o successive.
    publicIP Booleano Facoltativo. Determina se un indirizzo IP pubblico viene aggiunto alla tua istanza VM. Il valore predefinito è Yes.
    serviceAccount String 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 Identity and Access Management for SAP programmi on Google Cloud.
  7. Crea la definizione del sistema SAP HANA secondario copiando la definizione del sistema SAP HANA principale e incollandola dopo la definizione del sistema SAP HANA principale. Segui l'esempio seguendo questi passaggi.

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

    • name
    • instanceName
    • zone

  9. Crea le istanze:

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

    Il comando precedente richiama Deployment Manager, che esegue il deployment delle VM, scarica il software SAP HANA dal bucket di archiviazione e installa SAP HANA, il tutto in base alle specifiche contenute nel 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 un file di configurazione template.yaml completo

L'esempio seguente mostra un file di configurazione template.yaml completato che esegue il deployment di due istanze VM con un sistema SAP HANA installato.

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 un'istanza SAP HANA.

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

Le proprietà networkTag, serviceAccount, sap_hana_sidadm_uid e sap_hana_sapsys_gid provengono dalla sezione Opzioni avanzate del modello di file di configurazione. Le proprietà sap_hana_sidadm_uid e sap_hana_sapsys_gid vengono incluse per mostrare i relativi valori predefiniti, 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/rhel-8-1-sap-ha
    linuxImageProject: rhel-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: 0
    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/rhel-8-1-sap-ha
    linuxImageProject: rhel-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: 0
    networkTag: cluster-ntwk-tag
    serviceAccount: limited-roles@example-project-123456.iam.gserviceaccount.com
    # sap_hana_sidadm_uid: 900
    # sap_hana_sapsys_gid: 79
    

Crea regole firewall che consentano 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 tua 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 target della 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 del cluster, aggiungi una regola firewall che consenta tutti i tipi di connessioni su qualsiasi porta da altre VM nella stessa subnet.

Assicurati che le regole firewall per la verifica del deployment e per la comunicazione intra-cluster vengano create prima di passare alla sezione successiva. Per le istruzioni, consulta Aggiungere regole firewall.

Verifica del deployment delle VM e di SAP HANA

Per verificare il deployment, controlla i log di deployment in Cloud Logging e controlla 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 la 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, quindi fai clic su Aggiungi.

      Se non vedi l'opzione Globale, inserisci la query seguente nell'editor di 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 è completa e puoi passare al passaggio successivo.
    • Se visualizzi un errore di quota:

      1. Nella pagina Quote di IAM e amministrazione, aumenta le quote che non soddisfano i requisiti 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 di nuovo il deployment.

Controlla 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 oppure utilizzare il metodo SSH che preferisci.

    il 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 che siano visualizzate 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 seguente comando con l'ID di sistema che hai 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 sull'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 su SAP, consulta SAP Note 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 installato il sistema SAP, verifica che l'agente Google Cloud per SAP funzioni correttamente.

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

Per verificare che l'agente sia in esecuzione, segui questi passaggi:

  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.

Verifica che l'agente host SAP stia ricevendo le metriche

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

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

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

Configura il monitoraggio per SAP HANA

Facoltativamente, puoi monitorare le tue istanze SAP HANA utilizzando l'agente di Google Cloud per SAP. Dalla versione 2.0, puoi configurare l'agente per raccogliere le metriche di monitoraggio 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 tramite l'agente di Google Cloud per SAP, consulta Raccolta delle metriche di monitoraggio SAP HANA.

Abilita riavvio rapido 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 di SAP HANA riduce i tempi di riavvio nel caso in cui SAP HANA termina, 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à SAP HANA Fast Riavvia. Devi definire il file system tmpfs e configurare SAP HANA.

Per definire il file system tmpfs e configurare SAP HANA, puoi seguire la procedura manuale o utilizzare lo script di automazione fornito da Google Cloud per abilitare SAP HANA Fast Riavvia. 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.

Passaggi manuali

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 VM

Prima di poter mappare il file system tmpfs richiesto, devi sapere quanti nodi NUMA include 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 directory dei nodi NUMA

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 del nodo 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 i 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 di dimensione per 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 di tmpfs per tutti i nodi NUMA per una determinata istanza SAP HANA e un determinato nodo del server impostando il parametro persistent_memory_global_allocation_limit nella sezione [memorymanager] del file global.ini.

Configurazione SAP HANA per riavvio rapido

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

Aggiorna la sezione [persistence] nel file global.ini

Configura la sezione [persistence] nel file SAP HANA global.ini per fare riferimento alle località tmpfs. Separa ogni posizione 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 corrispondono al valore m2-ultramem-208. Se utilizzi il 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 tabelle o partizioni di colonne specifiche da archiviare nella 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 e tabelle e sulle viste di monitoraggio che forniscono informazioni dettagliate, consulta SAP HANA Persistent Memory.

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, potresti dover eseguire passaggi aggiuntivi, a seconda che si tratti del deployment iniziale del tuo sistema SAP HANA o di dimensioni della macchina a una dimensione NUMA diversa.

Per il deployment iniziale del sistema SAP HANA o il ridimensionamento della macchina per 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 SAP HANA Fast Riavvia.

Quando ridimensiona la macchina per ridurre il numero di nodi NUMA, assicurati che SAP HANA venga arrestato durante l'esecuzione dello script di automazione fornito da Google Cloud per abilitare SAP HANA Fast Riavvia. Dopo l'esecuzione dello script, devi aggiornare manualmente la configurazione SAP HANA per completare la configurazione di SAP HANA Fast Riavvia. Per maggiori informazioni, consulta la pagina sulla 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 eseguibile il file:

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

    vi sap_lib_hdbfr.sh
    ./sap_lib_hdbfr.sh -help

    Se il comando restituisce un errore, contatta l'assistenza clienti Google Cloud. Per saperne di più su come contattare l'assistenza clienti, vedi Ottenere assistenza per SAP su Google Cloud.

  6. Esegui lo script dopo aver sostituito l'ID sistema (SID) e la password 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 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 modificare la password. Non è consigliabile utilizzare una password di testo normale, in quanto 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 SYSTEM del database SAP HANA.

Per un'esecuzione iniziale riuscita, dovresti vedere 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)

(Facoltativo) Configura le chiavi SSH sulla VM principale e su quella secondaria

Le chiavi dell'archivio sicuro SAP HANA (SSFS) devono essere sincronizzate tra gli host nel cluster ad alta disponibilità. Per semplificare la sincronizzazione e consentire la copia di file come i backup tra gli host nel cluster ad alta disponibilità, queste istruzioni autorizzano le connessioni SSH dirette tra i due host.

È probabile che la tua organizzazione abbia stabilito linee guida che disciplinano le comunicazioni di rete interne. Se necessario, al termine del deployment puoi rimuovere i metadati dalle VM e le chiavi dalla directory authorized_keys.

Se la configurazione di connessioni SSH dirette non è conforme alle linee guida della tua organizzazione, puoi sincronizzare le chiavi SSFS e trasferire i file utilizzando altri metodi, ad esempio:

  • Trasferisci file più piccoli attraverso la tua workstation locale utilizzando le opzioni dei menu Carica file e Scarica file di Cloud Shell. Vedi Gestire i file con Cloud Shell.
  • Scambiare file utilizzando un bucket Google Cloud Storage. Consulta Utilizzo degli oggetti nella documentazione di Cloud Storage.
  • Utilizza l'agente Backint di Cloud Storage per SAP HANA per eseguire il backup e il ripristino dei database HANA. Consulta Agente Backint di Cloud Storage per SAP HANA.
  • Usa una soluzione di archiviazione file come Filestore o NetApp Cloud Volumes Service per creare una cartella condivisa. Vedi Opzioni file server.

Per abilitare le connessioni SSH tra le istanze principali e secondarie, segui questi passaggi.

  1. Sulla VM host principale:

    1. Accedi tramite SSH alla VM.

    2. Generare una chiave SSH per l'utente che necessita della connessione SSH tra host e host. In genere l'utente sei tu.

      $ ssh-keygen
    3. Quando richiesto, accetta i valori predefiniti premendo Invio.

    4. Aggiorna i metadati della VM principale con informazioni sulla chiave SSH per la VM secondaria.

      $ gcloud compute instances add-metadata secondary-host-name \
           --metadata "ssh-keys=$(whoami):$(cat ~/.ssh/id_rsa.pub)" \
           --zone secondary-zone
    5. Autorizza se stesso la VM principale

      $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  2. Sulla VM host secondaria:

    1. Accedi tramite SSH alla VM.

    2. Generare una chiave SSH per l'utente che necessita della connessione SSH tra host e host.

      $ ssh-keygen
    3. Aggiorna i metadati della VM secondaria con informazioni sulla chiave SSH per la VM principale.

      $ gcloud compute instances add-metadata primary-host-name \
            --metadata "ssh-keys=$(whoami):$(cat ~/.ssh/id_rsa.pub)" \
            --zone primary-zone
    4. Autorizza se stessa la VM secondaria

      $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    5. Verifica che le chiavi SSH siano configurate correttamente aprendo una connessione SSH dal sistema secondario al sistema principale.

      $ ssh primary-host-name
  3. Sulla VM host principale, conferma la connessione aprendo una connessione SSH alla VM host secondaria:

    $ ssh secondary-host-name

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

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. Nell'host principale, passa a SID_LCadm. A seconda dell'immagine sistema operativo, il comando potrebbe essere diverso.

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

    • Per un sistema SAP HANA a database singolo 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 di container multi-database (MDC) SAP HANA, crea un backup del database di sistema e di qualsiasi 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. Verifica 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 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 a tua disposizione.

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

    > hdbnsutil -sr_enable --name=primary-host-name
  2. Nell'host secondario come SID_LCadm, arresta SAP HANA:

    > HDB stop
  3. Nell'host principale, utilizzando lo stesso account utente che hai utilizzato per configurare SSH tra le VM host, copia i file delle chiavi nell'host secondario. Per praticità, anche i seguenti comandi definiscono una variabile di ambiente per il tuo ID account utente:

    $ sudo cp /usr/sap/SID/SYS/global/security/rsecssfs ~/rsecssfs -r
    $ myid=$(whoami)
    $ sudo chown ${myid} -R /home/"${myid}"/rsecssfs
    $ scp -r rsecssfs $(whoami)@secondary-host-name:rsecssfs
    $ rm -r /home/"${myid}"/rsecssfs
    
  4. Sull'host secondario, come lo stesso utente del passaggio precedente:

    1. Sostituisci i file di chiave esistenti nelle directory rsecssfs con i file dell'host principale e imposta le autorizzazioni dei file per limitare l'accesso:

      $ SAPSID=SID
      $ sudo rm /usr/sap/"${SAPSID}"/SYS/global/security/rsecssfs/data/SSFS_"${SAPSID}".DAT
      $ sudo rm /usr/sap/"${SAPSID}"/SYS/global/security/rsecssfs/key/SSFS_"${SAPSID}".KEY
      $ myid=$(whoami)
      $ sudo cp /home/"${myid}"/rsecssfs/data/SSFS_"${SAPSID}".DAT \
        /usr/sap/"${SAPSID}"/SYS/global/security/rsecssfs/data/SSFS_"${SAPSID}".DAT
      $ sudo cp /home/"${myid}"/rsecssfs/key/SSFS_"${SAPSID}".KEY \
        /usr/sap/"${SAPSID}"/SYS/global/security/rsecssfs/key/SSFS_"${SAPSID}".KEY
      $ sudo chown "${SAPSID,,}"adm:sapsys \
        /usr/sap/"${SAPSID}"/SYS/global/security/rsecssfs/data/SSFS_"${SAPSID}".DAT
      $ sudo chown "${SAPSID,,}"adm:sapsys \
        /usr/sap/"${SAPSID}"/SYS/global/security/rsecssfs/key/SSFS_"${SAPSID}".KEY
      $ sudo chmod 644 \
        /usr/sap/"${SAPSID}"/SYS/global/security/rsecssfs/data/SSFS_"${SAPSID}".DAT
      $ sudo chmod 640 \
        /usr/sap/"${SAPSID}"/SYS/global/security/rsecssfs/key/SSFS_"${SAPSID}".KEY
    2. Esegui la pulizia dei file nella home directory.

      $ rm -r /home/"${myid}"/rsecssfs
    3. Come SID_LCadm, registra il sistema SAP HANA secondario con la replica di sistema SAP HANA:

      > hdbnsutil -sr_register --remoteHost=primary-host-name --remoteInstance=inst_num \
      --replicationMode=syncmem --operationMode=logreplay --name=secondary-host-name
    4. Come SID_LCadm, avvia SAP HANA:

      > HDB start

Convalida della replica del sistema in corso...

Nell'host principale come SID_LCadm, verifica 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, overall system replication status mostra ACTIVE.

Configurare il supporto per il 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), a volte indicato come indirizzo IP fluttuante, segue il sistema SAP HANA attivo. Il bilanciatore del carico instrada il traffico inviato al VIP alla VM che ospita attualmente il sistema SAP HANA attivo.

  1. Apri Cloud Shell:

    Vai a Cloud Shell

  2. Prenota un indirizzo IP per l'IP virtuale. Questo è l'indirizzo IP utilizzato dalle applicazioni per accedere a SAP HANA. Se ometti il flag --addresses, viene scelto un indirizzo IP nella subnet specificata:

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

    Per ulteriori informazioni sulla prenotazione di un IP statico, vedi Prenotare un indirizzo IP interno statico.

  3. Conferma prenotazione dell'indirizzo IP:

    $ gcloud compute addresses describe VIP_NAME \
      --region CLUSTER_REGION

    Dovresti 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

  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 secondaria 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 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

  1. In Cloud Shell, crea il controllo di integrità. Per la porta utilizzata dal controllo di integrità, scegli una porta nell'intervallo privato, 49152-65535, per evitare conflitti con altri servizi. I valori di intervallo di controllo e timeout sono leggermente più lunghi dei valori predefiniti per 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 all'esempio seguente:

    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 Creare 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 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_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 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_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 hai bisogno di 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 ulteriori informazioni 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 verranno registrati come integri fino a un momento successivo, puoi testare la configurazione del bilanciatore del carico impostando un listener che risponda ai controlli di integrità. Dopo aver impostato un listener, se il bilanciatore del carico è configurato correttamente, lo stato dei gruppi di istanza di backend diventa integro.

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 la porta del controllo di integrità.

  1. Su entrambe le VM host, installa l'utilità socat:

    $ sudo yum install -y socat

  2. Avvia un processo socat per ascoltare per 60 secondi sulla porta del controllo di integrità:

    $ sudo timeout 60s socat - TCP-LISTEN:HLTH_CHK_PORT_NUM,fork

  3. In Cloud Shell, dopo aver atteso alcuni secondi che 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 che utilizzi la porta 22, che dispone di un listener in grado di rispondere al controllo di integrità.

Per utilizzare temporaneamente la porta 22, segui questi passaggi:

  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 minuto o due.

  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, reimposta il numero di porta del controllo di integrità originale.

Configura Pacemaker

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

La procedura si basa sulla documentazione di Red Hat per la configurazione di cluster ad alta disponibilità, incluso (è richiesto un abbonamento a Red Hat):

Installa gli agenti del cluster su entrambi i nodi

Completa i seguenti passaggi su entrambi i nodi.

  1. Come root, installa i componenti Pacemaker:

    # yum -y install pcs pacemaker fence-agents-gce resource-agents-gcp resource-agents-sap-hana
    # yum update -y

    Se utilizzi un'immagine RHEL-for-SAP fornita da Google, questi pacchetti sono già installati, ma potrebbero essere necessari alcuni aggiornamenti.

  2. Imposta la password per l'utente hacluster, che viene installato come parte dei pacchetti:

    # passwd hacluster
  3. Specifica una password per hacluster quando richiesto.

  4. Nelle immagini RHEL fornite da Google Cloud, il servizio firewall del sistema operativo è attivo per impostazione predefinita. Configura il servizio firewall per consentire il traffico ad alta disponibilità:

    # firewall-cmd --permanent --add-service=high-availability
    # firewall-cmd --reload
  5. Avvia il servizio PC e configuralo in modo che venga avviato al momento dell'avvio:

    # systemctl start pcsd.service
    # systemctl enable pcsd.service
  6. Controlla lo stato del servizio PC:

    # systemctl status pcsd.service

    Dovresti vedere un output simile al seguente:

    ● pcsd.service - PCS GUI and remote configuration interface
      Loaded: loaded (/usr/lib/systemd/system/pcsd.service; enabled; vendor preset: disabled)
      Active: active (running) since Sat 2020-06-13 21:17:05 UTC; 25s ago
        Docs: man:pcsd(8)
              man:pcs(8)
    Main PID: 31627 (pcsd)
      CGroup: /system.slice/pcsd.service
              └─31627 /usr/bin/ruby /usr/lib/pcsd/pcsd
    Jun 13 21:17:03 hana-ha-vm-1 systemd[1]: Starting PCS GUI and remote configuration interface...
    Jun 13 21:17:05 hana-ha-vm-1 systemd[1]: Started PCS GUI and remote configuration interface.
  7. Nel file /etc/hosts, aggiungi il nome host completo e gli indirizzi IP interni di entrambi gli host nel cluster. Ad esempio:

    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    10.0.0.40 hana-ha-vm-1.us-central1-a.c.example-project-123456.internal hana-ha-vm-1  # Added by Google
    10.0.0.41 hana-ha-vm-2.us-central1-c.c.example-project-123456.internal hana-ha-vm-2
    169.254.169.254 metadata.google.internal  # Added by Google

    Per ulteriori informazioni da Red Hat sulla configurazione del file /etc/hosts sui nodi dei cluster RHEL, consulta https://access.redhat.com/solutions/81123.

Crea il cluster

  1. Come utente root su uno dei due nodi, autorizza l'utente hacluster. Fai clic sulla scheda relativa alla tua versione RHEL per visualizzare il comando:

    RHEL 8 e versioni successive

    # pcs host auth primary-host-name secondary-host-name

    RHEL 7

    # pcs cluster auth primary-host-name secondary-host-name
  2. Al prompt, inserisci il nome utente hacluster e la password che hai impostato per l'utente hacluster.

  3. Crea il cluster:

    RHEL 8 e versioni successive

    # pcs cluster setup cluster-name primary-host-name secondary-host-name

    RHEL 7

    # pcs cluster setup --name cluster-name primary-host-name secondary-host-name

Modifica le impostazioni predefinite di corosync.conf

Modifica il file /etc/corosync/corosync.conf sull'host principale per impostare un punto di partenza più appropriato per testare la tolleranza di errore del cluster ad alta disponibilità su Google Cloud.

  1. Su entrambi gli host, utilizza il tuo editor di testo preferito per aprire il file /etc/corosync/corosync.conf per la modifica:

    # /etc/corosync/corosync.conf
  2. Se /etc/corosync/corosync.conf è un nuovo file o è vuoto, puoi cercare nella directory /etc/corosync/ un file di esempio da utilizzare come base per il file Corosync.

  3. Nella sezione totem del file corosync.conf, aggiungi le seguenti proprietà con i valori suggeriti mostrati per la tua versione RHEL:

    RHEL 8 e versioni successive

    • transport: knet
    • token: 20000
    • token_retransmits_before_loss_const: 10
    • join: 60
    • max_messages: 20

    Ad esempio:

    totem {
    version: 2
    cluster_name: hacluster
    secauth: off
    transport: knet
    token: 20000
    token_retransmits_before_loss_const: 10
    join: 60
    max_messages: 20
    }
    ...

    RHEL 7

    • transport: udpu
    • token: 20000
    • token_retransmits_before_loss_const: 10
    • join: 60
    • max_messages: 20

    Ad esempio:

    totem {
    version: 2
    cluster_name: hacluster
    secauth: off
    transport: udpu
    token: 20000
    token_retransmits_before_loss_const: 10
    join: 60
    max_messages: 20
    }
    ...
  4. Dall'host che contiene il file corosync.conf modificato, sincronizza la configurazione Corosync nel cluster:

    RHEL 8 e versioni successive

    # pcs cluster sync corosync

    RHEL 7

    # pcs cluster sync
  5. Imposta l'avvio automatico del cluster:

    1. # pcs cluster enable --all
    2. # pcs cluster start --all
  6. Verifica che le nuove impostazioni Corosync siano attive nel cluster utilizzando l'utilità corosync-cmapctl:

    # corosync-cmapctl

Allestisci recinzioni

Le immagini RHEL fornite da Google Cloud includono un agente fencing fence_gce specifico di Google Cloud. Utilizzerai fence_gce per creare dispositivi di recinto per ogni VM host.

Per garantire la corretta sequenza degli eventi dopo un'azione di fencing, configura il sistema operativo in modo da ritardare il riavvio di Corosync dopo il recinto di una VM. Puoi anche regolare il timeout del pacemaker per i riavvii in base al ritardo.

Per visualizzare tutte le opzioni disponibili con l'agente di recinzione fence_gce, emetti fence_gce -h.

Crea le risorse del dispositivo di recinzione

  1. Nell'host principale come root:

    1. Crea un dispositivo di recinzione per ogni VM host:

      # pcs stonith create primary-fence-name fence_gce \
        port=primary-host-name \
        zone=primary-host-zone \
        project=project-id \
        pcmk_reboot_timeout=300 pcmk_monitor_retries=4 pcmk_delay_max=30 \
        op monitor interval="300s" timeout="120s" \
        op start interval="0" timeout="60s"
      # pcs stonith create secondary-fence-name fence_gce \
        port=secondary-host-name \
        zone=secondary-host-zone \
        project=project-id \
        pcmk_reboot_timeout=300 pcmk_monitor_retries=4 \
        op monitor interval="300s" timeout="120s" \
        op start interval="0" timeout="60s"
    2. Vincola ogni dispositivo di recinto all'altra VM host:

      # pcs constraint location primary-fence-name avoids primary-host-name
      # pcs constraint location secondary-fence-name avoids secondary-host-name
  2. Sull'host principale come root, testa il dispositivo di recinto secondario:

    1. Arresta la VM host secondario:

      # fence_gce -o off -n secondary-host-name --zone=secondary-host-zone

      Se il comando ha esito positivo, perdi la connettività alla VM host secondaria e l'istanza risulta arrestata nella pagina Istanze VM della console Google Cloud. Potresti dover aggiornare la pagina.

    2. Riavvia la VM host secondario:

      # fence_gce -o on -n secondary-host-name --zone=secondary-host-zone
  3. Sull'host secondario come root, testa il dispositivo di recinto principale ripetendo i passaggi precedenti utilizzando i valori per l'host principale nei comandi.

  4. Controlla lo stato del cluster su uno dei due host come root:

    # pcs status

    Le risorse di recinto vengono visualizzate nella sezione delle risorse dello stato del cluster, come nell'esempio seguente:

    [root@hana-ha-vm-2 ~]# pcs status
    Cluster name: hana-ha-cluster
    Stack: corosync
    Current DC: hana-ha-vm-1 (version 1.1.19-8.el7_6.5-c3c624ea3d) - partition with quorum
    Last updated: Mon Jun 15 17:19:07 2020
    Last change: Mon Jun 15 17:18:33 2020 by root via cibadmin on hana-ha-vm-1
    
    2 nodes configured
    2 resources configured
    
    Online: [ hana-ha-vm-1 hana-ha-vm-2 ]
    
    Full list of resources:
    
     STONITH-hana-ha-vm-1   (stonith:fence_gce):    Started hana-ha-vm-2
     STONITH-hana-ha-vm-2   (stonith:fence_gce):    Started hana-ha-vm-1
    
    Daemon Status:
      corosync: active/enabled
      pacemaker: active/enabled
      pcsd: active/enabled

Imposta un ritardo per il riavvio di Corosync

  1. Su entrambi gli host come root, crea un file drop-in systemd che ritarda l'avvio di Corosync per garantire la sequenza corretta degli 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 ed esci dall'editor.

  4. Ricarica la configurazione dell'amministratore di sistema.

    systemctl daemon-reload
  5. Verifica che il file di inserimento sia stato creato:

    service corosync status

    Dovresti vedere una riga per il file di inserimento, 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

Abilita gli hook del provider HA/RE SAP HANA

Red Hat consiglia di abilitare gli hook del provider SAP HANA HA/RE al fine di consentire a SAP HANA di inviare notifiche per determinati eventi e migliorare il rilevamento degli errori. Gli hook del provider HA/RE SAP HANA 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:

    > HDB stop

  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_SAPHanaSR]
    provider = SAPHanaSR
    path = /usr/share/SAPHanaSR/srHook
    execution_order = 1
    
    [trace]
    ha_dr_saphanasr = 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 chiamato il metodo di hook srConnectionChanged().

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

    Sostituisci quanto segue:

    • SITE_A: il nome del sito del server SAP HANA principale
    • SITE_B: il nome del sito del server SAP HANA secondario
    • SID_LC: il SID deve essere specificato in lettere minuscole.
    Per visualizzare i nomi dei siti, puoi eseguire il comando crm_mon -A1 | grep site, come utente root, sul server principale SAP HANA o sul server secondario.
    Cmnd_Alias SITEA_SOK = /usr/sbin/crm_attribute -n hana_SID_LC_site_srHook_SITE_A -v SOK -t crm_config -s SAPHanaSR
    Cmnd_Alias SITEA_SFAIL = /usr/sbin/crm_attribute -n hana_SID_LC_site_srHook_SITE_A -v SFAIL -t crm_config -s SAPHanaSR
    Cmnd_Alias SITEB_SOK = /usr/sbin/crm_attribute -n hana_SID_LC_site_srHook_SITE_B -v SOK -t crm_config -s SAPHanaSR
    Cmnd_Alias SITEB_SFAIL = /usr/sbin/crm_attribute -n hana_SID_LC_site_srHook_SITE_B -v SFAIL -t crm_config -s SAPHanaSR
    SID_LCadm ALL=(ALL) NOPASSWD: SITEA_SOK, SITEA_SFAIL, SITEB_SOK, SITEB_SFAIL
    Defaults!SITEA_SOK, SITEA_SFAIL, SITEB_SOK, SITEB_SFAIL !requiretty

  5. Nel file /etc/sudoers, assicurati che sia incluso il seguente testo:

    #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:

    > HDB start

  7. Sull'host principale come SID_LCadm, testa lo stato segnalato dallo script hook:

    > cdtrace
    > awk '/ha_dr_SAPHanaSR.*crm_attribute/ { printf "%s %s %s %s\n",$2,$3,$5,$16 }' nameserver_*

Configura le impostazioni predefinite del cluster

Configura le soglie e il livello di fidelizzazione della migrazione per determinare il numero di failover da tentare prima dell'errore e per impostare il sistema in modo che tenti di riavviare prima l'host attuale. Questa opzione deve essere impostata su un solo nodo per essere applicata al cluster.

  1. Avvia il cluster come root su uno dei due host:

    # pcs cluster start --all #start the cluster
  2. Configura i valori predefiniti delle risorse:

    # pcs resource defaults resource-stickiness=1000
    # pcs resource defaults migration-threshold=5000

    La proprietà resource-stickiness controlla la probabilità che un servizio rimanga in esecuzione. Valori più alti rendono il servizio più fisso. Il valore 1000 indica che il servizio è molto fisso.

    La proprietà migration-threshold specifica il numero di errori che devono verificarsi prima del failover di un servizio su un altro host. Un valore pari a 5000 è sufficientemente alto per impedire il failover in casi di errore di breve durata.

    Puoi controllare le impostazioni predefinite della risorsa inserendo pcs resource defaults.

  3. Configura i valori predefiniti per il timeout delle operazioni delle risorse:

    # pcs resource op defaults timeout=600s

    Puoi controllare le impostazioni predefinite dell'operazione Risorsa inserendo pcs resource op defaults.

  4. Imposta le seguenti proprietà del cluster:

    # pcs property set stonith-enabled="true"
    # pcs property set stonith-timeout="300s"
    

    Puoi controllare le impostazioni proprietarie con pcs property list.

Crea la risorsa SAPHanaTopology

La risorsa SAPHanaTopology ottiene lo stato e la configurazione della replica di sistema HANA sui nodi. Controlla anche l'agente host SAP.

  1. In qualità di utente root su uno dei due host, crea la risorsa SAPHanaTopology:

    # pcs resource create topology_resource_name SAPHanaTopology SID=SID \
       InstanceNumber=inst_num \
       op start timeout=600 \
       op stop timeout=300 \
       op monitor interval=10 timeout=600 \
       clone clone-max=2 clone-node-max=1 interleave=true
  2. Dopo aver creato la risorsa, controlla la configurazione. Aggiungi -clone al nome della risorsa per includere nella risposta le informazioni sul set di cloni:

    RHEL 8 e versioni successive

    # pcs resource config topology_resource_name-clone

    RHEL 7

    # pcs resource show topology_resource_name-clone

    Dovresti vedere un output simile al seguente:

    Clone: SAPHanaTopology_HA1_22-clone
    Meta Attrs: clone-max=2 clone-node-max=1 interleave=true
    Resource: SAPHanaTopology_HA1_22 (class=ocf provider=heartbeat type=SAPHanaTopology)
     Attributes: InstanceNumber=22 SID=HA1
     Operations: methods interval=0s timeout=5 (SAPHanaTopology_HA1_22-methods-interval-0s)
                 monitor interval=10 timeout=600 (SAPHanaTopology_HA1_22-monitor-interval-10)
                 reload interval=0s timeout=5 (SAPHanaTopology_HA1_22-reload-interval-0s)
                 start interval=0s timeout=600 (SAPHanaTopology_HA1_22-start-interval-0s)
                 stop interval=0s timeout=300 (SAPHanaTopology_HA1_22-stop-interval-0s)

Puoi anche controllare gli attributi del cluster utilizzando il comando crm_mon -A1.

Crea la risorsa SAPHana

L'agente di risorse SAPHana gestisce i database configurati per la replica del sistema SAP HANA.

I seguenti parametri nella definizione della risorsa SAPHana sono facoltativi:

  • AUTOMATED_REGISTER che, se impostato su true, registra automaticamente la prima primaria come secondaria alla scadenza del DUPLICATE_PRIMARY_TIMEOUT dopo un takeover. Il valore predefinito è false.

    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 in un sistema HANA in 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.

  • DUPLICATE_PRIMARY_TIMEOUT, che imposta la differenza di tempo in secondi tra due timestamp principali se si verifica una situazione di duplice origine. Il valore predefinito è 7200.

  • PREFER_SITE_TAKEOVER, che determina se i riavvii locali vengono tentati prima dell'inizio del failover. Il valore predefinito è false.

Per ulteriori informazioni su questi parametri, consulta l'articolo Installazione e configurazione di un cluster Red Hat Enterprise Linux 7.6 (e versioni successive) ad alta disponibilità su Google Cloud. È richiesto un abbonamento a Red Hat.

  1. Come root su uno dei due host, crea la risorsa SAP HANA:

    RHEL 8 e versioni successive

    # pcs resource create sap_hana_resource_name SAPHana SID=SID \
    InstanceNumber=inst_num \
    PREFER_SITE_TAKEOVER=true DUPLICATE_PRIMARY_TIMEOUT=7200 AUTOMATED_REGISTER=true \
    op start timeout=3600 \
    op stop timeout=3600 \
    op monitor interval=61 role="Slave" timeout=700 \
    op monitor interval=59 role="Master" timeout=700 \
    op promote timeout=3600 \
    op demote timeout=3600 \
    promotable meta notify=true clone-max=2 clone-node-max=1 interleave=true

    RHEL 7

    # pcs resource create sap_hana_resource_name SAPHana SID=SID \
    InstanceNumber=inst_num \
    PREFER_SITE_TAKEOVER=true DUPLICATE_PRIMARY_TIMEOUT=7200 AUTOMATED_REGISTER=true \
    op start timeout=3600 \
    op stop timeout=3600 \
    op monitor interval=61 role="Slave" timeout=700 \
    op monitor interval=59 role="Master" timeout=700 \
    op promote timeout=3600 \
    op demote timeout=3600 \
    master meta notify=true clone-max=2 clone-node-max=1 interleave=true
  2. Controlla gli attributi delle risorse risultanti:

    RHEL 8 e versioni successive

    # pcs resource config sap_hana_resource_name

    RHEL 7

    # pcs resource show sap_hana_resource_name

    Dovresti vedere un output simile all'esempio seguente:

     Resource: SAPHana_HA1_22 (class=ocf provider=heartbeat type=SAPHana)
      Attributes: AUTOMATED_REGISTER=true DUPLICATE_PRIMARY_TIMEOUT=7200 InstanceNumber=22 PREFER_SITE_TAKEOVER=true SID=HA1
      Meta Attrs: clone-max=2 clone-node-max=1 interleave=true notify=true
      Operations: demote interval=0s timeout=3600 (SAPHana_HA1_22-demote-interval-0s)
                  methods interval=0s timeout=5 (SAPHana_HA1_22-methods-interval-0s)
                  monitor interval=61 role=Slave timeout=700 (SAPHana_HA1_22-monitor-interval-61)
                  monitor interval=59 role=Master timeout=700 (SAPHana_HA1_22-monitor-interval-59)
                  promote interval=0s timeout=3600 (SAPHana_HA1_22-promote-interval-0s)
                  reload interval=0s timeout=5 (SAPHana_HA1_22-reload-interval-0s)
                  start interval=0s timeout=3600 (SAPHana_HA1_22-start-interval-0s)
                  stop interval=0s timeout=3600 (SAPHana_HA1_22-stop-interval-0s)
  3. Dopo aver avviato la risorsa, controlla gli attributi dei nodi per verificare lo stato attuale dei database SAP HANA sui nodi:

    # crm_mon -A1

    Dovresti vedere un output simile al seguente:

    Stack: corosync
    Current DC: hana-ha-vm-2 (version 1.1.19-8.el7_6.5-c3c624ea3d) - partition with quorum
    Last updated: Tue Jun 16 20:07:51 2020
    Last change: Tue Jun 16 20:07:26 2020 by root via crm_attribute on hana-ha-vm-1
    
    2 nodes configured
    6 resources configured
    
    Online: [ hana-ha-vm-1 hana-ha-vm-2 ]
    
    Active resources:
    
    STONITH-hana-ha-vm-1   (stonith:fence_gce):    Started hana-ha-vm-2
    STONITH-hana-ha-vm-2   (stonith:fence_gce):    Started hana-ha-vm-1
    Clone Set: SAPHanaTopology_HA1_22-clone [SAPHanaTopology_HA1_22]
        Started: [ hana-ha-vm-1 hana-ha-vm-2 ]
    Master/Slave Set: SAPHana_HA1_22-master [SAPHana_HA1_22]
        Masters: [ hana-ha-vm-1 ]
        Slaves: [ hana-ha-vm-2 ]
    
    Node Attributes:
    * Node hana-ha-vm-1:
       + hana_ha1_clone_state              : PROMOTED
       + hana_ha1_op_mode                  : logreplay
       + hana_ha1_remoteHost               : hana-ha-vm-2
       + hana_ha1_roles                    : 4:P:master1:master:worker:master
       + hana_ha1_site                     : hana-ha-vm-1
       + hana_ha1_srmode                   : syncmem
       + hana_ha1_sync_state               : PRIM
       + hana_ha1_version                  : 1.00.122.27.1568902538
       + hana_ha1_vhost                    : hana-ha-vm-1
       + lpa_ha1_lpt                       : 1592338046
       + master-SAPHana_HA1_22             : 150
    * Node hana-ha-vm-2:
       + hana_ha1_clone_state              : DEMOTED
       + hana_ha1_op_mode                  : logreplay
       + hana_ha1_remoteHost               : hana-ha-vm-1
       + hana_ha1_roles                    : 4:S:master1:master:worker:master
       + hana_ha1_site                     : hana-ha-vm-2
       + hana_ha1_srmode                   : syncmem
       + hana_ha1_sync_state               : SOK
       + hana_ha1_version                  : 1.00.122.27.1568902538
       + hana_ha1_vhost                    : hana-ha-vm-2
       + lpa_ha1_lpt                       : 30
       + master-SAPHana_HA1_22             : 100

Crea una risorsa di indirizzo IP virtuale

Devi creare una risorsa cluster per il VIP. La risorsa VIP è localizzata nel sistema operativo principale e non è instradabile da altri host. Il bilanciatore del carico instrada il traffico inviato al VIP all'host di backend in base al controllo di integrità.

Come root su uno dei due host:

# pcs resource create resource_name \
  IPaddr2 ip="vip-address" nic=eth0 cidr_netmask=32 \
  op monitor interval=3600s timeout=60s

Il valore vip-address è lo stesso indirizzo IP prenotato in precedenza e specificato nella regola di forwarding per il front-end del bilanciatore del carico. Modifica l'interfaccia di rete in base alla tua configurazione.

crea i vincoli

I vincoli vengono creati per definire i servizi che devono essere avviati per primi e quelli che devono essere eseguiti insieme sullo stesso host. Ad esempio, l'indirizzo IP deve trovarsi sullo stesso host dell'istanza HANA principale.

  1. Definisci il vincolo dell'ordine iniziale:

    RHEL 8 e versioni successive

    # pcs constraint order topology_resource_name-clone \
    then sap_hana_resource_name-clone symmetrical=false

    RHEL 7

    # pcs constraint order topology_resource_name-clone \
    then sap_hana_resource_name-master symmetrical=false

    La specifica di symmetrical=false indica che il vincolo si applica solo all'avvio e non all'arresto.

    Tuttavia, poiché hai impostato interleave=true per queste risorse in un passaggio precedente, i processi possono avviarsi in parallelo. In altre parole, puoi avviare SAPHana su qualsiasi nodo non appena SAPHanaTopology è in esecuzione.

  2. Controlla i vincoli:

    # pcs constraint

    Dovresti vedere un output simile al seguente:

    Location Constraints:
     Resource: STONITH-hana-ha-vm-1
       Disabled on:
         Node: hana-ha-vm-1 (score:-INFINITY)
     Resource: STONITH-hana-ha-vm-2
       Disabled on:
         Node: hana-ha-vm-2 (score:-INFINITY)
    Ordering Constraints:
     start SAPHanaTopology_HA1_22-clone then start SAPHana_HA1_22-master (kind:Mandatory) (non-symmetrical)
    Colocation Constraints:
    Ticket Constraints:

Installa listener e crea una risorsa per il controllo di integrità

Per configurare una risorsa per il controllo di integrità, devi prima installare i listener.

Installa un listener

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. 1. Installa un listener TCP come root sull'istanza master nei sistemi primario e secondario. Queste istruzioni installano e utilizzano HAProxy come listener.

# yum install haproxy

  1. Apri il file di configurazione haproxy.cfg per la modifica:

    # vi /etc/haproxy/haproxy.cfg
    1. Nella sezione defaults di haproxy.cfg, modifica mode in tcp.

    2. Dopo la sezione relativa ai valori predefiniti, crea una nuova sezione aggiungendo:

      #---------------------------------------------------------------------
      # Health check listener port for SAP HANA HA cluster
      #---------------------------------------------------------------------
      listen healthcheck
        bind *:healthcheck-port-num

      La porta di associazione è la stessa che hai utilizzato quando hai creato il controllo di integrità.

      Al termine, gli aggiornamenti dovrebbero essere simili al seguente esempio:

      #---------------------------------------------------------------------
      # common defaults that all the 'listen' and 'backend' sections will
      # use if not designated in their block
      #---------------------------------------------------------------------
      defaults
        mode                    tcp
        log                     global
        option                  tcplog
        option                  dontlognull
        option http-server-close
        # option forwardfor       except 127.0.0.0/8
        option                  redispatch
        retries                 3
        timeout http-request    10s
        timeout queue           1m
        timeout connect         10s
        timeout client          1m
        timeout server          1m
        timeout http-keep-alive 10s
        timeout check           10s
        maxconn                 3000
      
      #---------------------------------------------------------------------
      # Set up health check listener for SAP HANA HA cluster
      #---------------------------------------------------------------------
      listen healthcheck
       bind *:60000
  2. Su ogni host come root, avvia il servizio per confermare che sia configurato correttamente:

    # systemctl start haproxy.service
  3. Nella pagina Bilanciatore del carico della console Google Cloud, fai clic sulla voce del bilanciatore del carico:

    Pagina Bilanciamento del carico

    Nella sezione Backend della pagina Dettagli bilanciatore del carico, se il servizio HAProxy è attivo su entrambi gli host, vedrai 1/1 nella colonna Integro di ogni voce del gruppo di istanze.

    L'acquisizione schermo mostra "1/1" nella colonna Integro di entrambi i gruppi di istanze, a indicare che entrambi sono integri.

  4. Su ogni host, interrompi il servizio HAProxy:

    # systemctl stop haproxy.service

    Dopo aver arrestato il servizio HAProxy su ciascun host, nella colonna Stato integro di ogni gruppo di istanze viene visualizzato 0/1.

    L'acquisizione schermo mostra "0/1" nella colonna Integrità di ogni
gruppo di istanze, per indicare che non è presente alcun listener attivo.

    In seguito, quando viene configurato il controllo di integrità, il cluster riavvia l'ascoltatore sul nodo master.

Crea la risorsa per il controllo di integrità

  1. Su entrambi gli host come root, crea una risorsa di controllo di integrità per il servizio HAProxy:

    # pcs resource create healthcheck_resource_name service:haproxy op monitor interval=10s timeout=20s
  2. Verifica che il servizio di controllo di integrità sia attivo sullo stesso host dell'istanza SAP HANA master e della risorsa VIP:

    # pcs status

    Se la risorsa del controllo di integrità non si trova sull'host principale, spostala con il seguente comando:

    # pcs resource move healthcheck_resource_name target_host_name
    # pcs resource clear healthcheck_resource_name

    Il comando pcs resource clear lascia la risorsa nella nuova posizione, ma rimuove il vincolo di località indesiderato creato dal comando pcs resource move.

    Nello stato, la sezione delle risorse dovrebbe essere simile al seguente esempio:

    Full list of resources:
    
    STONITH-hana-ha-vm-1   (stonith:fence_gce):    Started hana-ha-vm-2
    STONITH-hana-ha-vm-2   (stonith:fence_gce):    Started hana-ha-vm-1
    Clone Set: SAPHanaTopology_HA1_22-clone [SAPHanaTopology_HA1_22]
        Started: [ hana-ha-vm-1 hana-ha-vm-2 ]
    Master/Slave Set: SAPHana_HA1_22-master [SAPHana_HA1_22]
        Masters: [ hana-ha-vm-1 ]
        Slaves: [ hana-ha-vm-2 ]
    rsc_vip_HA1_22 (ocf::heartbeat:IPaddr2):       Started hana-ha-vm-1
    rsc_healthcheck_HA1    (service:haproxy):      Started hana-ha-vm-2
  3. Raggruppa le risorse VIP e del controllo di integrità:

    # pcs resource group add rsc-group-name healthcheck_resource_name vip_resource_name

    Nello stato del cluster, la sezione delle risorse dovrebbe essere simile all'esempio seguente:

    Full list of resources:
    
    STONITH-hana-ha-vm-1   (stonith:fence_gce):    Started hana-ha-vm-2
    STONITH-hana-ha-vm-2   (stonith:fence_gce):    Started hana-ha-vm-1
    Clone Set: SAPHanaTopology_HA1_22-clone [SAPHanaTopology_HA1_22]
        Started: [ hana-ha-vm-1 hana-ha-vm-2 ]
    Master/Slave Set: SAPHana_HA1_22-master [SAPHana_HA1_22]
        Masters: [ hana-ha-vm-1 ]
        Slaves: [ hana-ha-vm-2 ]
    Resource Group: g-primary
        rsc_healthcheck_HA1        (service:haproxy):      Started hana-ha-vm-1
        rsc_vip_HA1_22     (ocf::heartbeat:IPaddr2):       Started hana-ha-vm-1
  4. Crea un vincolo che localizza il nuovo gruppo sullo stesso nodo dell'istanza SAP HANA master.

    RHEL 8 e versioni successive

    # pcs constraint colocation add rsc-group-name with master sap_hana_resource_name-clone 4000

    RHEL 7

    # pcs constraint colocation add rsc-group-name with master sap_hana_resource_name-master 4000

    I vincoli finali dovrebbero essere simili all'esempio seguente:

    # pcs constraint
    Location Constraints:
     Resource: STONITH-hana-ha-vm-1
       Disabled on:
         Node: hana-ha-vm-1 (score:-INFINITY)
     Resource: STONITH-hana-ha-vm-2
       Disabled on:
         Node: hana-ha-vm-2 (score:-INFINITY)
    Ordering Constraints:
     start SAPHanaTopology_HA1_22-clone then start SAPHana_HA1_22-master (kind:Mandatory) (non-symmetrical)
    Colocation Constraints:
     g-primary with SAPHana_HA1_22-master (score:4000) (rsc-role:Started) (with-rsc-role:Master)
    Ticket Constraints:

Testa 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 le istanze con una singola interfaccia di rete
  • iptables ... DROP per le 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 su istanze con una o più interfacce di rete. Il test convalida sia il failover sia la scherma. Se per le istanze sono definite più interfacce di rete, puoi utilizzare il comando iptables sull'host secondario per eliminare il traffico in entrata e in uscita in base all'IP utilizzato dall'host principale per le comunicazioni con il cluster, simulando così una perdita di connessione di rete verso l'host principale.

  1. Sull'host attivo, come root, metti offline l'interfaccia di rete:

    # 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 dei due host tramite SSH e passa all'utente root.

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

    Cluster name: hana-ha-cluster
    Stack: corosync
    Current DC: hana-ha-vm-2 (version 1.1.19-8.el7_6.5-c3c624ea3d) - partition with quorum
    Last updated: Wed Jun 17 01:04:36 2020
    Last change: Wed Jun 17 01:03:58 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 ]
    
    Full list of resources:
    
    STONITH-hana-ha-vm-1   (stonith:fence_gce):    Started hana-ha-vm-2
    STONITH-hana-ha-vm-2   (stonith:fence_gce):    Started hana-ha-vm-1
    
    Clone Set: SAPHanaTopology_HA1_22-clone [SAPHanaTopology_HA1_22]
        Started: [ hana-ha-vm-1 hana-ha-vm-2  ]
    Master/Slave Set: SAPHana_HA1_22-master [SAPHana_HA1_22]
        Masters: [ hana-ha-vm-2 ]
        Slaves: [ hana-ha-vm-1  ]
    Resource Group: g-primary
        rsc_healthcheck_HA1        (service:haproxy):      Started hana-ha-vm-2
        rsc_vip_HA1_22     (ocf::heartbeat:IPaddr2):       Started hana-ha-vm-2
    
    Daemon Status:
     corosync: active/enabled
     pacemaker: active/enabled
     pcsd: active/enabled

Configura HANA attiva/attiva (lettura abilitata)

A partire da SAP HANA 2.0 SPS1, puoi configurare HANA Active/Active (Read Enabled) in un cluster Pacemaker. Questa opzione è facoltativa.

Per configurare HANA Active/Active (Read Enabled) in un cluster Pacemaker, completa i seguenti passaggi.

Configura il supporto per il failover di Cloud Load Balancing per l'host secondario

Il servizio bilanciatore del carico di rete passthrough interno con supporto del failover instrada il traffico all'host secondario in un cluster SAP HANA in base a un servizio di controllo di integrità.

Per configurare il supporto del failover per l'host secondario, segui questi passaggi:

  1. Apri Cloud Shell:

    Vai a Cloud Shell

  2. Prenota un indirizzo IP per l'IP virtuale eseguendo questo comando.

    L'indirizzo IP virtuale (VIP) segue il sistema SAP HANA secondario. Questo è l'indirizzo IP utilizzato dalle applicazioni per accedere al sistema SAP HANA secondario. Il bilanciatore del carico instrada il traffico inviato al VIP all'istanza VM che ospita attualmente il sistema secondario.

    Se ometti il flag --addresses nel comando seguente, verrà scelto automaticamente un indirizzo IP nella subnet specificata. Per ulteriori informazioni sulla prenotazione di un IP statico, consulta Prenotare un indirizzo IP interno statico.

    $ gcloud compute addresses create secondary-vip-name \
      --region cluster-region --subnet cluster-subnet \
      --addresses secondary-vip-address
  3. Crea un controllo di integrità di Compute Engine eseguendo questo comando.

    Per la porta utilizzata dal controllo di integrità, scegli una porta nell'intervallo privato, 49152-65535, per evitare conflitti con altri servizi. La porta deve essere diversa da quella configurata per il controllo di integrità utilizzato per l'accesso al sistema primario HANA. I valori di intervallo di controllo e di timeout sono leggermente più lunghi dei valori predefiniti per 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 secondary-health-check-name \
      --port=secondary-healthcheck-port-num \
      --proxy-header=NONE --check-interval=10 --timeout=10 --unhealthy-threshold=2 \
      --healthy-threshold=2
  4. Configura il bilanciatore del carico e il gruppo di failover eseguendo questi comandi.

    Qui devi creare un servizio di backend aggiuntivo e utilizzare gli stessi gruppi di istanze che hai creato in precedenza per il servizio di backend dietro il bilanciatore del carico TCP/UDP interno per il tuo sistema principale SAP HANA.

    1. Crea il servizio di backend del bilanciatore del carico:

      $ gcloud compute backend-services create secondary-backend-service-name \
        --load-balancing-scheme internal \
        --health-checks secondary-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 principali al servizio di backend:

      $ gcloud compute backend-services add-backend secondary-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 secondary-backend-service-name \
        --instance-group secondary-ig-name \
        --instance-group-zone secondary-zone \
        --failover \
        --region cluster-region
    4. Creare una regola di forwarding.

      Per il flag dell'indirizzo IP, specifica l'indirizzo IP che hai prenotato per il VIP. Se hai bisogno di accedere al sistema secondario HANA dall'esterno dell'area geografica specificata nel comando seguente, includi il flag --allow-global-access nella definizione della regola di forwarding.

      $ gcloud compute forwarding-rules create secondary-rule-name \
        --load-balancing-scheme internal \
        --address secondary-vip-name \
        --subnet cluster-subnet \
        --region cluster-region \
        --backend-service secondary-backend-service-name \
        --ports ALL

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

Abilita HANA attiva/attiva (lettura abilitata)

Sul tuo host secondario, abilita Attivo/Attivo (abilitato alla lettura) per la replica del sistema SAP HANA seguendo questi passaggi:

  1. Come root, metti il cluster in modalità di manutenzione:

    $ pcs property set maintenance-mode=true

  2. Come SID_LCadm, interrompi SAP HANA:

    > HDB stop
  3. Come SID_LCadm, registra nuovamente il sistema secondario HANA con la replica del sistema SAP HANA utilizzando la modalità operativa logreplay_readaccess:

    > hdbnsutil -sr_register --remoteHost=primary-host-name --remoteInstance=inst_num \
     --replicationMode=syncmem --operationMode=logreplay_readaccess --name=secondary-host-name
  4. Come SID_LCadm, avvia SAP HANA:

    > HDB start
  5. Come SID_LCadm, verifica che lo stato della sincronizzazione HANA sia ACTIVE:

    > cdpy; python systemReplicationStatus.py --sapcontrol=1 | grep overall_replication_status

    Dovresti vedere un output simile all'esempio seguente:

    overall_replication_status=ACTIVE

Configura Pacemaker

Configura il cluster ad alta disponibilità di Pacemaker per lo stato Attivo/Attivo (lettura abilitata) eseguendo i seguenti comandi come root:

  1. Configura i listener per i controlli di integrità:

    1. Copia e rinomina il file di configurazione haproxy.service predefinito per trasformarlo in un file modello per le diverse istanze haproxy:

      # cp /usr/lib/systemd/system/haproxy.service \
           /etc/systemd/system/haproxy@.service
    2. Modifica le sezioni [Unit] e [Service] del file haproxy@.service per includere il parametro dell'istanza %i, come mostrato nell'esempio seguente:

      RHEL 7

      [Unit]
      Description=HAProxy Load Balancer %i
      After=network-online.target

      [Service] EnvironmentFile=/etc/sysconfig/haproxy ExecStart=/usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy-%i.cfg -p /run/haproxy-%i.pid $OPTIONS ...

      RHEL 8

      [Unit]
      Description=HAProxy Load Balancer %i
      After=network-online.target
      Wants=network-online.target

      [Service] Environment="CONFIG=/etc/haproxy/haproxy-%i.cfg" "PIDFILE=/run/haproxy-%i.pid" ...

      Per ulteriori informazioni da Red Hat sui modelli di unità systemd, consulta Utilizzo delle unità create con un'istanza.

    3. Crea un file di configurazione haproxy.cfg per il tuo sistema principale SAP HANA. Ad esempio:

      # vi /etc/haproxy/haproxy-primary.cfg
    4. Nel file di configurazione haproxy-primary.cfg del tuo sistema principale SAP HANA, inserisci la configurazione seguente e sostituisci healthcheck-port-num con il numero di porta specificato al momento della creazione precedente del controllo di integrità di Compute Engine per il sistema primario HANA:

      global
        chroot      /var/lib/haproxy
        pidfile     /var/run/haproxy-%i.pid
        user        haproxy
        group       haproxy
        daemon
      defaults
        mode                    tcp
        log                     global
        option                  dontlognull
        option                  redispatch
        retries                 3
        timeout queue           1m
        timeout connect         10s
        timeout client          1m
        timeout server          1m
        timeout check           10s
        maxconn                 3000
      
      # Listener for SAP healthcheck
      listen healthcheck
        bind *:healthcheck-port-num
    5. Crea un file di configurazione haproxy.cfg per il tuo sistema secondario SAP HANA. Ad esempio:

      # vi /etc/haproxy/haproxy-secondary.cfg
    6. Nel file di configurazione haproxy-secondary.cfg per il tuo sistema secondario SAP HANA, inserisci la configurazione seguente e sostituisci secondary-healthcheck-port-num con il numero di porta specificato al momento della creazione precedente del controllo di integrità di Compute Engine per il sistema secondario HANA:

      global
        chroot      /var/lib/haproxy
        pidfile     /var/run/haproxy-%i.pid
        user        haproxy
        group       haproxy
        daemon
      defaults
        mode                    tcp
        log                     global
        option                  dontlognull
        option                  redispatch
        retries                 3
        timeout queue           1m
        timeout connect         10s
        timeout client          1m
        timeout server          1m
        timeout check           10s
        maxconn                 3000
      
      # Listener for SAP healthcheck
      listen healthcheck
        bind *:secondary-healthcheck-port-num
    7. Rimuovi la configurazione del listener esistente da /etc/haproxy/haproxy.cfg:

      #---------------------------------------------------------------------
      # Health check listener port for SAP HANA HA cluster
      #---------------------------------------------------------------------
      listen healthcheck
        bind *:healthcheck-port-num
    8. Ricarica i servizi systemd per caricare le modifiche:

      # systemctl daemon-reload
    9. Verifica che i due servizi haproxy siano impostati correttamente:

      # systemctl start haproxy@primary
      # systemctl start haproxy@secondary
      
      # systemctl status haproxy@primary
      # systemctl status haproxy@secondary

      Lo stato restituito dovrebbe mostrare haproxy@primary.service e haproxy@secondary.service come active (running). Di seguito è riportato un output di esempio per haproxy@primary.service:

      ● haproxy@primary.service - Cluster Controlled haproxy@primary
        Loaded: loaded (/etc/systemd/system/haproxy@.service; disabled; vendor preset: disabled)
        Drop-In: /run/systemd/system/haproxy@primary.service.d
                 └─50-pacemaker.conf
        Active: active (running) since Fri 2022-10-07 23:36:09 UTC; 1h 13min ago
      Main PID: 21064 (haproxy-systemd)
        CGroup: /system.slice/system-haproxy.slice/haproxy@primary.service
                ├─21064 /usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy-primary.cfg -p /run/hapro...
                ├─21066 /usr/sbin/haproxy -f /etc/haproxy/haproxy-primary.cfg -p /run/haproxy-primary.pid -...
                └─21067 /usr/sbin/haproxy -f /etc/haproxy/haproxy-primary.cfg -p /run/haproxy-primary.pid -...
      
      Oct 07 23:36:09 hana-ha-vm-1 systemd[1]: Started Cluster Controlled haproxy@primary.
    10. In Cloud Shell, dopo aver atteso per alcuni secondi che il controllo di integrità rilevi il listener, controlla l'integrità dei gruppi di istanza di backend nei servizi di backend principali e secondari:

      $ gcloud compute backend-services get-health backend-service-name \   
        --region cluster-region
      $ gcloud compute backend-services get-health secondary-backend-service-name \
        --region cluster-region

      Dovresti vedere un output simile al seguente, che mostra la VM su cui stai attualmente lavorando, healthState è HEALTHY:

      ---
      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
      
    11. Interrompi entrambi i servizi per consentire a Pacemaker di gestirli:

      # systemctl stop haproxy@primary
      # systemctl stop haproxy@secondary
    12. Ripeti i passaggi precedenti su ciascun host nel cluster.

  2. Crea una risorsa IP del cluster locale per l'indirizzo VIP che hai prenotato per il sistema secondario:

    # pcs resource create secondary_vip_resource_name \
      IPaddr2 ip="secondary-vip-address" nic=eth0 cidr_netmask=32 \
      op monitor interval=3600s timeout=60s
  3. Configura il servizio di controllo di integrità dell'helper eseguendo questi comandi.

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

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

      1. Elimina la risorsa per il servizio di controllo di integrità per il sistema principale HANA:

        # pcs resource delete healthcheck_resource_name --force
      2. Aggiungi una nuova risorsa per il servizio di controllo di integrità per il sistema primario HANA:

        # pcs resource create primary_healthcheck_resource_name \
         service:haproxy@primary op monitor interval=10s timeout=20s
      3. Aggiungi una nuova risorsa per il servizio di controllo di integrità per il sistema secondario HANA:

        # pcs resource create secondary_healthcheck_resource_name \
         service:haproxy@secondary op monitor interval=10s timeout=20s
    2. Raggruppa le risorse del servizio di controllo di integrità VIP e helper

      1. Aggiungi la nuova risorsa del controllo di integrità al gruppo di risorse esistente per le risorse VIP principali:

        # pcs resource group add rsc-group-name primary_healthcheck_resource_name \
         --before vip_resource_name
      2. Aggiungi un nuovo gruppo di risorse per raggruppare le risorse del servizio di controllo di integrità VIP e helper per il sistema secondario HANA:

        # pcs resource group add secondary-rsc-group-name \
         secondary_healthcheck_resource_name secondary_vip_resource_name
  4. Crea due vincoli di località eseguendo questi comandi:

    Questi vincoli servono a garantire che il gruppo di risorse VIP secondario si trovi nel nodo del cluster corretto:

    # pcs constraint location secondary-rsc-group-name rule score=INFINITY \
      hana_sid_sync_state eq SOK and hana_sid_roles eq 4:S:master1:master:worker:master
    # pcs constraint location secondary-rsc-group-name rule score=2000 \
      hana_sid_sync_state eq PRIM and hana_sid_roles eq 4:P:master1:master:worker:master
  5. Esci dalla modalità di manutenzione del cluster:

    # pcs property set maintenance-mode=false
  6. Controlla lo stato del cluster:

    # pcs status

    Gli esempi seguenti mostrano lo stato di un cluster attivo e configurato correttamente per la replica di sistema SAP HANA con stato Attivo/Attivo (lettura abilitata). Dovresti vedere un gruppo di risorse aggiuntivo per le risorse VIP del sistema secondario. Nell'esempio seguente, il nome del gruppo di risorse è g-secondary.

    Cluster name: hacluster
      Stack: corosync
      Current DC: hana-ha-vm-1 (version 1.1.23-1.el7_9.1-9acf116022) - partition with quorum
      Last updated: Sat Oct  8 00:37:08 2022
      Last change: Sat Oct  8 00:36:57 2022 by root via crm_attribute on hana-test-2
    
      2 nodes configured
      10 resource instances configured
    
    Online: [ hana-ha-vm-1 hana-ha-vm-2 ]
    
    Full list of resources:
      STONITH-hana-ha-vm-1    (stonith:fence_gce):    Started hana-ha-vm-2
      STONITH-hana-ha-vm-2    (stonith:fence_gce):    Started hana-ha-vm-1
      Resource Group: g-primary
        rsc_healthcheck_HA1-primary        (service:haproxy@primary):      Started hana-ha-vm-1
        rsc_vip_HA1_00     (ocf::heartbeat:IPaddr2):       Started hana-ha-vm-1
      Clone Set: SAPHanaTopology_HA1_00-clone [SAPHanaTopology_HA1_00]
        Started: [ hana-ha-vm-1 hana-ha-vm-2 ]
      Master/Slave Set: SAPHana_HA1_00-master [SAPHana_HA1_00]
        Masters: [ hana-ha-vm-1 ]
        Slaves: [ hana-ha-vm-2 ]
      Clone Set: msl_SAPHana_HA1_HDB00 [rsc_SAPHana_HA1_HDB00] (promotable):
        Masters: [ hana-ha-vm-1 ]
        Slaves: [ hana-ha-vm-2 ]
      Resource Group: g-secondary
        rsc_healthcheck_HA1-secondary        (service:haproxy@secondary):      Started hana-ha-vm-2
        rsc_vip_HA1_00-secondary     (ocf::heartbeat:IPaddr2):       Started hana-ha-vm-2
    

Valuta il carico di lavoro SAP HANA

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

Workload Manager consente di analizzare e valutare automaticamente i carichi di lavoro ad alta disponibilità SAP HANA confrontandoli con le best practice dei fornitori SAP, Google Cloud e sistemi operativi. Ciò consente di migliorare la qualità, le prestazioni e l'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 su come creare ed eseguire 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 RHEL, consulta Risoluzione dei problemi relativi alle configurazioni ad alta disponibilità per SAP.

Assistenza per SAP HANA su RHEL

Se hai bisogno di aiuto per risolvere un problema con i cluster ad alta disponibilità per SAP HANA su RHEL, raccogli le informazioni diagnostiche richieste e contatta l'assistenza clienti Google Cloud. Per ulteriori informazioni, vedi Cluster ad alta disponibilità con informazioni diagnostiche su RHEL.

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 determina che un problema si verifica nei tuoi sistemi SAP, viene indirizzato al supporto SAP.

Per problemi relativi ai prodotti SAP, registra la richiesta di assistenza con l'assistenza SAP. SAP valuta il ticket di assistenza e, se risulta che si tratti di un problema di infrastruttura Google Cloud, SAP trasferisce il ticket al componente Google Cloud appropriato nel suo sistema: BC-OP-LNX-GOOGLE o BC-OP-NT-GOOGLE.

Requisiti di assistenza

Prima di poter ricevere assistenza per sistemi SAP e 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 bastion utilizzando SSH o tramite il server Windows tramite SAP HANA Studio.

  • Per connetterti a SAP HANA tramite l'istanza bastion, connettiti al bastion host e 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 connetterti all'istanza Windows Server. Dopo la connessione, installa manualmente SAP HANA Studio e accedi al tuo database SAP HANA.

Attività post-deployment

Dopo aver completato il deployment, completa questi passaggi:

  1. Modificare le password temporanee per l'amministratore di sistema e il 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 la tua istanza SAP HANA, configura ed esegui il backup del nuovo database SAP HANA.

  3. Se viene eseguito il deployment del sistema SAP HANA 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 di rete complessiva 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: