Guida alla configurazione del cluster con scale out ad alta disponibilità per SAP HANA su RHEL

Questa guida mostra come eseguire il deployment e configurare manualmente un cluster ad alta disponibilità (HA) Red Hat Enterprise Linux (RHEL) per un sistema con scale out SAP HANA su Google Cloud che utilizza un bilanciatore del carico di rete passthrough interno per gestire l'indirizzo IP virtuale (VIP).

Questa guida include i passaggi per:

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

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

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

Il sistema di cui viene eseguito il deployment in questa guida

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

Il deployment finale comprende le seguenti risorse:

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

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

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

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

Prerequisiti

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

Creare una rete

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

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

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

Per creare una rete VPC per il tuo progetto, completa i seguenti passaggi:

  1. Crea una rete in modalità personalizzata. Per ulteriori informazioni, consulta la sezione Creazione di una rete in modalità personalizzata.

  2. Crea una subnet e specifica la regione e l'intervallo IP. Per saperne di più, consulta Aggiungere subnet.

Configurazione di un gateway NAT

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

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

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

aggiungi regole firewall

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

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

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

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

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

Per creare le regole firewall per il tuo progetto, consulta Creazione delle regole firewall.

Deployment delle VM e di SAP HANA

In questa guida viene utilizzato un file di configurazione Terraform fornito da Google Cloud per eseguire il deployment di quanto segue:

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

I sistemi SAP HANA utilizzano la replica del sistema asincrono in modo che uno dei sistemi SAP HANA funzioni come sistema principale attivo e l'altro funzioni come sistema secondario in standby. Esegui il deployment di entrambi i sistemi SAP HANA nella stessa regione, idealmente in zone diverse.

Se hai bisogno di un sistema a scalabilità orizzontale con host in standby per il failover automatico dell'host SAP HANA, devi consultare la pagina Terraform: sistema di scale out di SAP HANA con errore di configurazione automatica dell'host.

Puoi definire le opzioni di configurazione per il cluster ad alta disponibilità SAP HANA in un file di configurazione Terraform.

Le istruzioni seguenti utilizzano Cloud Shell, ma sono generalmente applicabili a un terminale locale con Terraform installato e configurato con il provider Google.

  1. Conferma che le tue quote attuali per risorse come dischi permanenti e CPU siano sufficienti per i sistemi SAP HANA che stai per installare. Se le quote non sono sufficienti, il deployment non riesce.

    Per i requisiti delle quote di SAP HANA, consulta la pagina Prezzi e considerazioni sulle quote per SAP HANA.

    Vai a Quote

  2. Apri Cloud Shell o il terminale locale.

    Apri Cloud Shell

  3. Scarica il file di configurazione manual_sap_hana_scaleout_ha.tf nella directory di lavoro eseguendo il comando seguente in Cloud Shell o nel terminale:

    $ wget https://storage.googleapis.com/cloudsapdeploy/terraform/latest/terraform/sap_hana_ha/terraform/manual_sap_hana_scaleout_ha.tf
  4. Apri il file manual_sap_hana_scaleout_ha.tf nell'editor di codice di Cloud Shell oppure, se utilizzi il terminale, apri il file in un editor di testo a tua scelta.

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

  5. Nel file manual_sap_hana_scaleout_ha.tf, sia per sap_hana_primary sia per sap_hana_secondary aggiorna i valori dell'argomento sostituendo i contenuti tra virgolette doppie con i valori dell'installazione. Gli argomenti sono descritti nella tabella seguente.

    Argomento Tipo di dati Descrizione
    source Stringa

    Specifica la località e la versione del modulo Terraform da utilizzare durante il deployment.

    Il file di configurazione manual_sap_hana_scaleout_ha.tf include due istanze dell'argomento source: una attiva e l'altra inclusa come commento. L'argomento source attivo per impostazione predefinita specifica latest come versione del modulo. La seconda istanza dell'argomento source, che per impostazione predefinita viene disattivata da un carattere # iniziale, specifica un timestamp che identifica la versione di un modulo.

    Se tutti i deployment devono utilizzare la stessa versione del modulo, rimuovi il carattere # iniziale dall'argomento source che specifica il timestamp della versione e aggiungilo all'argomento source che specifica latest.

    project_id Stringa Specifica l'ID del progetto Google Cloud in cui stai eseguendo il deployment del sistema. Ad esempio, my-project-x.
    machine_type Stringa Specifica il tipo di macchina virtuale (VM) Compute Engine su cui devi eseguire il tuo sistema SAP. Se hai bisogno di un tipo di VM personalizzata, specifica un tipo di VM predefinito con un numero di vCPU più vicino al numero necessario, pur essendo più grande. Al termine del deployment, modifica il numero di vCPU e la quantità di memoria.

    Ad esempio, n1-highmem-32.

    network Stringa Specifica il nome della rete in cui è necessario creare il bilanciatore del carico che gestisce il VIP.

    Se utilizzi una rete VPC condivisa, devi aggiungere l'ID del progetto host come directory padre del nome della rete. Ad esempio, HOST_PROJECT_ID/NETWORK_NAME.

    subnetwork Stringa Specifica il nome della subnet creata in un passaggio precedente. Se esegui il deployment in un VPC condiviso, specifica questo valore come SHARED_VPC_PROJECT_ID/SUBNETWORK. Ad esempio, myproject/network1.
    linux_image Stringa Specifica il nome dell'immagine del sistema operativo Linux in cui vuoi eseguire il deployment del tuo sistema SAP. Ad esempio, rhel-9-2-sap-ha o sles-15-sp5-sap. Per l'elenco delle immagini del sistema operativo disponibili, consulta la pagina Immagini nella console Google Cloud.
    linux_image_project Stringa Specifica il progetto Google Cloud contenente l'immagine che hai specificato per l'argomento linux_image. Può trattarsi di un tuo progetto personale o di un progetto di immagini Google Cloud. Per un'immagine Compute Engine, specifica rhel-sap-cloud o suse-sap-cloud. Per trovare il progetto di immagine per il tuo sistema operativo, consulta Dettagli del sistema operativo.
    primary_instance_name Stringa Specifica un nome dell'istanza VM per il sistema SAP HANA principale. Il nome può contenere lettere minuscole, numeri o trattini.
    primary_zone Stringa Specifica una zona in cui viene eseguito il deployment del sistema SAP HANA principale. Le zone primarie e secondarie devono trovarsi nella stessa regione. Ad esempio, us-east1-c.
    secondary_instance_name Stringa Specifica un nome dell'istanza VM per il sistema SAP HANA secondario. Il nome può contenere lettere minuscole, numeri o trattini.
    secondary_zone Stringa Specifica una zona in cui viene eseguito il deployment del sistema SAP HANA secondario. Le zone primarie e secondarie devono trovarsi nella stessa regione. Ad esempio, us-east1-b.
    sap_hana_deployment_bucket Stringa Per installare automaticamente SAP HANA sulle VM di cui è stato eseguito il deployment, specifica il percorso del bucket Cloud Storage che contiene i file di installazione di SAP HANA. Non includere gs:// nel percorso; includi solo il nome del bucket e i nomi delle eventuali cartelle. Ad esempio, my-bucket-name/my-folder.

    Il bucket Cloud Storage deve esistere nel progetto Google Cloud specificato per l'argomento project_id.

    sap_hana_scaleout_nodes Numero intero Specifica il numero di host worker necessari nel sistema di scale out. Per eseguire il deployment di un sistema a scalabilità orizzontale, devi avere almeno un host worker.

    Terraform crea gli host worker oltre all'istanza SAP HANA principale. Ad esempio, se specifichi 3, nel tuo sistema con scale out viene eseguito il deployment di quattro istanze SAP HANA.

    sap_hana_sid Stringa Per installare automaticamente SAP HANA sulle VM di cui è stato eseguito il deployment, specifica l'ID di sistema SAP HANA. L'ID deve essere composto da tre caratteri alfanumerici e deve iniziare con una lettera. Tutte le lettere devono essere in maiuscolo. Ad esempio, ED1.
    sap_hana_instance_number Numero intero Facoltativo. Specifica il numero di istanza, da 0 a 99, del sistema SAP HANA. Il valore predefinito è 0.
    sap_hana_sidadm_password Stringa Per installare automaticamente SAP HANA sulle VM di cui è stato eseguito il deployment, specifica una password SIDadm temporanea per gli script di installazione da utilizzare durante il deployment. La password deve contenere almeno 8 caratteri e includere almeno una lettera maiuscola, una lettera minuscola e un numero.

    Invece di specificare la password come testo normale, ti consigliamo di utilizzare un secret. Per maggiori informazioni, consulta Gestione delle password.

    sap_hana_sidadm_password_secret Stringa Facoltativo. Se utilizzi Secret Manager per archiviare la password di SIDadm, specifica il nome del secret corrispondente a questa password.

    In Secret Manager, assicurati che il valore del secret, ovvero la password, contenga almeno 8 caratteri e includa almeno una lettera maiuscola, una lettera minuscola e un numero.

    Per maggiori informazioni, consulta Gestione delle password.

    sap_hana_system_password Stringa Per installare automaticamente SAP HANA sulle VM di cui è stato eseguito il deployment, specifica una password super user del database temporanea per gli script di installazione da utilizzare durante il deployment. La password deve contenere almeno 8 caratteri e includere almeno una lettera maiuscola, una lettera minuscola e un numero.

    Invece di specificare la password come testo normale, ti consigliamo di utilizzare un secret. Per maggiori informazioni, consulta Gestione delle password.

    sap_hana_system_password_secret Stringa Facoltativo. Se utilizzi Secret Manager per archiviare la password del super user del database, specifica il nome del secret corrispondente a questa password.

    In Secret Manager, assicurati che il valore del secret, ovvero la password, contenga almeno 8 caratteri e includa almeno una lettera maiuscola, una lettera minuscola e un numero.

    Per maggiori informazioni, consulta Gestione delle password.

    sap_hana_double_volume_size Booleano Facoltativo. Per raddoppiare le dimensioni del volume HANA, specifica true. Questo argomento è utile quando vuoi eseguire il deployment di più istanze SAP HANA o di un'istanza SAP HANA per il ripristino di emergenza sulla stessa VM. Per impostazione predefinita, la dimensione del volume viene automaticamente calcolata in base alla dimensione minima richiesta per la dimensione della VM, pur rispettando i requisiti di certificazione e assistenza SAP. Il valore predefinito è false.
    sap_hana_backup_size Numero intero Facoltativo. Specifica le dimensioni del volume /hanabackup in GB. Se non specifichi questo argomento o non lo imposti su 0, lo script di installazione esegue il provisioning dell'istanza di Compute Engine con un volume di backup HANA pari al doppio della memoria totale.
    sap_hana_sidadm_uid Numero intero Facoltativo. Specifica un valore per sostituire il valore predefinito dell'SID_LCID utente Adm. Il valore predefinito è 900. Puoi cambiarlo con un valore diverso per coerenza all'interno del tuo panorama SAP.
    sap_hana_sapsys_gid Numero intero Facoltativo. Sostituisce l'ID gruppo predefinito per sapsys. Il valore predefinito è 79.
    sap_vip Stringa Specifica l'indirizzo IP che intendi utilizzare per il VIP. L'indirizzo IP deve essere compreso nell'intervallo di indirizzi IP assegnati alla subnet. Il file di configurazione Terraform prenota questo indirizzo IP per te.
    primary_instance_group_name Stringa Facoltativo. Specifica il nome del gruppo di istanze non gestite per il nodo principale. Il nome predefinito è ig-PRIMARY_INSTANCE_NAME.
    secondary_instance_group_name Stringa Facoltativo. Specifica il nome del gruppo di istanze non gestite per il nodo secondario. Il nome predefinito è ig-SECONDARY_INSTANCE_NAME.
    loadbalancer_name Stringa Facoltativo. Specifica il nome del bilanciatore del carico di rete passthrough interno. Il nome predefinito è lb-SAP_HANA_SID-ilb.
    network_tags Stringa Facoltativo. Specifica uno o più tag di rete separati da virgole da associare alle tue istanze VM per scopi di firewall o di routing.

    Se specifichi public_ip = false e non specifichi un tag di rete, assicurati di fornire un altro mezzo per accedere a internet.

    nic_type Stringa Facoltativo. Specifica l'interfaccia di rete da utilizzare con l'istanza VM. Puoi specificare il valore GVNIC o VIRTIO_NET. Per utilizzare un NIC virtuale di Google (gVNIC), devi specificare un'immagine del sistema operativo che supporta gVNIC come valore dell'argomento linux_image. Per l'elenco delle immagini del sistema operativo, vedi Dettagli del sistema operativo.

    Se non specifichi un valore per questo argomento, l'interfaccia di rete viene selezionata automaticamente in base al tipo di macchina specificato per l'argomento machine_type.

    Questo argomento è disponibile nel modulo sap_hana versione 202302060649 o successive.
    disk_type Stringa Facoltativo. Specifica il tipo predefinito di disco permanente o Hyperdisk di cui vuoi eseguire il deployment per tutti i volumi SAP nel tuo deployment. Il valore predefinito è pd-ssd. Di seguito sono riportati valori validi per questo argomento: pd-ssd, pd-balanced, hyperdisk-extreme, hyperdisk-balanced e pd-extreme.

    Tieni presente che quando specifichi il valore hyperdisk-extreme o hyperdisk-balanced, la directory /usr/sap viene montata su un disco permanente bilanciato separato (pd-balanced). Questo perché la directory /usr/sap non richiede prestazioni elevate come la directory /hana/data o /hana/log. Nei deployment con scale up di SAP HANA, viene eseguito il deployment anche di un disco permanente bilanciato separato per la directory /hana/shared.

    Puoi eseguire l'override di questo tipo di disco predefinito, della dimensione predefinita del disco associata e delle IOPS predefinite utilizzando alcuni argomenti avanzati. Per ulteriori informazioni, vai alla tua directory di lavoro, quindi esegui il comando terraform init, quindi visualizza il file /.terraform/modules/manual_sap_hana_scaleout_ha/variables.tf. Prima di utilizzare questi argomenti in produzione, assicurati di testarli in un ambiente di test.

    use_single_shared_data_log_disk Booleano Facoltativo. Il valore predefinito è false, che indica a Terraform di eseguire il deployment di un disco permanente o di un Hyperdisk separati per ciascuno dei seguenti volumi SAP: /hana/data, /hana/log, /hana/shared e /usr/sap. Per montare questi volumi SAP sullo stesso disco permanente o Hyperdisk, specifica true.
    include_backup_disk Booleano Facoltativo. Questo argomento è applicabile ai deployment con scale up di SAP HANA. Il valore predefinito è true, che indica a Terraform di eseguire il deployment di un disco permanente HDD standard per ospitare la directory /hanabackup. La dimensione di questo disco è determinata dall'argomento sap_hana_backup_size.

    Se imposti il valore di include_backup_disk su false, non viene eseguito il deployment di alcun disco per la directory /hanabackup.

    public_ip Booleano Facoltativo. Determina se un indirizzo IP pubblico viene aggiunto o meno all'istanza VM. Il valore predefinito è true.
    service_account Stringa Facoltativo. Specifica l'indirizzo email di un account di servizio gestito dall'utente che deve essere utilizzato dalle VM host e dai programmi in esecuzione sulle VM host. Ad esempio, svc-acct-name@project-id.iam.gserviceaccount.com.

    Se specifichi questo argomento senza un valore oppure lo ometti, lo script di installazione utilizza l'account di servizio predefinito di Compute Engine. Per maggiori informazioni, consulta Gestione di identità e accessi per programmi SAP su Google Cloud.

    sap_deployment_debug Booleano Facoltativo. Solo quando l'assistenza clienti Google Cloud richiede l'attivazione del debug per il deployment, specifica true in modo che il deployment generi log di deployment dettagliati. Il valore predefinito è false.
    primary_reservation_name Stringa Facoltativo. Per utilizzare una prenotazione VM di Compute Engine specifica per il provisioning dell'istanza VM che ospita l'istanza SAP HANA principale del cluster ad alta disponibilità, specifica il nome della prenotazione. Per impostazione predefinita, lo script di installazione seleziona qualsiasi prenotazione di Compute Engine disponibile in base alle seguenti condizioni.

    Affinché una prenotazione sia utilizzabile, indipendentemente dal fatto che tu specifichi un nome o venga selezionato automaticamente dallo script di installazione, la prenotazione deve essere impostata con quanto segue:

    • L'opzione specificReservationRequired è impostata su true oppure, nella console Google Cloud, è selezionata l'opzione Seleziona una prenotazione specifica.
    • Alcuni tipi di macchine Compute Engine supportano le piattaforme CPU non coperte dalla certificazione SAP del tipo di macchina. Se la prenotazione target è per uno dei seguenti tipi di macchina, la prenotazione deve specificare il numero minimo di piattaforme CPU, come indicato:
      • n1-highmem-32: Intel Broadwell
      • n1-highmem-64: Intel Broadwell
      • n1-highmem-96: Intel Skylake
      • m1-megamem-96: Intel Skylake
    • Le piattaforme CPU minime per tutti gli altri tipi di macchine certificati da SAP per l'utilizzo su Google Cloud sono conformi al requisito minimo di CPU SAP.
    secondary_reservation_name Stringa Facoltativo. Per utilizzare una prenotazione VM di Compute Engine specifica per il provisioning dell'istanza VM che ospita l'istanza SAP HANA secondaria del cluster ad alta disponibilità, specifica il nome della prenotazione. Per impostazione predefinita, lo script di installazione seleziona qualsiasi prenotazione di Compute Engine disponibile in base alle seguenti condizioni.

    Affinché una prenotazione sia utilizzabile, indipendentemente dal fatto che tu specifichi un nome o venga selezionato automaticamente dallo script di installazione, la prenotazione deve essere impostata con quanto segue:

    • L'opzione specificReservationRequired è impostata su true oppure, nella console Google Cloud, è selezionata l'opzione Seleziona una prenotazione specifica.
    • Alcuni tipi di macchine Compute Engine supportano le piattaforme CPU non coperte dalla certificazione SAP del tipo di macchina. Se la prenotazione target è per uno dei seguenti tipi di macchina, la prenotazione deve specificare il numero minimo di piattaforme CPU, come indicato:
      • n1-highmem-32: Intel Broadwell
      • n1-highmem-64: Intel Broadwell
      • n1-highmem-96: Intel Skylake
      • m1-megamem-96: Intel Skylake
    • Le piattaforme CPU minime per tutti gli altri tipi di macchine certificati da SAP per l'utilizzo su Google Cloud sono conformi al requisito minimo di CPU SAP.
    primary_static_ip Stringa Facoltativo. Specifica un indirizzo IP statico valido per l'istanza VM principale nel cluster ad alta disponibilità. Se non ne specifichi uno, viene generato automaticamente un indirizzo IP per la tua istanza VM. Ad esempio, 128.10.10.10.

    Questo argomento è disponibile nel modulo sap_hana_ha versione 202306120959 o successive.

    secondary_static_ip Stringa Facoltativo. Specifica un indirizzo IP statico valido per l'istanza VM secondaria nel cluster ad alta disponibilità. Se non ne specifichi uno, viene generato automaticamente un indirizzo IP per la tua istanza VM. Ad esempio, 128.11.11.11.

    Questo argomento è disponibile nel modulo sap_hana_ha versione 202306120959 o successive.

    primary_worker_static_ips Elenco(stringa) Facoltativo. Specifica un array di indirizzi IP statici validi per le istanze worker nell'istanza principale del sistema ad alta disponibilità con scale out SAP HANA. Se non specifichi un valore per questo argomento, viene generato automaticamente un indirizzo IP per ogni istanza VM worker. Ad esempio, [ "1.0.0.1", "2.3.3.4" ].

    Gli indirizzi IP statici vengono assegnati in base all'ordine di creazione dell'istanza. Ad esempio, se scegli di eseguire il deployment di 3 istanze worker, ma specifichi solo 2 indirizzi IP per l'argomento primary_worker_static_ips, questi indirizzi IP vengono assegnati alle prime due istanze VM di cui la configurazione Terraform esegue il deployment. Per la terza istanza VM worker, l'indirizzo IP viene generato automaticamente.

    Questo argomento è disponibile nel modulo sap_hana_ha versione 202307270727 o successive.

    secondary_worker_static_ips Elenco(stringa) Facoltativo. Specifica un array di indirizzi IP statici validi per le istanze worker nell'istanza secondaria del sistema ad alta disponibilità SAP HANA con scale out. Se non specifichi un valore per questo argomento, viene generato automaticamente un indirizzo IP per ogni istanza VM worker. Ad esempio, [ "1.0.0.2", "2.3.3.5" ].

    Gli indirizzi IP statici vengono assegnati in base all'ordine di creazione dell'istanza. Ad esempio, se scegli di eseguire il deployment di 3 istanze worker, ma specifichi solo 2 indirizzi IP per l'argomento secondary_worker_static_ips, questi indirizzi IP vengono assegnati alle prime due istanze VM di cui la configurazione Terraform esegue il deployment. Per la terza istanza VM worker, l'indirizzo IP viene generato automaticamente.

    Questo argomento è disponibile nel modulo sap_hana_ha versione 202307270727 o successive.

    Gli esempi seguenti mostrano i file di configurazione completati che definiscono un cluster ad alta disponibilità per un sistema con scale out SAP HANA. Il cluster utilizza un bilanciatore del carico di rete passthrough interno per gestire il VIP.

    Terraform esegue il deployment delle risorse Google Cloud definite nel file di configurazione, dopodiché gli script assumono il controllo per configurare il sistema operativo e installare SAP HANA.

  6. Nello stesso file manual_sap_hana_scaleout_ha.tf, aggiorna i valori dell'argomento per majority_maker. Gli argomenti sono descritti nella tabella seguente.

    Argomento Tipo di dati Descrizione
    project Stringa Specifica l'ID del progetto Google Cloud in cui stai eseguendo il deployment del sistema.
    majority_maker_instance_name Stringa

    Specifica un nome per l'istanza VM di Compute Engine che funge da creatore di maggioranza.

    Questo argomento è disponibile nel modulo sap_hana_ha versione 202307270727 o successive.

    majority_maker_instance_type Stringa Specifica il tipo di macchina virtuale (VM) di Compute Engine che vuoi utilizzare per l'istanza del produttore per la maggior parte. Ad esempio, n1-highmem-32.

    Se vuoi utilizzare un tipo di VM personalizzata, specifica un tipo di VM predefinito con un numero di vCPU più vicino al numero necessario, pur essendo più grande. Al termine del deployment, modifica il numero di vCPU e la quantità di memoria.

    Questo argomento è disponibile nel modulo sap_hana_ha versione 202307270727 o successive.

    majority_maker_zone Stringa Specifica una zona in cui viene eseguito il deployment dell'istanza VM del creatore di maggioranza. Questa zona deve trovarsi nella stessa regione delle zone principali e secondarie. Ad esempio, us-east1-d.

    Google Cloud consiglia che il deployment dell'istanza VM del produttore della maggioranza venga eseguito in una zona diversa rispetto ai sistemi SAP HANA principali e secondari.

    Questo argomento è disponibile nel modulo sap_hana_ha versione 202307270727 o successive.

    majority_maker_linux_image Stringa Utilizzando gli stessi valori del passaggio precedente, specifica il percorso completo dell'immagine come "linux_image_project/linux_image". Ad esempio "rhel-sap-cloud/rhel-9-0-sap-v20230708".
    subnetwork Stringa Specifica il nome della subnet creata in un passaggio precedente. Se esegui il deployment in un VPC condiviso, specifica questo valore come SHARED_VPC_PROJECT_ID/SUBNETWORK. Ad esempio, myproject/network1.
    service_account Stringa Facoltativo. Specifica l'indirizzo email di un account di servizio gestito dall'utente che deve essere utilizzato dalle VM host e dai programmi in esecuzione sulle VM host. Ad esempio, svc-acct-name@project-id.iam.gserviceaccount.com.

    Se specifichi questo argomento senza un valore oppure lo ometti, lo script di installazione utilizza l'account di servizio predefinito di Compute Engine. Per maggiori informazioni, consulta Gestione di identità e accessi per programmi SAP su Google Cloud.

    metadata_startup_script Stringa Non modificare questo argomento. Per impostazione predefinita, i produttori di maggioranza scaricano lo script di avvio più recente per preparare l'istanza per il clustering di Pacemaker.

    Per chiarezza, i commenti nella seguente configurazione di esempio vengono omessi.

  module "sap_hana_primary" {
    source = "https://storage.googleapis.com/cloudsapdeploy/terraform/latest/terraform/sap_hana/sap_hana_module.zip"

    project_id                     = "example-project-123456"
    zone                           = "us-west1-a"
    machine_type                   = "n1-highmem-32"
    subnetwork                     = "default"
    linux_image                    = "rhel-9-0-sap-v20230711"
    linux_image_project            = "rhel-sap-cloud"
    instance_name                  = "hana-ha-1"
    sap_hana_sid                   = "HA1"

    sap_hana_deployment_bucket      = "my-hana-bucket"
    sap_hana_sidadm_password_secret = "hana_sid_adm_pwd"
    sap_hana_system_password_secret = "hana_sys_pwd"
    sap_hana_scaleout_nodes         = 1
    sap_hana_shared_nfs             = "10.10.10.1:/hana_scaleout/hana_a/shared"
    sap_hana_backup_nfs             = "10.10.10.1:/hana_scaleout/hana_a/backup"

  }
  module "sap_hana_secondary" {
    source = "https://storage.googleapis.com/cloudsapdeploy/terraform/latest/terraform/sap_hana/sap_hana_module.zip"

    project_id                     = "example-project-123456"
    zone                           = "us-west1-b"
    machine_type                   = "n1-highmem-32"
    subnetwork                     = "default"
    linux_image                    = "rhel-9-0-sap-v20230711"
    linux_image_project            = "rhel-sap-cloud"
    instance_name                  = "hana-ha-2"
    sap_hana_sid                   = "HA1"

    sap_hana_deployment_bucket      = "my-hana-bucket"
    sap_hana_sidadm_password_secret = "hana_sid_adm_pwd"
    sap_hana_system_password_secret = "hana_sys_pwd"
    sap_hana_scaleout_nodes         = 1
    sap_hana_shared_nfs             = "10.10.10.2:/hana_scaleout/hana_b/shared"
    sap_hana_backup_nfs             = "10.10.10.2:/hana_scaleout/hana_b/backup"
  }

  resource "google_compute_instance" "majority_maker" {

    project =  "example-project-123456"

    # majority_maker_instance_name
    name         = "majority-maker"

    # majority_maker_instance_type
    machine_type = "n1-standard-8"

    # majority_maker_zone
    zone         = "us-west1-c"

    boot_disk {
      initialize_params {
        # majority_maker_linux_image
        image = "rhel-sap-cloud/rhel-9-0-sap-v20230711"
      }
    }

    network_interface {
      # network or subnetwork
      network = "default"
    }

      service_account {
      # service_account (Optional)
      # email  = svc-acct-name@project-id.iam.gserviceaccount.com.
      scopes = ["cloud-platform"]
    }

    # Do not edit
    metadata_startup_script = "curl -s https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_majoritymaker/startup.sh | bash -s https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_majoritymaker/startup.sh"

  }
  1. Inizializza la tua directory di lavoro attuale e scarica il plug-in e i file dei moduli del provider Terraform per Google Cloud:

    terraform init

    Il comando terraform init prepara la directory di lavoro per altri comandi Terraform.

    Per forzare un aggiornamento del plug-in del provider e dei file di configurazione nella directory di lavoro, specifica il flag --upgrade. Se il flag --upgrade viene omesso e non apporti alcuna modifica alla tua directory di lavoro, Terraform utilizza le copie memorizzate nella cache locale, anche se latest è specificato nell'URL source.

    terraform init --upgrade 
  2. Se vuoi, crea il piano di esecuzione Terraform:

    terraform plan

    Il comando terraform plan mostra le modifiche richieste dalla configurazione attuale. Se salti questo passaggio, il comando terraform apply crea automaticamente un nuovo piano e ti chiede di approvarlo.

  3. Applica il piano di esecuzione:

    terraform apply

    Quando ti viene chiesto di approvare le azioni, inserisci yes.

    Il comando terraform apply configura l'infrastruttura Google Cloud, quindi passa il controllo a uno script che configura il cluster ad alta disponibilità e installa SAP HANA in base agli argomenti definiti nel file di configurazione Terraform.

    Mentre Terraform ha il controllo, i messaggi di stato vengono scritti in Cloud Shell. Dopo aver richiamato gli script, i messaggi di stato vengono scritti in Logging e sono visualizzabili nella console Google Cloud, come descritto in Controllare i log.

Verifica del deployment del sistema ad alta disponibilità HANA

Controlla i log

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

    Vai a Cloud Logging

  2. Filtra i log:

    Esplora log

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

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

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

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

    Visualizzatore log legacy

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

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

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

      2. Apri Cloud Shell.

        Vai a Cloud Shell

      3. Vai alla directory di lavoro ed elimina il deployment per ripulire le VM e i dischi permanenti dall'installazione non riuscita:

        terraform destroy

        Quando ti viene chiesto di approvare l'azione, inserisci yes.

      4. Esegui nuovamente il deployment.

Controlla la configurazione della VM e dell'installazione di SAP HANA

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

    Pulsante SSH nella pagina delle istanze VM di Compute Engine.

  2. Passa all'utente root.

    sudo su -
  3. Al prompt dei comandi, inserisci df -h. Assicurati di visualizzare un output che includa le directory /hana, come /hana/data.

    [root@example-ha-vm1 ~]# df -h
      Filesystem                        Size  Used Avail Use% Mounted on
      devtmpfs                          126G     0  126G   0% /dev
      tmpfs                             126G   54M  126G   1% /dev/shm
      tmpfs                             126G   25M  126G   1% /run
      tmpfs                             126G     0  126G   0% /sys/fs/cgroup
      /dev/sda2                          30G  5.4G   25G  18% /
      /dev/sda1                         200M  6.9M  193M   4% /boot/efi
      /dev/mapper/vg_hana-shared        251G   52G  200G  21% /hana/shared
      /dev/mapper/vg_hana-sap            32G  477M   32G   2% /usr/sap
      /dev/mapper/vg_hana-data          426G  9.8G  417G   3% /hana/data
      /dev/mapper/vg_hana-log           125G  7.0G  118G   6% /hana/log
      /dev/mapper/vg_hanabackup-backup  512G  9.3G  503G   2% /hanabackup
      tmpfs                              26G     0   26G   0% /run/user/900
      tmpfs                              26G     0   26G   0% /run/user/899
      tmpfs                              26G     0   26G   0% /run/user/1003

Esegui la pulizia e riprova a eseguire il deployment

Se uno dei passaggi di verifica del deployment nelle sezioni precedenti mostra che l'installazione non è riuscita, devi annullare il deployment e riprovare seguendo questi passaggi:

  1. Risolvi eventuali errori per assicurarti che il deployment non vada a buon fine di nuovo per lo stesso motivo. Per informazioni su come controllare i log o risolvere gli errori relativi alle quote, consulta Controllare i log.

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

    Apri Cloud Shell

  3. Vai alla directory che contiene il file di configurazione Terraform che hai utilizzato per questo deployment.

  4. Elimina tutte le risorse che fanno parte del deployment eseguendo questo comando:

    terraform destroy

    Quando ti viene chiesto di approvare l'azione, inserisci yes.

  5. Riprova a eseguire il deployment come indicato in precedenza in questa guida.

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

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

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

Per verificare che l'agente sia in esecuzione:

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

  2. Esegui questo comando:

    systemctl status google-cloud-sap-agent

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

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

Se l'agente non è in esecuzione, riavvialo.

Verificare che l'agente host SAP stia ricevendo le metriche

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

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

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

Configura il monitoraggio per SAP HANA

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

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

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

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

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

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

Configurazione dell'accesso SSH senza password

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

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

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

Procedura manuale

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

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

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

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

Passaggi automatici

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

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

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

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

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

Disabilita l'avvio automatico di SAP HANA

Procedura manuale

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

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

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

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

    Autostart=0
  4. Salva il profilo.

  5. Avvia SAP HANA su ciascun host come SID_LCadm:

    > HDB start

Passaggi automatici

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

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

Abilita il riavvio rapido di SAP HANA

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

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

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

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

Procedura manuale

Configura il file system tmpfs

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

Visualizza la topologia NUMA della tua VM

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

lscpu | grep NUMA

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

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

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

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

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

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

SID specifica il SID con lettere maiuscole.

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

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

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

(Facoltativo) Imposta limiti per l'utilizzo della memoria

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

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

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

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

Configurazione SAP HANA per il riavvio rapido

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

Aggiorna la sezione [persistence] nel file global.ini

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

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

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

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

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

Specifica le tabelle da archiviare in memoria permanente

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

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

ALTER TABLE exampletable persistent memory ON immediate CASCADE

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

[persistent_memory]
table_default = ON

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

Passaggi automatici

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

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

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

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

  1. Stabilisci una connessione SSH con la VM host.

  2. Passa alla directory principale:

    sudo su -

  3. Scarica lo script sap_lib_hdbfr.sh:

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

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

    vi sap_lib_hdbfr.sh
    ./sap_lib_hdbfr.sh -help

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

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

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

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

    Sostituisci quanto segue:

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

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

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

    Sostituisci quanto segue:

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

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

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

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

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

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

Passaggi automatici

Per automatizzare questo processo, utilizza nodes.txt e i seguenti script della console Google Cloud:

  1. Genera un file hosts.txt con un elenco di indirizzi IP e nomi host:

    while read -u10 ZONE HOST ; do gcloud compute instances list --filter="name=( 'NAME' $HOST )" --format="csv[separator=' ',no-heading](networkInterfaces[0].networkIP,name)" >> hosts.txt; done 10< nodes.txt
  2. Verifica che il file hosts.txt abbia un aspetto simile al seguente esempio:

    10.138.0.1 rhel-hana-primary
    10.138.0.2 rhel-hana-primaryw1
    10.138.0.3 rhel-hana-secondary
    10.138.0.4 rhel-hana-secondaryw1
    10.138.0.5 rhel-sap-mm
    
  3. Su tutti gli host del cluster, incluso il creatore della maggioranza, aggiorna il file /etc/hosts in modo da includere i nomi host e gli indirizzi IP interni di tutte le istanze nel cluster Pacemaker.

    while read -u10 ZONE HOST ;  do gcloud compute ssh --tunnel-through-iap --quiet $HOST --zone $ZONE -- "sudo tee -a /etc/hosts" < hosts.txt; done 10< nodes.txt

Esegui il backup dei database

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

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

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

Per creare backup dei nuovi database SAP HANA:

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

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

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

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

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

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

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

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

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

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

    Dovresti vedere:

    VALUE
    "normal"

Abilita la replica del sistema SAP HANA

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

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

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

    1. Come SID_LCadm, interrompi SAP HANA:

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

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

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

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

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

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

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

      > sapcontrol -nr INST_NUM -function StartSystem

Convalida della replica del sistema in corso...

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

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

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

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

Inoltre, l'overall system replication status mostra ACTIVE.

Abilita gli hook del provider SAP HANA/RE

Red Hat consiglia di abilitare gli hook del provider SAP HANA/RE, che consentono SAP HANA di inviare notifiche per determinati eventi e migliora il rilevamento degli errori. Gli hook dei provider SAP HANA/RE richiedono SAP HANA 2.0 SPS 03 o una versione successiva.

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

  1. Come SID_LCadm, interrompi SAP HANA:

    > sapcontrol -nr 00 -function StopSystem

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

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

    [ha_dr_provider_SAPHanaSR]
    provider = SAPHanaSR
    path = /usr/share/SAPHanaSR-ScaleOut/
    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 richiamato 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 SID_LC con il SID in lettere minuscole.

    Cmnd_Alias SOK = /usr/sbin/crm_attribute -n hana_SID_LC_glob_srHook -v SOK -t crm_config -s SAPHanaSR
    Cmnd_Alias SFAIL = /usr/sbin/crm_attribute -n hana_SID_LC_glob_srHook -v SFAIL -t crm_config -s SAPHanaSR
    SID_LCadm ALL=(ALL) NOPASSWD: SOK, SFAIL
    Defaults!SOK, SFAIL !requiretty

  5. Assicurati che nel file /etc/sudoers 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:

    > sapcontrol -nr 00 -function StartSystem

  7. Verifica lo stato segnalato dallo script di hook sull'host principale come SID_LCadm:

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

Configura il supporto del failover di Cloud Load Balancing

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

Prenota un indirizzo IP per l'IP virtuale

L'indirizzo IP virtuale (VIP), talvolta indicato come indirizzo IP mobile, segue il sistema SAP HANA attivo. Il bilanciatore del carico instrada il traffico inviato al VIP alla VM che attualmente ospita il sistema SAP HANA attivo.

  1. Apri Cloud Shell:

    Vai a Cloud Shell

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

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

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

  3. Conferma prenotazione indirizzo IP:

    $ gcloud compute addresses describe VIP_NAME \
      --region CLUSTER_REGION

    Dovresti vedere un output simile al seguente esempio:

    address: 10.0.0.19
    addressType: INTERNAL
    creationTimestamp: '2020-05-20T14:19:03.109-07:00'
    description: ''
    id: '8961491304398200872'
    kind: compute#address
    name: vip-for-hana-ha
    networkTier: PREMIUM
    purpose: GCE_ENDPOINT
    region: https://www.googleapis.com/compute/v1/projects/example-project-123456/regions/us-central1
    selfLink: https://www.googleapis.com/compute/v1/projects/example-project-123456/regions/us-central1/addresses/vip-for-hana-ha
    status: RESERVED
    subnetwork: https://www.googleapis.com/compute/v1/projects/example-project-123456/regions/us-central1/subnetworks/example-subnet-us-central1

Crea gruppi di istanze per le VM host

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

    $ gcloud compute instance-groups unmanaged create PRIMARY_IG_NAME \
      --zone=PRIMARY_ZONE
    $ gcloud compute instance-groups unmanaged add-instances PRIMARY_IG_NAME \
      --zone=PRIMARY_ZONE \
      --instances=PRIMARY_HOST_NAME
    $ gcloud compute instance-groups unmanaged create SECONDARY_IG_NAME \
      --zone=SECONDARY_ZONE
    $ gcloud compute instance-groups unmanaged add-instances SECONDARY_IG_NAME \
      --zone=SECONDARY_ZONE \
      --instances=SECONDARY_HOST_NAME
    
  2. Conferma la creazione dei gruppi di istanze:

    $ gcloud compute instance-groups unmanaged list

    Dovresti vedere un output simile al seguente esempio:

    NAME          ZONE           NETWORK          NETWORK_PROJECT        MANAGED  INSTANCES
    hana-ha-ig-1  us-central1-a  example-network  example-project-123456 No       1
    hana-ha-ig-2  us-central1-c  example-network  example-project-123456 No       1

Crea un controllo di integrità di Compute Engine

  1. In Cloud Shell, crea il controllo di integrità. Scegline una che rientra nell'intervallo privato, 49152-65535, per evitare conflitti con altri servizi. I valori di timeout e intervallo di controllo sono leggermente più lunghi dei valori predefiniti, in modo da aumentare la tolleranza di failover durante gli eventi di migrazione live di Compute Engine. Se necessario, puoi modificare i valori:

    $ gcloud compute health-checks create tcp HEALTH_CHECK_NAME --port=HEALTHCHECK_PORT_NUM \
      --proxy-header=NONE --check-interval=10 --timeout=10 --unhealthy-threshold=2 \
      --healthy-threshold=2
  2. Conferma la creazione del controllo di integrità:

    $ gcloud compute health-checks describe HEALTH_CHECK_NAME

    Dovresti vedere un output simile al seguente esempio:

    checkIntervalSec: 10
    creationTimestamp: '2020-05-20T21:03:06.924-07:00'
    healthyThreshold: 2
    id: '4963070308818371477'
    kind: compute#healthCheck
    name: hana-health-check
    selfLink: https://www.googleapis.com/compute/v1/projects/example-project-123456/global/healthChecks/hana-health-check
    tcpHealthCheck:
     port: 60000
     portSpecification: USE_FIXED_PORT
     proxyHeader: NONE
    timeoutSec: 10
    type: TCP
    unhealthyThreshold: 2

Crea una regola firewall per i controlli di integrità

Definisci una regola firewall per una porta nell'intervallo privato che consenta l'accesso alle VM host dagli intervalli IP utilizzati dai controlli di integrità di Compute Engine, 35.191.0.0/16 e 130.211.0.0/22. Per maggiori informazioni, consulta Creazione di regole firewall per i controlli di integrità.

  1. Se non ne hai già uno, aggiungi un tag di rete alle VM host. Questo tag di rete è utilizzato dalla regola firewall per i controlli di integrità.

    $ gcloud compute instances add-tags PRIMARY_HOST_NAME \
      --tags NETWORK_TAGS \
      --zone PRIMARY_ZONE
    $ gcloud compute instances add-tags SECONDARY_HOST_NAME \
      --tags NETWORK_TAGS \
      --zone SECONDARY_ZONE
    
  2. Se non ne hai già una, crea una regola firewall per consentire i controlli di integrità:

    $ gcloud compute firewall-rules create RULE_NAME \
      --network NETWORK_NAME \
      --action ALLOW \
      --direction INGRESS \
      --source-ranges 35.191.0.0/16,130.211.0.0/22 \
      --target-tags NETWORK_TAGS \
      --rules tcp:HLTH_CHK_PORT_NUM

    Ad esempio:

    gcloud compute firewall-rules create  fw-allow-health-checks \
    --network example-network \
    --action ALLOW \
    --direction INGRESS \
    --source-ranges 35.191.0.0/16,130.211.0.0/22 \
    --target-tags cluster-ntwk-tag \
    --rules tcp:60000

Configura il bilanciatore del carico e il gruppo di failover

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

    $ gcloud compute backend-services create BACKEND_SERVICE_NAME \
      --load-balancing-scheme internal \
      --health-checks HEALTH_CHECK_NAME \
      --no-connection-drain-on-failover \
      --drop-traffic-if-unhealthy \
      --failover-ratio 1.0 \
      --region CLUSTER_REGION \
      --global-health-checks
  2. Aggiungi il gruppo di istanze principale al servizio di backend:

    $ gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
      --instance-group PRIMARY_IG_NAME \
      --instance-group-zone PRIMARY_ZONE \
      --region CLUSTER_REGION
  3. Aggiungi il gruppo di istanze di failover secondario al servizio di backend:

    $ gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
      --instance-group SECONDARY_IG_NAME \
      --instance-group-zone SECONDARY_ZONE \
      --failover \
      --region CLUSTER_REGION
  4. Creare una regola di forwarding. Per l'indirizzo IP, specifica l'indirizzo IP che hai prenotato per il VIP. Se devi accedere al sistema SAP HANA dall'esterno della regione specificata di seguito, includi il flag --allow-global-access nella definizione:

    $ gcloud compute forwarding-rules create RULE_NAME \
      --load-balancing-scheme internal \
      --address VIP_ADDRESS \
      --subnet CLUSTER_SUBNET \
      --region CLUSTER_REGION \
      --backend-service BACKEND_SERVICE_NAME \
      --ports ALL

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

Testa la configurazione del bilanciatore del carico

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

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

Test del bilanciatore del carico con l'utilità socat

Puoi utilizzare l'utilità socat per rimanere temporaneamente in ascolto sulla porta per il controllo di integrità.

  1. Sulle VM host principali e secondarie, installa l'utilità socat:

    $ sudo yum install -y socat

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

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

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

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

    Dovresti vedere un output simile al seguente:

    ---
    backend: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-a/instanceGroups/hana-ha-ig-1
    status:
     healthStatus:
     ‐ healthState: HEALTHY
       instance: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-a/instances/hana-ha-vm-1
       ipAddress: 10.0.0.35
       port: 80
     kind: compute#backendServiceGroupHealth
    ---
    backend: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-c/instanceGroups/hana-ha-ig-2
    status:
     healthStatus:
     ‐ healthState: HEALTHY
       instance: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-c/instances/hana-ha-vm-2
       ipAddress: 10.0.0.34
       port: 80
     kind: compute#backendServiceGroupHealth

Test del bilanciatore del carico utilizzando la porta 22

Se la porta 22 è aperta per le connessioni SSH sulle VM host, puoi modificare temporaneamente il controllo di integrità in modo da utilizzare la porta 22, che include un listener in grado di rispondere al controllo di integrità.

Per utilizzare temporaneamente la porta 22:

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

    Vai alla pagina Controlli di integrità

  2. Fai clic su Modifica.

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

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

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

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

    Dovresti vedere un output simile al seguente:

    ---
    backend: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-a/instanceGroups/hana-ha-ig-1
    status:
     healthStatus:
     ‐ healthState: HEALTHY
       instance: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-a/instances/hana-ha-vm-1
       ipAddress: 10.0.0.35
       port: 80
     kind: compute#backendServiceGroupHealth
    ---
    backend: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-c/instanceGroups/hana-ha-ig-2
    status:
     healthStatus:
     ‐ healthState: HEALTHY
       instance: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-c/instances/hana-ha-vm-2
       ipAddress: 10.0.0.34
       port: 80
     kind: compute#backendServiceGroupHealth
  6. Al termine, ripristina il numero di porta originale per il controllo di integrità.

Configurazione di pacemaker

La seguente procedura configura l'implementazione di 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à, tra cui (è richiesto un abbonamento a Red Hat):

Procedura manuale

Completa i seguenti passaggi su tutti gli host. Nell'immagine RHEL-for-SAP fornita da Google, alcuni pacchetti sono già installati, ma sono necessarie alcune modifiche aggiuntive.

  1. Come root, rimuovi l'agente di risorsa Scale-Up SAP HANA preinstallato nell'immagine:

    # yum -y remove resource-agents-sap-hana
  2. Installa Pacemaker e gli agenti delle risorse mancanti:

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

  3. Update packages to latest version:

    # yum update -y

  4. Imposta la password per l'utente hacluster, creata come parte dei pacchetti:

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

  6. Nelle immagini RHEL-for-SAP 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
  7. Avvia il servizio PC e configuralo in modo che venga avviato al momento dell'avvio:

    # systemctl start pcsd.service
    # systemctl enable pcsd.service
  8. 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-1 systemd[1]: Starting PCS GUI and remote configuration interface...
    Jun 13 21:17:05 hana-ha-1 systemd[1]: Started PCS GUI and remote configuration interface.

Passaggi automatici

Per automatizzare questo processo, puoi utilizzare nodes.txt e lo script seguente della Google Cloud Console.

Al prompt, inserisci una password che l'utente hacluster deve utilizzare, creata durante l'installazione degli agenti delle risorse Pacemaker.

echo "Set password for hacluster user:"; read -r HA_PASSWD; while read -u10 HOST ;  do gcloud compute ssh --tunnel-through-iap --quiet --zone $HOST -- "sudo yum -y remove resource-agents-sap-hana; sudo yum -y install pcs pacemaker fence-agents-gce resource-agents-sap-hana-scaleout resource-agents-gcp; sudo yum update -y; sudo firewall-cmd --permanent --add-service=high-availability; sudo firewall-cmd --reload; sudo systemctl start pcsd.service; sudo systemctl enable pcsd.service; yes $HA_PASSWD | sudo passwd hacluster"; done 10< nodes.txt

Aggiorna il file /etc/hosts

Su tutti gli host del cluster, incluso il creatore della maggioranza, aggiorna il file /etc/hosts in modo da includere i nomi host e gli indirizzi IP interni di tutte le istanze nel cluster Pacemaker.

L'output del file /etc/hosts dovrebbe essere simile all'esempio seguente:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1                localhost localhost.localdomain localhost6 localhost6.localdomain6
10.138.0.1 rhel-hana-primary.us-west1-a.c.project-name.internal rhel-hana-primary # Added by Google
169.254.169.254 metadata.google.internal # Added by Google
10.138.0.1 rhel-hana-primary
10.138.0.2 rhel-hana-primaryw1
10.138.0.3 rhel-hana-secondary
10.138.0.4 rhel-hana-secondaryw1
10.138.0.5 rhel-sap-mm

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

Crea il cluster

  1. Come root sull'host principale principale, autorizza l'utente hacluster. È importante includere in questo comando ogni host del cluster, che dovrebbe far parte del cluster.

    RHEL 8.0 e versioni successive

    pcs host auth primary-master-name primary-worker-name(s) secondary-master-name secondary-worker-name(s) majority-maker-name
    

    RHEL 7.6 e versioni successive

    pcs cluster auth primary-master-name primary-worker-name(s) secondary-master-name secondary-worker-name(s) majority-maker-name
    
  2. Nei prompt, inserisci il nome utente hacluster e la password che hai impostato per l'utente hacluster nella sezione precedente.

  3. Imposta il cluster in modalità di manutenzione.

    pcs property set maintenance-mode=true
  4. Genera e sincronizza la configurazione Corosync.

    RHEL 8.0 e versioni successive

    pcs cluster setup scale_out_hsr primary-master-name primary-worker-name(s) secondary-master-name secondary-worker-name(s) majority-maker-name

    RHEL 7.6 e versioni successive

    pcs cluster setup --start --name hanascaleoutsr primary-master-name primary-worker-name(s) secondary-master-name secondary-worker-name(s) majority-maker-name

Modifica le impostazioni predefinite di corosync.conf

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

  2. Rimuovi il parametro consensus.

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

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

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

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

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

    consensus N/A

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

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

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

    token_retransmits_before_loss_const 10 Aumenta il numero di ritrasmissioni del token che il nodo tenta di eseguire prima di concludere che il nodo destinatario ha esito negativo e intervenire.
    transport
    • Per SLES: udpu
    • Per RHEL 8 o versioni successive: knet
    • Per RHEL 7: udpu
    Specifica il meccanismo di trasporto utilizzato da corosync.
  4. Dall'host che contiene il file corosync.conf modificato, sincronizza la configurazione Corosync in tutto il cluster:

    RHEL 8 e versioni successive

    # pcs cluster sync corosync

    RHEL 7

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

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

    # corosync-cmapctl

Imposta un ritardo per il riavvio di Corosync

Procedura manuale

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

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

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

  4. Ricarica la configurazione di Systemd Manager.

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

    service corosync status

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

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

Passaggi automatici

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

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

Configurazione della recinzione

Le immagini RHEL fornite da Google Cloud includono un agente di recinzione denominato fence_gce, specifico di Google Cloud. Puoi utilizzare fence_gce per creare dispositivi di recinzione per ogni VM host.

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

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

Procedura manuale

  1. Nell'host principale, in qualità di utente root, crea i dispositivi di recinzione per tutti gli host, incluso il produttore della maggioranza:

    pcs stonith create STONITH-host-name fence_gce \
    port=host-name \
    zone=host-zone \
    project=project-id \
    pcmk_host_list=host-name pcmk_reboot_timeout=300 pcmk_monitor_retries=4 \
    op monitor interval="300s" timeout="120s" \
    op start interval="0" timeout="60s"

  2. Imposta un vincolo di posizione per i dispositivi di recinzione:

    pcs constraint location STONITH-host-name avoids host-name

  3. Ripeti i due passaggi precedenti per tutti gli altri host sui cluster principali e secondari e per l'host che ha creato la maggior parte dei dati, inserendo i valori appropriati per le variabili host-name e host-zone.

Passaggi automatici

Per automatizzare questo processo, devi utilizzare il file nodes.txt e lo script seguente della console Google Cloud:

while read -u10 ZONE HOST; do gcloud compute ssh $HOST --tunnel-through-iap --quiet --zone $ZONE -- "sudo pcs stonith create STONITH-$HOST fence_gce project=project-id port=$HOST zone=$ZONE pcmk_host_list=$HOST pcmk_reboot_timeout=300 pcmk_monitor_retries=4 op monitor interval=300s timeout=120s op start interval=0 timeout=60s && sudo pcs constraint location STONITH-$HOST avoids $HOST"; done 10< nodes.txt

Configura le impostazioni predefinite del cluster

Configura le soglie e la fidelizzazione della migrazione per determinare il numero di failover da tentare prima dell'errore e per impostare il sistema in modo che provi prima a eseguire il riavvio sull'host attuale. Deve essere impostato su un solo nodo per essere applicato al cluster.

  1. Come root da qualsiasi host, imposta i valori predefiniti della risorsa:

    RHEL 8.0 e versioni successive

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

    RHEL 7.6 e versioni successive

    # 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 dove si trova. 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 che un servizio possa eseguire il failover su un altro host. Un valore pari a 5000 è sufficiente per prevenire il failover in situazioni di errore di durata inferiore.

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

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

    RHEL 8.0 e versioni successive

    # pcs resource op defaults update timeout=600s

    RHEL 7.6 e versioni successive

    # pcs resource op defaults timeout=600s

    Puoi verificare le impostazioni predefinite del funzionamento della risorsa inserendo pcs resource op defaults.

  3. Imposta le proprietà del cluster seguenti:

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

    Puoi controllare le impostazioni di proprietà con pcs property list.

Crea la risorsa SAPHanaTopology

La risorsa SAPHanaTopology recupera lo stato e la configurazione della replica del sistema HANA sui nodi. Controlla inoltre l'agente host SAP.

  1. Crea la risorsa SAPHanaTopology come root su entrambi gli host:

    RHEL 8.0 e versioni successive

    # pcs resource create rsc_SAPHanaTopology_SID_HDBinstNr SAPHanaTopology SID=SID \
    InstanceNumber=inst_num \
    op methods interval=0s timeout=5 \
    op monitor interval=10 timeout=600 \
    clone meta clone-node-max=1 interleave=true

    RHEL 7.6 e versioni successive

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

    RHEL 8.0 e versioni successive

    # pcs resource config rsc_SAPHanaTopology_SID_HDBinstNr-clone

    Dovresti vedere un output simile al seguente:

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

    RHEL 7.6 e versioni successive

    # pcs resource show rsc_SAPHanaTopology_SID_HDBinstNr-clone

    Dovresti vedere un output simile al seguente:

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

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

Crea la risorsa SAPHanaController

L'agente di risorse SAPHanaController gestisce i database configurati per la replica del sistema SAPHanaController.

I seguenti parametri nella definizione della risorsa SAPHana sono facoltativi:

  • AUTOMATED_REGISTER, che, se impostato su true, registra automaticamente la prima come secondaria quando DUPLICATE_PRIMARY_TIMEOUT scade dopo una presa in carico. 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 su un sistema HANA su cui è già configurata una destinazione di replica. Per SAP HANA 2.0 SP03 o versioni successive, puoi impostare AUTOMATED_REGISTER su true per le configurazioni SAP HANA che utilizzano la replica di sistema multilivello.

  • DUPLICATE_PRIMARY_TIMEOUT, che imposta la differenza di tempo in secondi tra due timestamp principali nel caso in cui si verifichi una situazione di tipo dual-primary. Il valore predefinito è 7200.

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

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

  1. Come root su uno degli host, crea la risorsa SAPHanaController:

    RHEL 8.0 e versioni successive

    # pcs resource create rsc_SAPHana_SID_HDBinstNr SAPHanaController SID=SID \
    InstanceNumber=inst_num \
    PREFER_SITE_TAKEOVER=true DUPLICATE_PRIMARY_TIMEOUT=7200 AUTOMATED_REGISTER=true \
    op demote interval=0s timeout=320 \
    op methods interval=0s timeout=5 \
    op monitor interval=59 \
    role="Master" timeout=700 \
    op monitor interval=61 \
    role="Slave" timeout=700 \
    op promote interval=0 timeout=3600 \
    op start interval=0 timeout=3600 \
    op stop interval=0 timeout=3600e
    # pcs resource promotable rsc_SAPHana_SID_HDBinstNr meta master-max="1" clone-node-max=1 interleave=true

    RHEL 7.6 e versioni successive

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

    RHEL 8.0 e versioni successive

    # pcs resource config rsc_SAPHana_SID_HDBinstNr-clone

    Dovresti vedere un output simile al seguente esempio:

    Resource: SAPHana_HA1_00 (class=ocf provider=heartbeat type=SAPHanaController)
    Attributes: AUTOMATED_REGISTER=true DUPLICATE_PRIMARY_TIMEOUT=7200 InstanceNumber=00 PREFER_SITE_TAKEOVER=true SID=HA1
    Operations: demote interval=0s timeout=320 (SAPHana_HA1_00-demote-interval-0s)
          methods interval=0s timeout=5 (SAPHana_HA1_00-methods-interval-0s)
          monitor interval=59 role=Master timeout=700 (SAPHana_HA1_00-monitor-interval-59)
          promote interval=0 timeout=3600 (SAPHana_HA1_00-promote-interval-0)
          reload interval=0s timeout=5 (SAPHana_HA1_00-reload-interval-0s)
          start interval=0 timeout=3600 (SAPHana_HA1_00-start-interval-0)
          stop interval=0 timeout=3600 (SAPHana_HA1_00-stop-interval-0)
          monitor interval=61 role=Slave timeout=700 (SAPHana_HA1_00-monitor-interval-61)

    RHEL 7.6 e versioni successive

    # pcs resource show msl_rsc_SAPHana_SID_HDBinstNr

    Dovresti vedere un output simile al seguente esempio:

    Master: msl_rsc_SAPHana_HA1_HDB00
    Meta Attrs: clone-node-max=1 interleave=true master-max=1
    Resource: rsc_SAPHana_HA1_HDB00 (class=ocf provider=heartbeat type=SAPHanaController)
    Attributes: AUTOMATED_REGISTER=true DUPLICATE_PRIMARY_TIMEOUT=7200 InstanceNumber=00 PREFER_SITE_TAKEOVER=true SID=HA1
    Operations: demote interval=0s timeout=320 (rsc_SAPHana_HA1_HDB00-demote-interval-0s)
           methods interval=0s timeout=5 (rsc_SAPHana_HA1_HDB00-methods-interval-0s)
           monitor interval=60 role=Master timeout=700 (rsc_SAPHana_HA1_HDB00-monitor-interval-60)
           monitor interval=61 role=Slave timeout=700 (rsc_SAPHana_HA1_HDB00-monitor-interval-61)
           promote interval=0 timeout=3600 (rsc_SAPHana_HA1_HDB00-promote-interval-0)
           start interval=0 timeout=3600 (rsc_SAPHana_HA1_HDB00-start-interval-0)
           stop interval=0 timeout=3600 (rsc_SAPHana_HA1_HDB00-stop-interval-0)

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 entrambi gli host:

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

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

Crea i vincoli

Puoi creare vincoli per definire quali servizi devono essere avviati per primi e quali devono essere eseguiti insieme sullo stesso host.

  1. Definisci il vincolo dell'ordine di inizio:

    RHEL 8.0 e versioni successive

    # pcs constraint order start rsc_SAPHanaTopology_SID_HDBinstNr-clone then start rsc_SAPHana_SID_HDBinstNr-clone

    RHEL 7.6

    # pcs constraint order rsc_SAPHanaTopology_SID_HDBinstNr-clone then rsc_SAPHana_SID_HDBinstNr-master

  2. Configure the majority maker to avoid taking an an active role in the cluster environment:

    RHEL 8.0 and later

    # pcs constraint location rsc_SAPHana_SID_HDBinstNr-clone avoids majority-maker-name
    
    # pcs constraint location rsc_SAPHanaTopology_SID_HDBinstNr-clone avoids majoritymaker

    RHEL 7.6

    # pcs constraint location msl_rsc_SAPHana_SID_HDBinstNr avoids majoritymaker
    
    # pcs constraint location rsc_SAPHanaTopology_SID_HDBinstNr-clone avoids majoritymaker
  3. Controlla i vincoli:

    # pcs constraint

    Dovresti vedere un output simile al seguente:

    Location Constraints:
    Resource: STONITH-hana-ha-1
      Disabled on: hana-ha-1 (score:-INFINITY)
    Resource: STONITH-hana-ha-1w1
      Disabled on: hana-ha-1w1 (score:-INFINITY)
    Resource: STONITH-hana-ha-2
      Disabled on: hana-ha-2 (score:-INFINITY)
    Resource: STONITH-hana-ha-2w1
      Disabled on: hana-ha-2w1 (score:-INFINITY)
    Resource: STONITH-majority-maker
      Disabled on: majority-maker (score:-INFINITY)
    Resource: rsc_SAPHanaTopology_HA1_HDB00-clone
      Disabled on: majority-maker (score:-INFINITY)
    Resource: rsc_SAPHana_HA1_HDB00-master
      Disabled on: majority-maker (score:-INFINITY)
    Ordering Constraints:
      start rsc_SAPHanaTopology_HA1_HDB00-clone then start rsc_SAPHana_HA1_HDB00-master (kind:Mandatory)

Installa listener e crea una risorsa di controllo di integrità

Per configurare una risorsa di 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. Come root sull'istanza master sui sistemi primari e secondari, installa un listener TCP. 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 (Impostazioni predefinite) di haproxy.cfg, imposta mode su 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 verificare che sia configurato correttamente:

    # systemctl start haproxy.service
  3. Nella pagina Bilanciatore del carico nella 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, viene visualizzato 1/1 nella colonna Integrità di ogni voce di gruppo di istanze.

    L&#39;acquisizione dello schermo mostra &quot;1/1&quot; nella colonna Stato 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, viene visualizzato 0/1 nella colonna Integrità di ogni gruppo di istanze.

    L&#39;acquisizione dello schermo mostra &quot;0/1&quot; nella colonna Stato di ogni gruppo di istanze, a indicare che non è presente alcun listener attivo.

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

Crea la risorsa del controllo di integrità

  1. Da qualsiasi host come root, crea una risorsa di controllo di integrità per il servizio HAProxy:

    # pcs resource create hc_SID_HDBinstNr service:haproxy op monitor interval=10s timeout=20s
  2. Raggruppa le risorse VIP e per il controllo di integrità:

    # pcs resource group add rsc-group-name hc_SID_HDBinstNr rsc_ip_SAPHANA_SID_HDBinstNr
  3. Crea un vincolo che posiziona il gruppo sullo stesso nodo dell'istanza SAP HANA master.

    RHEL 8.0 e versioni successive

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

    RHEL 7.6 e versioni successive

    # pcs constraint colocation add rsc-group-name with master msl_rsc_SAPHana_SID_HDBinstNr
  4. Crea un vincolo di ordine per avviare il gruppo solo dopo aver promosso HANA:

    # pcs constraint order promote rsc_SAPHana_SID_HDBinstNr-clone then start rsc-group-name

    I vincoli finali dovrebbero essere simili al seguente esempio:

    # pcs constraint
    
    Location Constraints:
    Resource: STONITH-hana-ha-1
     Disabled on: hana-ha-1 (score:-INFINITY)
    Resource: STONITH-hana-ha-1w1
     Disabled on: hana-ha-1w1 (score:-INFINITY)
    Resource: STONITH-hana-ha-2
     Disabled on: hana-ha-2 (score:-INFINITY)
    Resource: STONITH-hana-ha-2w1
     Disabled on: hana-ha-2w1 (score:-INFINITY)
    Resource: STONITH-majority-maker
     Disabled on: majority-maker (score:-INFINITY)
    Resource: rsc_SAPHanaTopology_HA1_HDB00-clone
     Disabled on: majority-maker (score:-INFINITY)
    Resource: rsc_SAPHana_HA1_HDB00-master
     Disabled on: majority-maker (score:-INFINITY)
    Ordering Constraints:
     start rsc_SAPHanaTopology_HA1_HDB00-clone then start rsc_SAPHana_HA1_HDB00-master (kind:Mandatory)
     promote rsc_SAPHana_HA1_HDB00-clone then start g-primary (kind:Mandatory) (id:order-rsc_SAPHana_HA1_HDB00-clone-g-primary-mandatory)
    Colocation Constraints:
     g-primary with rsc_SAPHana_HA1_HDB00-master (score:INFINITY) (rsc-role:Started) (with-rsc-role:Master)
    Ticket Constraints:

Finalizza la configurazione

  1. Rendi il cluster fuori dalla modalità di manutenzione.

    pcs property set maintenance-mode=false
  2. Dopo l'avvio della 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:

    RHEL 8.0 e versioni successive

    Cluster Summary:
    Stack: corosync
    Current DC: hana-ha-2w1 (version 2.0.5-9.el8_4.7-ba59be7122) - partition with quorum
    Last updated: Wed Oct 11 17:59:51 2023
    Last change:  Wed Oct 11 17:59:48 2023 by hacluster via crmd on hana-ha-2
    5 nodes configured
    17 resource instances configured
    
    Node List:
    Online: [ hana-ha-1 hana-ha-1w1 hana-ha-2 hana-ha-2w1 dru-somm ]
    
    Active Resources:
    STONITH-hana-ha-1     (stonith:fence_gce):     Started hana-ha-2
    STONITH-hana-ha-1w1   (stonith:fence_gce):     Started hana-ha-1
    STONITH-hana-ha-2     (stonith:fence_gce):     Started hana-ha-2w1
    STONITH-hana-ha-2w1   (stonith:fence_gce):     Started dru-somm
    STONITH-dru-somm    (stonith:fence_gce):     Started hana-ha-1
    Clone Set: SAPHanaTopology_HA1_00-clone [SAPHanaTopology_HA1_00]:
     Started: [ hana-ha-1 hana-ha-1w1 hana-ha-2 hana-ha-2w1 ]
    Clone Set: SAPHana_HA1_00-clone [SAPHana_HA1_00]-(promotable):
     Slaves: [ hana-ha-1w1 hana-ha-2w1 ]
    Resource Group: g-primary:
     healthcheck_HA1   (service:haproxy):       Started hana-ha-1
     ip_SAPHANA_HA1_00 (ocf::heartbeat:IPaddr2):        Started hana-ha-1
    
    Node Attributes:
    Node: hana-ha-1:
     hana_ha1_clone_state              : PROMOTED
     hana_ha1_gra                      : 2.0
     hana_ha1_remoteHost               : hana-ha-2w1
     hana_ha1_roles                    : master1:master:worker:master
     hana_ha1_site                     : hana-ha-1
     hana_ha1_sra                      : -
     hana_ha1_srmode                   : syncmem
     hana_ha1_vhost                    : hana-ha-1
     master-SAPHana_HA1_00             : 5
    Node: hana-ha-1w1:
     hana_ha1_clone_state              : DEMOTED
     hana_ha1_gra                      : 2.0
     hana_ha1_remoteHost               : hana-ha-2w1
     hana_ha1_roles                    : slave:slave:worker:slave
     hana_ha1_site                     : hana-ha-1
     hana_ha1_srmode                   : syncmem
     hana_ha1_vhost                    : hana-ha-1w1
     master-SAPHana_HA1_00             : -INFINITY
    Node: hana-ha-2:
     hana_ha1_clone_state              : DEMOTED
     hana_ha1_gra                      : 2.0
     hana_ha1_remoteHost               : hana-ha-1w1
     hana_ha1_roles                    : master1:master:worker:master
     hana_ha1_site                     : hana-ha-2
     hana_ha1_sra                      : -
     hana_ha1_srmode                   : syncmem
     hana_ha1_vhost                    : hana-ha-2
     master-SAPHana_HA1_00             : 100
    Node: hana-ha-2w1:
     hana_ha1_clone_state              : DEMOTED
     hana_ha1_gra                      : 2.0
     hana_ha1_remoteHost               : hana-ha-1w1
     hana_ha1_roles                    : slave:slave:worker:slave
     hana_ha1_site                     : hana-ha-2
     hana_ha1_srmode                   : syncmem
     hana_ha1_vhost                    : hana-ha-2w1
     master-SAPHana_HA1_00             : -12200
    Node: dru-somm:
     hana_ha1_remoteHost               : hana-ha-2w1
     hana_ha1_srmode                   : syncmem

    RHEL 7.6 e versioni successive

    Stack: corosync
    Current DC: majority-maker (version 1.1.23-1.el7_9.1-9acf116022) - partition with quorum
    Last updated: Wed Oct 11 17:58:07 2023
    Last change: Wed Oct 11 17:57:57 2023 by hacluster via crmd on hana-ha-2w1
    
    5 nodes configured
    17 resource instances configured
    
    Online: [ hana-ha-1 hana-ha-1w1 hana-ha-2 hana-ha-2w1 majority-maker ]
    
    Active resources:
    
    STONITH-hana-ha-1 (stonith:fence_gce):    Started hana-ha-1w1
    STONITH-hana-ha-1w1       (stonith:fence_gce):    Started hana-ha-2
    STONITH-hana-ha-2 (stonith:fence_gce):    Started hana-ha-1
    STONITH-hana-ha-2w1       (stonith:fence_gce):    Started majority-maker
    STONITH-majority-maker (stonith:fence_gce):    Started hana-ha-1w1
    Master/Slave Set: msl_rsc_SAPHana_HA1_HDB00 [rsc_SAPHana_HA1_HDB00]
     rsc_SAPHana_HA1_HDB00      (ocf::heartbeat:SAPHanaController):     Master hana-ha-1 (Monitoring)
     Slaves: [ hana-ha-1w1 hana-ha-2 hana-ha-2w1 ]
    Clone Set: rsc_SAPHanaTopology_HA1_HDB00-clone [rsc_SAPHanaTopology_HA1_HDB00]
     Started: [ hana-ha-1 hana-ha-1w1 hana-ha-2 hana-ha-2w1 ]
    Resource Group: g-primary
     hc_HA1_HDB00       (service:haproxy):      Started hana-ha-1
     rsc_ip_SAPHANA_HA1_HDB00   (ocf::heartbeat:IPaddr2):       Started hana-ha-1
    
    Node Attributes:
    Node hana-ha-1:
      hana_ha1_clone_state              : PROMOTED
      hana_ha1_remoteHost               : hana-ha-2
      hana_ha1_roles                    : master1:master:worker:master
      hana_ha1_site                     : hana-ha-1
      hana_ha1_srmode                   : syncmem
      hana_ha1_vhost                    : hana-ha-1
      master-rsc_SAPHana_HA1_HDB00      : 150
    Node hana-ha-1w1:
      hana_ha1_clone_state              : DEMOTED
      hana_ha1_remoteHost               : hana-ha-2w1
      hana_ha1_roles                    : slave:slave:worker:slave
      hana_ha1_site                     : hana-ha-1
      hana_ha1_srmode                   : syncmem
      hana_ha1_version                  : 2.00.052.00.1599235305
      hana_ha1_vhost                    : hana-ha-1w1
      master-rsc_SAPHana_HA1_HDB00      : -10000
    Node hana-ha-2:
      hana_ha1_clone_state              : DEMOTED
      hana_ha1_remoteHost               : hana-ha-2w1
      hana_ha1_roles                    : master1:master:worker:master
      hana_ha1_site                     : hana-ha-2
      hana_ha1_srmode                   : syncmem
      hana_ha1_vhost                    : hana-ha-2
      master-rsc_SAPHana_HA1_HDB00      : 100
    Node hana-ha-2w1:
      hana_ha1_clone_state              : DEMOTED
      hana_ha1_remoteHost               : hana-ha-1
      hana_ha1_roles                    : slave:slave:worker:slave
      hana_ha1_site                     : hana-ha-2
      hana_ha1_srmode                   : syncmem
      hana_ha1_vhost                    : hana-ha-2w1
      master-rsc_SAPHana_HA1_HDB00      : -12200
    Node majority-maker:
      hana_ha1_srmode                   : syncmem
  3. Se sono presenti risorse cluster non riuscite, potrebbe essere necessario eseguire il comando successivo:

    pcs resource cleanup

Testa il failover

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

Esegui il backup del sistema prima del test.

Puoi simulare un errore in diversi modi, tra cui:

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

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

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

    # ip link set eth0 down

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

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

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

    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 hana-ha-vm-1w1 hana-ha-vm-2w1]
    
    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
    STONITH-hana-ha-vm-1w1   (stonith:fence_gce):    Started hana-ha-vm-2w1
    STONITH-hana-ha-vm-1w1   (stonith:fence_gce):    Started hana-ha-vm-mm
    STONITH-hana-ha-vm-mm   (stonith:fence_gce):    Started hana-ha-vm-1w1
    Clone Set: SAPHanaTopology_HA1_22-clone [SAPHanaTopology_HA1_22]
        Started: [ hana-ha-vm-1 hana-ha-vm-2 hana-ha-vm-1w1 hana-ha-vm-2w1
        Stopped: [ hana-ha-vm-mm ] ]
    Master/Slave Set: SAPHana_HA1_22-master [SAPHana_HA1_22]
        Masters: [ hana-ha-vm-2 ]
        Slaves: [ hana-ha-vm-1 hana-ha-vm-1w1 hana-ha-vm-2w1
        Stopped: [ hana-ha-vm-mm ] ]
    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

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.

Ottenere 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 saperne di più, consulta Cluster ad alta disponibilità su informazioni diagnostiche 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 nella console Google Cloud. Se l'assistenza clienti stabilisce che un problema risiede nei tuoi sistemi SAP, ti indirizzerà all'Assistenza SAP.

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

Requisiti per l'assistenza

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

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

Connessione a SAP HANA

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

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

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

Attività post-deployment

Dopo aver completato il deployment, completa i seguenti passaggi:

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

    sudo passwd SID_LCadm

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

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

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

Per ulteriori informazioni, vedi:

Passaggi successivi

Per saperne di più, consulta la seguente risorsa: