Terraform: Guida alla configurazione dei cluster ad alta disponibilità per SAP NetWeaver su RHEL

Questa guida mostra come automatizzare il deployment di un cluster ad alta disponibilità Red Hat Enterprise Linux (RHEL) ottimizzato per le prestazioni per SAP NetWeaver.

La guida utilizza Terraform per eseguire il deployment di due macchine virtuali (VM) Compute Engine, un indirizzo IP virtuale (VIP) con un'implementazione del bilanciatore del carico di rete passthrough interno e un cluster ad alta disponibilità basato sul sistema operativo, il tutto secondo le best practice di Google Cloud, SAP e del fornitore del sistema operativo.

Per informazioni sul deployment delle VM di Compute Engine per SAP NetWeaver che non sono specifiche per l'alta disponibilità, consulta la guida al deployment di SAP NetWeaver specifica per il tuo sistema operativo.

Per configurare un cluster ad alta disponibilità per SAP NetWeaver su SUSE Linux Enterprise Server (SLES), consulta la guida alla configurazione manuale dei cluster ad alta disponibilità per SAP NetWeaver su SLES.

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

Il sistema implementato da questa guida

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

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

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

  • Due VM host, una per l'istanza ASCS attiva e una per l'istanza attiva del replicatore di accodamento ENSA2 o del server di replica di accodamento ENSA1 (ENSA1). Entrambe le istanze ENSA2 e ENSA1 sono chiamate ERS.
  • Gestore delle risorse del cluster ad alta disponibilità Pacemaker.
  • Un meccanismo di scherma STONITH.
  • Riavvio automatico dell'istanza non riuscita come nuova istanza secondaria.

Prerequisiti

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

Ad eccezione di dove richiesto per l'ambiente Google Cloud, le informazioni contenute in questa guida sono coerenti con le seguenti guide correlate di Red Hat e SAP:

Creare una rete

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

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

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

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

  1. Creare una rete in modalità personalizzata. Per saperne di più, consulta la sezione Creazione di una rete in modalità personalizzata.

  2. Crea una subnet e specifica la regione e l'intervallo IP. Per ulteriori informazioni, 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 distribuito e software-defined di Google Cloud, che consente alle VM di inviare pacchetti in uscita a internet e ricevere tutti i pacchetti di risposta in entrata stabiliti corrispondenti. In alternativa, puoi configurare una VM separata come gateway NAT.

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

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

aggiungi regole firewall

Per impostazione predefinita, le connessioni in entrata dall'esterno della rete Google Cloud sono bloccate. Per consentire le connessioni in entrata, configura una regola firewall per la VM. Le regole firewall regolano solo le nuove connessioni in entrata a una VM. Dopo aver stabilito una connessione con una VM, il traffico viene consentito in entrambe le direzioni su questa connessione.

Puoi creare una regola firewall per consentire l'accesso a porte specifiche o per consentire l'accesso tra VM nella stessa subnet.

Crea regole firewall per consentire l'accesso a:

  • Le porte predefinite utilizzate da SAP NetWeaver, come documentato in Porte TCP/IP di tutti i prodotti SAP.
  • Connessioni dal computer o dall'ambiente di rete aziendale alla tua istanza VM di Compute Engine. Se hai dubbi in merito all'indirizzo IP da usare, rivolgiti all'amministratore di rete della tua azienda.
  • Comunicazione tra le VM in una configurazione a 3 livelli, con scale out o ad alta disponibilità. Ad esempio, se esegui il deployment di un sistema a 3 livelli, avrai almeno due VM nella tua subnet: la VM per SAP NetWeaver e un'altra VM per il server di database. Per abilitare la comunicazione tra le due VM, devi creare una regola firewall per consentire il traffico proveniente dalla subnet.
  • Controlli di integrità di Cloud Load Balancing.

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

Creazione di un cluster Linux ad alta disponibilità per SAP NetWeaver

Le seguenti istruzioni utilizzano un file di configurazione Terraform per creare un cluster RHEL ad alta disponibilità per SAP NetWeaver con due VM di Compute Engine. Le VM di Compute Engine vengono create in due zone di destinazione in una configurazione di failover automatico per i servizi centrali SAP e in coda la replica.

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

  1. Apri Cloud Shell.

    Vai a Cloud Shell

  2. Scarica il file di configurazione sap_nw_ha.tf per il cluster ad alta disponibilità SAP NetWeaver nella tua directory di lavoro:

    $ wget https://storage.googleapis.com/cloudsapdeploy/terraform/latest/terraform/sap_nw_ha/terraform/sap_nw_ha.tf
  3. Apri il file sap_nw_ha.tf nell'editor di codice di Cloud Shell.

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

  4. Nel file sap_nw_ha.tf, aggiorna i valori dell'argomento sostituendo i contenuti all'interno delle virgolette doppie con i valori dell'installazione. Gli argomenti sono descritti nella seguente tabella.

    Argomento Tipo di dati Descrizione
    source String

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

    Il file di configurazione sap_nw_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 è disattivato da un carattere # iniziale, specifica un timestamp che identifica la versione di un modulo.

    Se vuoi che tutti i tuoi deployment utilizzino 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 String Specifica l'ID del progetto Google Cloud in cui esegui il deployment di questo sistema. Ad esempio, my-project-x.
    machine_type String Specifica il tipo di macchina virtuale (VM) Compute Engine su cui hai bisogno di 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 a quello necessario ma comunque più grande. Al termine del deployment, modifica il numero di vCPU e la quantità di memoria.

    Ad esempio, n1-highmem-32.

    network String Specifica il nome della rete in cui devi 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 String 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 String Specifica il nome dell'immagine del sistema operativo Linux su cui vuoi eseguire il deployment del sistema SAP. Ad esempio, rhel-9-2-sap-ha. Per l'elenco delle immagini del sistema operativo disponibili, consulta la pagina Immagini nella console Google Cloud.
    linux_image_project String Specifica il progetto Google Cloud che contiene l'immagine che hai specificato per l'argomento linux_image. Potrebbe essere un tuo progetto o un progetto immagine Google Cloud. Per un'immagine Compute Engine, specifica rhel-sap-cloud. Per trovare il progetto immagine per il tuo sistema operativo, consulta Dettagli del sistema operativo.
    sap_primary_instance String Specifica un nome per l'istanza VM per il sistema SAP NetWeaver principale. Questa è la tua posizione ASCS iniziale. Il nome può contenere lettere minuscole, numeri o trattini e non deve superare i 13 caratteri.
    sap_primary_zone String Specifica una zona in cui viene eseguito il deployment del sistema SAP NetWeaver principale. Le zone primarie e secondarie devono trovarsi nella stessa regione. Ad esempio, us-east1-b.
    sap_secondary_instance String Specifica un nome per l'istanza VM per il sistema SAP NetWeaver secondario. Questa è la tua posizione ERS iniziale. Il nome può contenere lettere minuscole, numeri o trattini e non deve superare i 13 caratteri.
    sap_secondary_zone String Specifica una zona in cui viene eseguito il deployment del sistema SAP NetWeaver secondario. Le zone primarie e secondarie devono trovarsi nella stessa regione. Ad esempio, us-east1-c.
    nfs_path String Specifica il punto di montaggio NFS per il file system condiviso. Ad esempio, 10.163.58.114:/ssd_nfs.
    sap_sid String Specifica un ID sistema SAP. 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.
    hc_firewall_rule_name String Facoltativo. Specifica un nome per la regola firewall per il controllo di integrità. Il valore predefinito è SAP_SID-hc-allow.
    hc_network_tag String Facoltativo. Specifica uno o più tag di rete separati da virgole da associare alle tue istanze VM per la regola firewall per il controllo di integrità. Il valore predefinito è SAP_SID-hc-allow-tag.
    scs_inst_group_name String Facoltativo. Specifica un nome per il gruppo di istanze ASCS. Il valore predefinito è SAP_SID-scs-ig.
    scs_hc_name String Facoltativo. Specifica un nome per il controllo di integrità ASCS. Il valore predefinito è SAP_SID-scs-hc.
    scs_hc_port String Facoltativo. Specifica una porta per il controllo di integrità ASCS. Per evitare conflitti con altri servizi, indica il numero di porta per il controllo di integrità ASCS nell'intervallo privato, 49152-65535. Il valore predefinito è 60000.
    scs_vip_address String Facoltativo. Specifica un indirizzo IP non utilizzato all'interno della subnet specificata in precedenza in subnetwork da utilizzare come indirizzo IP virtuale per l'istanza ASCS. Se non viene specificato nulla, gli script di deployment selezionano automaticamente un indirizzo IP inutilizzato dalla subnet specificata.
    scs_vip_name String Facoltativo. Specifica un nome per l'IP virtuale ASCS. Il valore predefinito è SAP_SID-scs-vip.
    scs_backend_svc_name String Facoltativo. Specifica un nome per il servizio di backend ASCS. Il valore predefinito è SAP_SID-scs-backend-svc.
    scs_forw_rule_name String Facoltativo. Specifica un nome per la regola di forwarding ASCS. Il valore predefinito è SAP_SID-scs-fwd-rule.
    ers_inst_group_name String Facoltativo. Specifica un nome per il gruppo di istanze ERS. Il valore predefinito è SAP_SID-ers-ig.
    ers_hc_name String Facoltativo. Specifica un nome per il controllo di integrità ERS. Il valore predefinito è SAP_SID-ers-hc.
    ers_hc_port String Facoltativo. Specifica una porta per il controllo di integrità ERS. Per evitare conflitti con altri servizi, indica il numero di porta per il controllo di integrità ERS nell'intervallo privato, 49152-65535. Il valore predefinito è 60010.
    ers_vip_address String Facoltativo. Specifica un indirizzo IP non utilizzato all'interno della subnet specificata in precedenza in subnetwork da utilizzare come indirizzo IP virtuale per l'istanza ERS. Se non viene specificato nulla, gli script di deployment selezionano automaticamente un indirizzo IP inutilizzato dalla subnet specificata.
    ers_vip_name String Facoltativo. Specifica un nome per l'IP virtuale ERS. Il valore predefinito è SAP_SID-ers-vip.
    ers_backend_svc_name String Facoltativo. Specifica un nome per il servizio di backend ERS. Il valore predefinito è SAP_SID-ers-backend-svc.
    ers_forw_rule_name String Facoltativo. Specifica un nome per la regola di forwarding ERS. Il valore predefinito è SAP_SID-ers-fwd-rule.
    usr_sap_size Integer Facoltativo. Specifica le dimensioni del disco /usr/sap in GB. La dimensione minima è 8 GB. Il valore predefinito è 8.
    sap_mnt_size Integer Facoltativo. Specifica le dimensioni del disco /sapmnt in GB. La dimensione minima è 8 GB. Il valore predefinito è 8.
    swap_size Integer Facoltativo. Specifica la dimensione del volume di scambio in GB. La dimensione minima è 8 GB. Il valore predefinito è 8.
    sap_scs_instance_number String Facoltativo. Specifica il numero di istanza ASCS. sap_scs_instance_number deve essere un numero di due cifre. Se devi specificare un numero di una sola cifra, aggiungi 0 davanti al numero. Ad esempio: 07. Il valore predefinito è 00.
    sap_ers_instance_number String Facoltativo. Specifica il numero di istanza ERS. sap_ers_instance_number deve essere un numero di due cifre. Se devi specificare un numero di una sola cifra, aggiungi 0 davanti al numero. Ad esempio: 07. Il valore predefinito è 10.
    sap_nw_abap Booleano Facoltativo. Specifica se stai eseguendo il deployment di uno stack ABAP o uno stack Java di SAP NetWeaver. Per uno stack Java di SAP NetWeaver, specifica false. Il valore predefinito è true.
    pacemaker_cluster_name String Facoltativo. Specifica un nome per il cluster di pacemaker. Il valore predefinito è SAP_SID-cluster.
    public_ip Booleano Facoltativo. Per creare un indirizzo IP pubblico temporaneo per le istanze VM, imposta public_ip su true. Il valore predefinito è false.
    service_account String Facoltativo. Specifica l'indirizzo email di un account di servizio gestito dall'utente che deve essere utilizzato dalle VM host e dai programmi eseguiti sulle VM host. Ad esempio, svc-acct-name@project-id.iam.gserviceaccount.com.

    Se specifichi questo argomento senza un valore o lo ometti, lo script di installazione utilizza l'account di servizio predefinito di Compute Engine. Per ulteriori informazioni, consulta la pagina relativa alla gestione di identità e accessi per programmi SAP su Google Cloud.

    network_tags String Facoltativo. Specifica uno o più tag di rete separati da virgole da associare alle tue istanze VM a scopo di firewall o routing.

    Un tag di rete per i componenti ILB viene aggiunto automaticamente ai tag di rete della VM.

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

    sap_deployment_debug Booleano Facoltativo. Solo quando l'assistenza clienti Google Cloud ti chiede di attivare il debug per il deployment, specifica true, in modo che il deployment generi log di deployment dettagliati. Il valore predefinito è false.
    primary_reservation_name String Facoltativo. Per utilizzare una prenotazione VM di Compute Engine specifica per il provisioning dell'istanza VM che ospita l'istanza SAP HANA principale del tuo 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 che lo script di installazione la selezioni automaticamente, la prenotazione deve essere impostata con quanto segue:

    • L'opzione specificReservationRequired è impostata su true oppure, nella console Google Cloud, è selezionata l'opzione Seleziona prenotazione specifica.
    • Alcuni tipi di macchine di Compute Engine supportano le piattaforme CPU non coperte dalla certificazione SAP del tipo di macchina. Se la prenotazione di destinazione riguarda uno dei seguenti tipi di macchine, deve specificare le piattaforme CPU minime 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 certificate da SAP per l'utilizzo su Google Cloud sono conformi al requisito minimo di CPU per SAP.
    secondary_reservation_name String 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 che lo script di installazione la selezioni automaticamente, la prenotazione deve essere impostata con quanto segue:

    • L'opzione specificReservationRequired è impostata su true oppure, nella console Google Cloud, è selezionata l'opzione Seleziona prenotazione specifica.
    • Alcuni tipi di macchine di Compute Engine supportano le piattaforme CPU non coperte dalla certificazione SAP del tipo di macchina. Se la prenotazione di destinazione riguarda uno dei seguenti tipi di macchine, deve specificare le piattaforme CPU minime 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 certificate da SAP per l'utilizzo su Google Cloud sono conformi al requisito minimo di CPU per SAP.

    L'esempio seguente mostra un file di configurazione completato che definisce un cluster ad alta disponibilità per SAP NetWeaver. 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, quindi gli script di avvio prendono il controllo per configurare il sistema operativo e il cluster ad alta disponibilità di Linux.

    Per chiarezza, i commenti nel file di configurazione sono omessi nell'esempio.

       # ...
         module "sap_nw_ha" {
         source = "https://storage.googleapis.com/cloudsapdeploy/terraform/latest/terraform/sap_nw_ha/sap_nw_ha_module.zip"
       #
       # By default, this source file uses the latest release of the terraform module
       # for SAP on Google Cloud.  To fix your deployments to a specific release
       # of the module, comment out the source argument above and uncomment the source argument below.
       #
       # source = "https://storage.googleapis.com/cloudsapdeploy/terraform/202201240926/terraform/sap_nw_ha/sap_nw_ha_module.zip"
       #
       # ...
       #
       project_id = "example-project-123456"
       machine_type = "n2-highmem-32"
       network = "example-network"
       subnetwork = "example-subnet-us-central1"
       linux_image = "rhel-8-4-sap-ha"
       linux_image_project = "rhel-sap-cloud"
    
       sap_primary_instance = "nw-ha-vm-1"
       sap_primary_zone = "us-central1-a"
    
       sap_secondary_instance = "nw-ha-vm-2"
       sap_secondary_zone = "us-central1-c"
    
       nfs_path = "10.223.55.130:/pr1_nw"
    
       sap_sid = "PR1"
       # ...
    }
  5. Inizializza la directory di lavoro attuale e scarica il plug-in del provider Terraform e i file dei moduli per Google Cloud:

    terraform init

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

    Per forzare l'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 modifiche alla directory di lavoro, Terraform utilizza le copie memorizzate nella cache locale, anche se nell'URL source è specificato il valore latest.

    terraform init --upgrade 
  6. Facoltativamente, 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.

  7. Applica il piano di esecuzione:

    terraform apply

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

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

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

    Il tempo per il completamento può variare, ma l'intero processo di solito richiede meno di 30 minuti.

Verifica del deployment del sistema SAP NetWeaver ad alta disponibilità

La verifica di un cluster SAP NetWeaver ad alta disponibilità richiede diverse procedure:

  • Controlla i log
  • Controlla la configurazione della VM

Controlla i log

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

    Vai a Cloud Logging

  2. Filtra i log:

    Esplora log

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

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

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

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

    Visualizzatore log legacy

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

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

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

      2. Apri Cloud Shell.

        Vai a Cloud Shell

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

        terraform destroy

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

      4. Esegui di nuovo il deployment.

Controlla la configurazione della VM

  1. Dopo il deployment delle istanze VM senza errori, connettiti a ogni VM utilizzando SSH. Nella pagina Istanze VM di Compute Engine, puoi fare clic sul pulsante SSH per ogni istanza VM oppure utilizzare il metodo SSH che preferisci.

  2. Passa all'utente root.

    sudo su -
  3. Al prompt dei comandi, inserisci df -h. Assicurati che un output includa le directory /usr/sap, ad esempio /usr/sap/trans.

    nw-ha-vm-1:~ # df -h
    Filesystem                             Size  Used Avail Use% Mounted on
    ...
    /dev/mapper/vg_usrsap-vol              8.0G  242M  7.8G   3% /usr/sap
    /dev/mapper/vg_sapmnt-vol              8.0G   90M  7.9G   2% /sapmnt
    10.95.255.130:/pr1_nw/sapmntPR1       1007G     0  956G   0% /sapmnt/PR1
    10.95.255.130:/pr1_nw/usrsaptrans     1007G     0  956G   0% /usr/sap/trans
    10.95.255.130:/pr1_nw/usrsapPR1ASCS00 1007G     0  956G   0% /usr/sap/PR1/ASCS00
    ...
      
    autofs viene configurato automaticamente durante il deployment per montare le directory dei file condivisi comuni al primo accesso alle directory dei file. Il montaggio delle directory ASCSASCS_INSTANCE_NUMBER e ERSERS_INSTANCE_NUMBER è gestito dal software del cluster, che viene configurato anche durante il deployment.

  4. Controlla lo stato del nuovo cluster inserendo il comando status: pcs status

    Dovresti vedere risultati simili a quelli dell'esempio seguente, in cui entrambe le istanze VM vengono avviate e nw-ha-vm-1 è l'istanza principale attiva:

    nw-ha-vm-1:~ # pcs status
    Cluster name: pr1-cluster
    Cluster Summary:
    * Stack: corosync
    * Current DC: nw-ha-vm-1 (version 2.0.5-9.el8_4.5-ba59be7122) - partition with quorum
    * Last updated: Mon Aug 29 18:03:22 2022
    * Last change:  Mon Aug 29 17:58:21 2022 by root via cibadmin on nw-ha-vm-1
    * 2 nodes configured
    * 8 resource instances configured
    Node List:
    * Online: [ nw-ha-vm-1 nw-ha-vm-2 ]
    Full List of Resources:
    * fence-PR1-nw-ha-vm-1    (stonith:fence_gce):     Started nw-ha-vm-2
    * fence-PR1-nw-ha-vm-2    (stonith:fence_gce):     Started nw-ha-vm-1
    * file-system-PR1-ASCS00    (ocf::heartbeat:Filesystem):     Started nw-ha-vm-1
    * file-system-PR1-ERS10    (ocf::heartbeat:Filesystem):     Started nw-ha-vm-2
    * health-check-PR1-ASCS00    (service:haproxy@PR1ASCS):     Started nw-ha-vm-1
    * health-check-PR1-ERS10    (service:haproxy@PR1ERS):     Started nw-ha-vm-2
    * vip-PR1-ASCS00    (ocf::heartbeat:IPaddr2):     Started nw-ha-vm-1
    * vip-PR1-ERS10    (ocf::heartbeat:IPaddr2):     Started nw-ha-vm-2
    Daemon Status:
    corosync: active/enabled
    pacemaker: active/enabled
    pcsd: active/enabled

  5. Testa la configurazione del bilanciatore del carico ASCS ed ERS utilizzando l'utilità socat:

    1. Su ogni istanza VM, avvia temporaneamente un processo socat che restituisca il proprio nome host:

      socat TCP-LISTEN:80,bind=0.0.0.0,fork,reuseaddr,crlf SYSTEM:"echo HTTP/1.0 200; echo Content-Type\: text/plain; echo; echo $(hostname)" & 
    2. Su ogni nodo, utilizza curl e prova a raggiungere i seguenti indirizzi IP e nomi host. Gli indirizzi IP e i nomi host sono disponibili in /etc/hosts.

      • 127.0.0.1
      • localhost
      • ASCS_VIRTUAL_HOST_NAME
      • ASCS_IP_ADDRESS
      • ERS_VIRTUAL_HOST_NAME
      • ERS_IP_ADDRESS
      • Nome VIP SCS, specificato per il parametro scs_vip_name
      • Indirizzo IP VIP SCS, specificato per il parametro scs_vip_address
      • Nome VIP ERS, specificato per il parametro ers_vip_name
      • Indirizzo IP VIP ERS, specificato per il parametro ers_vip_address

    Di seguito è riportato un esempio di output di questo test:

    example-nw1:~ # cat /etc/hosts
    ...
    10.128.1.182 example-nw1.c.myproject.internal example-nw1
    10.128.1.169 example-nw2.c.myproject.internal example-nw2
    10.128.1.46 pr1-scs-vip.c.myproject.internal pr1-scs-vip
    10.128.0.75 pr1-ers-vip.c.myproject.internal pr1-ers-vip
    example-nw1:~ # curl 127.0.0.1
    example-nw1
    example-nw1:~ # curl localhost
    example-nw1
    example-nw1:~ # curl example-nw1
    example-nw1
    example-nw1:~ # curl 10.128.1.182
    example-nw1
    example-nw1:~ # curl example-nw2
    example-nw2
    example-nw1:~ # curl 10.128.1.169
    example-nw2
    example-nw1:~ # curl pr1-scs-vip
    example-nw1
    example-nw1:~ # curl 10.128.1.46
    example-nw1
    example-nw1:~ # curl pr1-ers-vip
    example-nw2
    example-nw1:~ # curl 10.128.0.75
    example-nw2
  6. Se utilizzi RHEL per SAP 9.0 o versioni successive, assicurati che i pacchetti chkconfig e compat-openssl11 siano installati sulla tua istanza VM.

    Per maggiori informazioni su SAP, consulta SAP Note 3108316 - Red Hat Enterprise Linux 9.x: installazione e configurazione .

Se uno dei passaggi di convalida indica che l'installazione non è riuscita:

  1. Correggi gli errori.

  2. Apri Cloud Shell.

    Vai a Cloud Shell

  3. Vai alla directory che contiene il file di configurazione di Terraform.

  4. Elimina il deployment:

    terraform destroy

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

  5. Esegui di nuovo il deployment.

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

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

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

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

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

  2. Esegui questo comando:

    systemctl status google-cloud-sap-agent

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

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

Se l'agente non è in esecuzione, riavvialo.

Verifica che l'agente host SAP stia ricevendo le metriche

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

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

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

Installare ASCS ed ERS

La seguente sezione copre solo i requisiti e i suggerimenti specifici per l'installazione di SAP NetWeaver su Google Cloud.

Per le istruzioni di installazione complete, consulta la documentazione di SAP NetWeaver.

Prepararsi all'installazione

Per garantire coerenza in tutto il cluster e semplificare l'installazione, prima di installare i componenti SAP NetWeaver ASCS ed ERS, definisci gli utenti, i gruppi e le autorizzazioni e metti il server secondario in modalità standby.

  1. Disattiva la modalità di manutenzione del cluster:

    # sudo pcs property set maintenance-mode="false"

  2. Su entrambi i server come root, inserisci i comandi seguenti, specificando gli ID utente e gruppo appropriati per il tuo ambiente:

    # groupadd -g GID_SAPINST sapinst
    # groupadd -g GID_SAPSYS sapsys
    # useradd -u UID_SIDADM SID_LCadm -g sapsys
    # usermod -a -G sapinst SID_LCadm
    # useradd -u UID_SAPADM sapadm -g sapinst
    
    # chown SID_LCadm:sapsys /usr/sap/SID/SYS
    # chown SID_LCadm:sapsys /sapmnt/SID -R
    # chown SID_LCadm:sapsys /usr/sap/trans -R
    # chown SID_LCadm:sapsys /usr/sap/SID/SYS -R
    # chown SID_LCadm:sapsys /usr/sap/SID -R

    Sostituisci quanto segue:

    • GID_SAPINST: specifica l'ID gruppo Linux per lo strumento di provisioning SAP.
    • GID_SAPSYS: specifica l'ID gruppo Linux per l'utente SAPSYS.
    • UID_SIDADM: specifica l'ID utente Linux per l'amministratore del sistema SAP (SID).
    • SID_LC: specifica l'ID di sistema (SID). Utilizza il minuscolo per ogni lettera.
    • UID_SAPADM: specifica l'ID utente per l'agente host SAP.
    • SID: specifica l'ID di sistema (SID). Utilizza le maiuscole per tutte le lettere.

    Ad esempio, quanto segue mostra uno schema di numerazione GID e UID pratico:

    Group sapinst      1001
    Group sapsys       1002
    Group dbhshm       1003
    
    User  en2adm       2001
    User  sapadm       2002
    User  dbhadm       2003

Installazione del componente ASCS

  1. Sul server secondario, inserisci questo comando per mettere il server secondario in modalità standby:

    # pcs node standby

    Se metti il server secondario in modalità standby, tutte le risorse cluster vengono consolidate sul server principale, semplificando l'installazione.

  2. Verifica che il server secondario sia in modalità standby:

    # pcs status

    Dovresti vedere un output simile all'esempio seguente:

    Cluster name: nwha
       Cluster Summary:
         * Stack: corosync
         * Current DC: nw-ha-vm-1 (version 2.0.5-9.el8_4.3-ba59be7122) - partition with quorum
         * 2 nodes configured
         * 8 resource instances configured
    
       Node List:
         * Online: [ nw-ha-vm-1 nw-ha-vm-2 ]
    
       Full List of Resources:
         * fence-nw-ha-vm-2  (stonith:fence_gce):     Started nw-ha-vm-1
         * fence-nw-ha-vm-1  (stonith:fence_gce):     Stopped
         * Resource Group: nw8_ascs00_group:
           * nw8_vip_ascs00  (ocf::heartbeat:IPaddr2):    Started nw-ha-vm-1
           * nw8_healthcheck_scs (service:haproxy@nw8scs):    Started nw-ha-vm-1
           * nw8_fs_ascs00   (ocf::heartbeat:Filesystem):     Started nw-ha-vm-1
         * Resource Group: nw8_ers10_group:
           * nw8_vip_ers10   (ocf::heartbeat:IPaddr2):    Started nw-ha-vm-1
           * nw8_healthcheck_ers (service:haproxy@nw8ers):    Started nw-ha-vm-1
           * nw8_fs_ers10    (ocf::heartbeat:Filesystem):     Started nw-ha-vm-1
    
       Daemon Status:
         corosync: active/enabled
    
  3. Sul server principale come utente root, modifica la directory in una directory di installazione temporanea, ad esempio /tmp, per installare l'istanza ASCS eseguendo SAP Software Provisioning Manager (SWPM).

    • Per accedere all'interfaccia web di SWPM, è necessaria la password dell'utente root. Se il tuo criterio IT non consente all'amministratore SAP di avere accesso alla password root, puoi utilizzare SAPINST_REMOTE_ACCESS_USER.

    • Quando avvii SWPM, utilizza il parametro SAPINST_USE_HOSTNAME per specificare il nome dell'host virtuale definito per l'indirizzo VIP ASCS nel file /etc/hosts.

      Ad esempio:

      cd /tmp; /mnt/nfs/install/SWPM/sapinst SAPINST_USE_HOSTNAME=vh-aha-scs
    • Nella pagina di conferma finale di SWPM, assicurati che il nome host virtuale sia corretto.

  4. Al termine della configurazione, disattiva la modalità standby della VM secondaria:

    # pcs node unstandby

Installazione del componente ERS

  1. Sul server principale come root o SID_LCadm, interrompi il servizio ASCS.

    # su - SID_LCadm -c "sapcontrol -nr ASCS_INSTANCE_NUMBER -function Stop"
    # su - SID_LCadm -c "sapcontrol -nr ASCS_INSTANCE_NUMBER -function StopService"
  2. Sul server principale, inserisci questo comando per mettere il server principale in modalità standby:

    # pcs node standby

    Se metti il server principale in modalità standby, tutte le risorse cluster vengono consolidate sul server secondario, semplificando l'installazione.

  3. Verifica che il server principale sia in modalità standby:

    # pcs status

  4. Sul server secondario come utente root, modifica la directory in una directory di installazione temporanea, ad esempio /tmp, per installare l'istanza ERS eseguendo SAP Software Provisioning Manager (SWPM).

    • Per accedere a SWPM, utilizza lo stesso utente e la stessa password che hai utilizzato per l'installazione del componente ASCS.

    • Quando avvii SWPM, utilizza il parametro SAPINST_USE_HOSTNAME per specificare il nome dell'host virtuale definito per l'indirizzo VIP ERS nel file /etc/hosts.

      Ad esempio:

      cd /tmp; /mnt/nfs/install/SWPM/sapinst SAPINST_USE_HOSTNAME=vh-aha-ers
    • Nella pagina di conferma finale di SWPM, assicurati che il nome host virtuale sia corretto.

  5. Disattiva la VM principale per avere entrambe attive:

    # pcs node unstandby

Configura i servizi SAP

Devi verificare che i servizi siano configurati correttamente, controllare le impostazioni nei profili ASCS ed ERS e aggiungere l'utente SID_LCadm al gruppo di utenti haclient.

Conferma le voci di servizio SAP

  1. Su entrambi i server, verifica che il file /usr/sap/sapservices contenga le voci dei servizi ASCS ed ERS. Per farlo, puoi utilizzare l'integrazione systemV o systemd.

    Puoi aggiungere eventuali voci mancanti utilizzando il comando sapstartsrv con le opzioni pf=PROFILE_OF_THE_SAP_INSTANCE e -reg.

    Per ulteriori informazioni su queste integrazioni, consulta le seguenti note SAP:

    systemV

    Di seguito è riportato un esempio delle voci per i servizi ASCS ed ERS nel file /usr/sap/sapservices se utilizzi l'integrazione systemV:

    # LD_LIBRARY_PATH=/usr/sap/hostctrl/exe:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH
    /usr/sap/hostctrl/exe/sapstartsrv \
    pf=/usr/sap/SID/SYS/profile/SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME \
    -D -u SID_LCadm
    /usr/sap/hostctrl/exe/sapstartsrv \
    pf=/usr/sap/SID/SYS/profile/SID_ASCSASCS_INSTANCE_NUMBER_ASCS_VIRTUAL_HOST_NAME \
    -D -u SID_LCadm

    systemd

    1. Verifica che il file /usr/sap/sapservices contenga le voci per i servizi ASCS ed ERS. Di seguito è riportato un esempio di come queste voci vengono visualizzate nel file /usr/sap/sapservices quando utilizzi l'integrazione systemd:

      systemctl --no-ask-password start SAPSID_ASCS_INSTANCE_NUMBER # sapstartsrv pf=/usr/sap/SID/SYS/profile/SID_ASCSASCS_INSTANCE_NUMBER_SID_LCascs
      systemctl --no-ask-password start SAPSID_ERS_INSTANCE_NUMBER # sapstartsrv pf=/usr/sap/SID/SYS/profile/SID_ERSERS_INSTANCE_NUMBER_SID_LCers
    2. Disabilita l'integrazione systemd nelle istanze ASCS e ERS:

      # systemctl disable SAPSID_ASCS_INSTANCE_NUMBER.service
      # systemctl stop SAPSID_ASCS_INSTANCE_NUMBER.service
      # systemctl disable SAPSID_ERS_INSTANCE_NUMBER.service
      # systemctl stop SAPSID_ERS_INSTANCE_NUMBER.service
      
    3. Verifica che l'integrazione di systemd sia disabilitata:

      # systemctl list-unit-files | grep sap

      Un output simile all'esempio seguente indica che l'integrazione systemd è disabilitata. Tieni presente che alcuni servizi, come saphostagent e saptune, sono abilitati, mentre altri sono disabilitati.

      SAPSID_ASCS_INSTANCE_NUMBER.service disabled
      SAPSID_ERS_INSTANCE_NUMBER.service disabled
      saphostagent.service enabled
      sapinit.service generated
      saprouter.service disabled
      saptune.service enabled

Arresta i servizi SAP

  1. Sul server secondario, interrompi il servizio ERS:

    # su - SID_LCadm -c "sapcontrol -nr ERS_INSTANCE_NUMBER -function Stop"
    # su - SID_LCadm -c "sapcontrol -nr ERS_INSTANCE_NUMBER -function StopService"
  2. Su ciascun server, verifica che tutti i servizi siano arrestati:

    # su - SID_LCadm -c "sapcontrol -nr ASCS_INSTANCE_NUMBER -function GetSystemInstanceList"
    # su - SID_LCadm -c "sapcontrol -nr ERS_INSTANCE_NUMBER -function GetSystemInstanceList"

    Dovresti vedere un output simile all'esempio seguente:

    GetSystemInstanceList
    FAIL: NIECONN_REFUSED (Connection refused), NiRawConnect failed in plugin_fopen()

Disabilita il riavvio automatico del servizio in SAP

Poiché il software del cluster gestisce il riavvio dei servizi SAP durante un failover, per evitare conflitti, disabilita la possibilità del software SAP di riavviare automaticamente i servizi.

  1. Su entrambi i nodi, modifica il file /usr/sap/sapservices per disabilitare il riavvio automatico nel software SAP aggiungendo un carattere di commento # all'inizio del comando sapstartsrv per entrambi i componenti ASCS ed ERS.

    Ad esempio:

    #!/bin/sh
    
     #LD_LIBRARY_PATH=/usr/sap/SID/ASCSASCS_INSTANCE_NUMBER/exe:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; /usr/sap/SID/ASCSASCS_INSTANCE_NUMBER/exe/sapstartsrv pf=/usr/sap/SID/SYS/profile/SID_ASCSASCS_INSTANCE_NUMBER_ASCS_VIRTUAL_HOST_NAME -D -u SID_LCadm
     #LD_LIBRARY_PATH=/usr/sap/SID/ERSERS_INSTANCE_NUMBER/exe:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; /usr/sap/SID/ERSERS_INSTANCE_NUMBER/exe/sapstartsrv pf=/usr/sap/SID/SYS/profile/SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME -D -u SID_LCadm
     

Modificare i profili ASCS ed ERS

  1. Su entrambi i server, passa alla directory del profilo utilizzando uno dei seguenti comandi:

    # cd /usr/sap/SID/SYS/profile
    # cd /sapmnt/SID/profile
  2. Se necessario, puoi trovare i nomi dei file dei profili ASCS ed ERS elencarli nella directory del profilo oppure utilizzare i seguenti formati:

    SID_ASCSASCS_INSTANCE_NUMBER_ASCS_VIRTUAL_HOST_NAME
    SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME
  3. Se utilizzi ENSA1, abilita la funzione keepalive impostando quanto segue nel profilo ASCS:

    enque/encni/set_so_keepalive = true

    Per ulteriori informazioni, consulta la Nota SAP 1410736 - TCP/IP: impostazione dell'intervallo keepalive.

  4. Se necessario, modifica i profili ASCS ed ERS per cambiare il comportamento di avvio del server di accodamento e del server di replica di accodamento.

    ENSA1

    Nella sezione "Avvia server di accodamento SAP" del profilo ASCS, se vedi Restart_Program_NN, cambia "Restart" in "Start", come mostrato nell'esempio seguente.

    Start_Program_01 = local $(_EN) pf=$(_PF)

    Nella sezione "Avvia accodamento del server di replica" del profilo ERS, se vedi Restart_Program_NN, cambia "Restart" in "Start", come mostrato nell'esempio seguente.

    Start_Program_00 = local $(_ER) pf=$(_PFL) NR=$(SCSID)

    ENSA2

    Nella sezione "Avvia server di accodamento SAP" del profilo ASCS, se vedi Restart_Program_NN, cambia "Restart" in "Start", come mostrato nell'esempio seguente.

    Start_Program_01 = local $(_ENQ) pf=$(_PF)

    Nella sezione "Avvia accodamento del replicatore" del profilo ERS, se vedi Restart_Program_NN, cambia "Restart" in "Start", come mostrato nell'esempio seguente.

    Start_Program_00 = local $(_ENQR) pf=$(_PF) ...

Configura le risorse del cluster per ASCS ed ERS

  1. Come root di entrambi i server, imposta il cluster in modalità di manutenzione:

    # pcs property set maintenance-mode="true"
  2. Verifica che il cluster sia in modalità di manutenzione:

    # pcs status
  3. Crea le risorse del cluster per i servizi ASCS ed ERS:

    ENSA1

    • Crea la risorsa cluster per l'istanza ASCS. Il valore di InstanceName è il nome del profilo dell'istanza che SWPM ha generato quando hai installato ASCS.

      # pcs resource create ASCS_INSTANCE_RESOURCE SAPInstance \
          InstanceName=SID_ASCSASCS_INSTANCE_NUMBER_ASCS_VIRTUAL_HOST_NAME \
          START_PROFILE=/sapmnt/SID/profile/SID_ASCSASCS_INSTANCE_NUMBER_ASCS_VIRTUAL_HOST_NAME \
          AUTOMATIC_RECOVER=false meta resource-stickiness=5000 migration-threshold=1 \
          failure-timeout=60  --group ASCS_RESOURCE_GROUP \
          op monitor interval=20 on-fail=restart timeout=60 \
          op start interval=0 timeout=600 \
          op stop interval=0 timeout=600
      
      # pcs resource meta ASCS_RESOURCE_GROUP resource-stickiness=3000
      
    • Crea la risorsa cluster per l'istanza ERS. Il valore di InstanceName è il nome del profilo dell'istanza che SWPM ha generato quando hai installato ERS. Il parametro IS_ERS=true indica a Pacemaker di impostare il flag runsersSID su 1 sul nodo in cui è attivo l'ERS.

      # pcs resource create ERS_INSTANCE_RESOURCE SAPInstance \
          InstanceName=SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME \
          START_PROFILE=/sapmnt/SID/profile/SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME \
          AUTOMATIC_RECOVER=false IS_ERS=true --group ERS_RESOURCE_GROUP \
          op monitor interval=20 on-fail=restart timeout=60 \
          op start interval=0 timeout=600 \
          op stop interval=0 timeout=600
      

    ENSA2

    • Crea la risorsa cluster per l'istanza ASCS. Il valore di InstanceName è il nome del profilo dell'istanza che SWPM ha generato quando hai installato ASCS.

      # pcs resource create ASCS_INSTANCE_RESOURCE SAPInstance \
          InstanceName=SID_ASCSASCS_INSTANCE_NUMBER_ASCS_VIRTUAL_HOST_NAME \
          START_PROFILE=/sapmnt/SID/profile/SID_ASCSASCS_INSTANCE_NUMBER_ASCS_VIRTUAL_HOST_NAME \
          AUTOMATIC_RECOVER=false meta resource-stickiness=5000 \
          --group ASCS_RESOURCE_GROUP \
          op monitor interval=20 on-fail=restart timeout=60 \
          op start interval=0 timeout=600 \
          op stop interval=0 timeout=600
      
      # pcs resource meta ASCS_RESOURCE_GROUP resource-stickiness=3000
      
    • Crea la risorsa cluster per l'istanza ERS. Il valore di InstanceName è il nome del profilo dell'istanza che SWPM ha generato quando hai installato ERS.

      # pcs resource create ERS_INSTANCE_RESOURCE SAPInstance \
          InstanceName=SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME \
          START_PROFILE=/sapmnt/SID/profile/SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME \
          AUTOMATIC_RECOVER=false IS_ERS=true --group ERS_RESOURCE_GROUP \
          op monitor interval=20 on-fail=restart timeout=60 \
          op start interval=0 timeout=600 \
          op stop interval=0 timeout=600
      

configura i vincoli di località e ordinamento

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

  1. Definisci il vincolo dell'ordine iniziale:

ENSA1

  1. Crea un vincolo di colocation che impedisce alle risorse ASCS di essere eseguite sullo stesso server delle risorse ERS:

    # pcs constraint colocation add ERS_RESOURCE_GROUP with \
        ASCS_RESOURCE_GROUP -5000
    
  2. Configura ASCS per il failover al server su cui è in esecuzione l'ERS, come determinato dal flag runsersSID uguale a 1:

    # pcs constraint location ASCS_INSTANCE \
        rule score=2000 runs_ers_SID eq 1
  3. Configura ASCS in modo che inizi prima che l'ERS venga trasferito all'altro server dopo un failover:

    # pcs constraint order start ASCS_RESOURCE_GROUP then \
        stop ERS_RESOURCE_GROUP symmetrical=false kind=Optional
    

ENSA2

  1. Crea un vincolo di colocation che impedisce alle risorse ASCS di essere eseguite sullo stesso server delle risorse ERS:

    # pcs constraint colocation add ERS_RESOURCE_GROUP  with \
        ASCS_RESOURCE_GROUP -5000
    
  2. Configura ASCS in modo che inizi prima che l'ERS venga trasferito all'altro server dopo un failover:

    # pcs constraint order start ASCS_RESOURCE_GROUP then \
        stop ERS_RESOURCE_GROUP symmetrical=false kind=Optional
    
  1. Controlla i vincoli:

    # pcs constraint

    Dovresti vedere un output simile al seguente:

    Location Constraints:
      Resource: ascs-aha-instance
        Constraint: location-ascs-instance
          Rule: score=2000
            Expression: runs_ers_HKN eq 1
      Resource: fence-nw-ha-vm-1
        Disabled on: nw-ha-vm-1 (score:-INFINITY)
      Resource: fence-nw-ha-vm-2
        Disabled on: nw-ha-vm-2 (score:-INFINITY)
    Ordering Constraints:
      start ascs-group then stop ers-group (kind:Optional) (non-symmetrical)
    Colocation Constraints:
      ascs-group with ers-group (score:-5000)
    Ticket Constraints:
  2. Come root di uno dei due server, disabilita la modalità di manutenzione del cluster:

    # pcs property set maintenance-mode="false"

Configura il connettore di cluster Red Hat per SAP

Su ciascun host nel cluster, configura SAP Start Service sapstartsrv in modo che comunichi con il software del cluster Pacemaker tramite l'interfaccia ad alta disponibilità.

  1. Aggiungi l'utente amministrativo SAP al gruppo haclient:

    usermod -a -G haclient SID_LCadm
  2. Modifica i profili di istanza SAP aggiungendo le righe seguenti alla fine di ogni profilo. I profili sono disponibili nella directory /sapmnt/SID/profiles.

    service/halib = $(DIR_CT_RUN)/saphascriptco.so
    service/halib_cluster_connector = /usr/bin/sap_cluster_connector
  3. Se le risorse ASCS ed ERS dell'istanza sono attualmente in esecuzione nel cluster, disabilitale:

    pcs resource disable ERS_INSTANCE_RESOURCE
    pcs resource disable ASCS_INSTANCE_RESOURCE
  4. Interrompi i servizi nell'host ASCS:

    sapcontrol -nr ASCS_INSTANCE_NUMBER -function StopService
  5. Interrompi i servizi sull'host ERS:

    sapcontrol -nr ERS_INSTANCE_NUMBER -function StopService
  6. Abilita le risorse:

    pcs resource enable ERS_INSTANCE_RESOURCE
    pcs resource enable ASCS_INSTANCE_RESOURCE
  7. Ripeti i passaggi precedenti su ciascun host nel cluster.

Per ulteriori informazioni da Red Hat, consulta l'articolo Come configurare SAP halib per le risorse SAPInstance su RHEL 7 e 8.

Installa il database e i server delle applicazioni su host esterni al cluster

Nella configurazione ad alta disponibilità, consigliamo di installare il database e i server delle applicazioni su host diversi rispetto agli host ASCS ed ERS nel cluster.

Utilizzando host separati per ogni server, riduci la complessità, riduci il rischio di un errore che colpisca più server e puoi personalizzare le dimensioni di ogni Compute Engine in base al tipo di server.

In questo modo puoi scegliere la dimensione della macchina certificata più appropriata, evitare errori e ridurre la complessità.

L'installazione del database e dei server delle applicazioni non è trattata in questa guida.

Per informazioni sull'installazione dei server di database, vedi:

convalida e testa il cluster

Questa sezione mostra come eseguire i seguenti test:

  • Verificare la presenza di errori di configurazione
  • Verifica che le risorse ASCS ed ERS cambino server correttamente durante i failover
  • Verificare che le serrature vengano mantenute
  • Simula un evento di manutenzione di Compute Engine per assicurarti che la migrazione live non attivi

Controlla la configurazione del cluster

  1. Come root su entrambi i server, controlla su quali nodi sono in esecuzione le tue risorse:

    # pcs status

    Nell'esempio seguente, le risorse ASCS sono in esecuzione sul server nw-ha-vm-2, mentre le risorse ERS sono in esecuzione sul server nw-ha-vm-1.

    Stack: corosync
      Current DC: nw-ha-vm-1 (version 1.1.23-1.el7_9.1-9acf116022) - partition with quorum
      Last updated: Wed Apr 13 05:21:21 2022
      Last change: Wed Apr 13 05:21:18 2022 by hacluster via crmd on nw-ha-vm-2
    
      2 nodes configured
      10 resource instances configured
    
      Online: [ nw-ha-vm-1 nw-ha-vm-2 ]
    
      Full list of resources:
    
      fence-nw-ha-vm-1     (stonith:fence_gce):    Started nw-ha-vm-2
      fence-nw-ha-vm-2     (stonith:fence_gce):    Started nw-ha-vm-1
       Resource Group: ascs-group
           ascs-file-system   (ocf::heartbeat:Filesystem):    Started nw-ha-vm-2
           ascs-vip   (ocf::heartbeat:IPaddr2):       Started nw-ha-vm-2
           ascs-healthcheck   (service:haproxy@AHAascs):      Started nw-ha-vm-2
           ascs-aha-instance      (ocf::heartbeat:SAPInstance):   Started nw-ha-vm-2
       Resource Group: ers-group
           ers-file-system    (ocf::heartbeat:Filesystem):    Started nw-ha-vm-1
           ers-vip    (ocf::heartbeat:IPaddr2):       Started nw-ha-vm-1
           ers-healthcheck    (service:haproxy@AHAers):       Started nw-ha-vm-1
           ers-aha-instance       (ocf::heartbeat:SAPInstance):   Started nw-ha-vm-1
    
      Migration Summary:
      * Node nw-ha-vm-1:
      * Node nw-ha-vm-2:
  2. Passa all'utente SID_LCadm:

    # su - SID_LCadm
  3. Controlla la configurazione del cluster. Per INSTANCE_NUMBER, specifica il numero di istanza dell'istanza ASCS o ERS attiva sul server in cui stai inserendo il comando:

    > sapcontrol -nr INSTANCE_NUMBER -function HAGetFailoverConfig

    HAActive deve essere TRUE, come mostrato nell'esempio seguente:

    HAGetFailoverConfig
    
    14.04.2022 17:25:45
    HAGetFailoverConfig
    OK
    HAActive: TRUE
    HAProductVersion: Pacemaker
    HASAPInterfaceVersion: sap_cluster_connector
    HADocumentation: https://github.com/ClusterLabs/sap_cluster_connector
    HAActiveNode:
    HANodes:

  4. Come SID_LCadm, verifica la presenza di errori nella configurazione:

    > sapcontrol -nr INSTANCE_NUMBER -function HACheckConfig

    Dovresti vedere un output simile all'esempio seguente:

    14.04.2022 21:43:39
    HACheckConfig
    OK
    state, category, description, comment
    SUCCESS, SAP CONFIGURATION, Redundant ABAP instance configuration, 0 ABAP instances detected
    SUCCESS, SAP CONFIGURATION, Enqueue separation, All Enqueue server separated from application server
    SUCCESS, SAP CONFIGURATION, MessageServer separation, All MessageServer separated from application server
    SUCCESS, SAP STATE, SCS instance running, SCS instance status ok
    SUCCESS, SAP CONFIGURATION, SAPInstance RA sufficient version (vip-ascs_NWT_00), SAPInstance includes is-ers patch
    SUCCESS, SAP CONFIGURATION, Enqueue replication (vip-ascs_NWT_00), Enqueue replication enabled
    SUCCESS, SAP STATE, Enqueue replication state (vip-ascs_NWT_00), Enqueue replication active
    SUCCESS, SAP CONFIGURATION, SAPInstance RA sufficient version (vip-ers_NWT_10), SAPInstance includes is-ers patch

  5. Sul server in cui è attivo ASCS, come SID_LCadm, simula un failover:

    > sapcontrol -nr ASCS_INSTANCE_NUMBER -function HAFailoverToNode ""
  6. Come root, se segui il failover utilizzando crm_mon, dovresti vedere che l'ASCS viene spostato sull'altro server, l'ERS si arresta su quel server e quindi l'ERS viene spostato sul server su cui era in esecuzione l'ASCS.

Simula un 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.

Puoi simulare un errore in diversi modi, tra cui:

  • shutdown -r (sul nodo attivo)
  • ip link set eth0 down
  • echo c > /proc/sysrq-trigger

Queste istruzioni utilizzano ip link set eth0 down per rendere offline l'interfaccia di rete, poiché convalida sia il failover sia la fencing.

  1. Esegui il backup del sistema.

  2. Come root sull'host con l'istanza SCS attiva, metti offline l'interfaccia di rete:

    $ ip link set eth0 down
  3. Riconnettiti a uno dei due host tramite SSH e passa all'utente root.

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

     Stack: corosync
      Current DC: nw-ha-vm-1 (version 1.1.23-1.el7_9.1-9acf116022) - partition with quorum
      Last updated: Wed Apr 13 05:21:21 2022
      Last change: Wed Apr 13 05:21:18 2022 by hacluster via crmd on nw-ha-vm-2
    
      2 nodes configured
      10 resource instances configured
    
      Online: [ nw-ha-vm-1 nw-ha-vm-2 ]
    
      Full list of resources:
    
      fence-nw-ha-vm-1     (stonith:fence_gce):    Started nw-ha-vm-2
      fence-nw-ha-vm-2     (stonith:fence_gce):    Started nw-ha-vm-1
       Resource Group: ascs-group
           ascs-file-system   (ocf::heartbeat:Filesystem):    Started nw-ha-vm-1
           ascs-vip   (ocf::heartbeat:IPaddr2):       Started nw-ha-vm-1
           ascs-healthcheck   (service:haproxy@AHAascs):      Started nw-ha-vm-1
           ascs-aha-instance      (ocf::heartbeat:SAPInstance):   Started nw-ha-vm-1
       Resource Group: ers-group
           ers-file-system    (ocf::heartbeat:Filesystem):    Started nw-ha-vm-2
           ers-vip    (ocf::heartbeat:IPaddr2):       Started nw-ha-vm-2
           ers-healthcheck    (service:haproxy@AHAers):       Started nw-ha-vm-2
           ers-aha-instance       (ocf::heartbeat:SAPInstance):   Started nw-ha-vm-2
    
      Migration Summary:
      * Node nw-ha-vm-1:
      * Node nw-ha-vm-2:

Conferma che le voci di blocco vengono conservate

Per verificare che le voci di blocco vengano mantenute durante un failover, seleziona prima la scheda relativa alla tua versione del server di accodamento e segui la procedura per generare voci di blocco, simulare un failover e confermare che le voci di blocco vengano conservate dopo la nuova attivazione di ASCS.

ENSA1

  1. Come SID_LCadm, sul server in cui è attiva l'ERS, genera voci di blocco utilizzando il programma enqt:

    > enqt pf=/PATH_TO_PROFILE/SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME 11 NUMBER_OF_LOCKS
  2. Come SID_LCadm, sul server in cui è attivo ASCS, verifica che le voci di blocco siano registrate:

    > sapcontrol -nr ASCS_INSTANCE_NUMBER -function EnqGetStatistic | grep locks_now

    Se hai creato 10 blocchi, dovresti vedere un output simile al seguente esempio:

    locks_now: 10
  3. Come SID_LCadm, sul server in cui l'ERS è attiva, avvia la funzione di monitoraggio, OpCode=20, del programma enqt:

    > enqt pf=/PATH_TO_PROFILE/SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME 20 1 1 9999

    Ad esempio:

    > enqt pf=/sapmnt/AHA/profile/AHA_ERS10_vh-ers-aha 20 1 1 9999
  4. Se ASCS è attivo, riavvia il server.

    Sul server di monitoraggio, quando Pacemaker interrompe l'ERS per spostarlo sull'altro server, dovresti vedere un output simile al seguente.

    Number of selected entries: 10
    Number of selected entries: 10
    Number of selected entries: 10
    Number of selected entries: 10
    Number of selected entries: 10
  5. Quando il monitor enqt si arresta, esci dal monitor inserendo Ctrl + c.

  6. Facoltativamente, come root su uno dei due server, monitora il failover del cluster:

    # crm_mon
  7. Come SID_LCadm, dopo aver confermato che i blocchi sono stati mantenuti, rilasciali:

    > enqt pf=/PATH_TO_PROFILE/SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME 12 NUMBER_OF_LOCKS
  8. Come SID_LCadm, sul server in cui è attivo ASCS, verifica che le voci di blocco vengano rimosse:

    > sapcontrol -nr ASCS_INSTANCE_NUMBER -function EnqGetStatistic | grep locks_now

ENSA2

  1. Come SID_LCadm, sul server in cui è attivo ASCS, genera voci di blocco utilizzando il programma enq_adm:

    > enq_admin --set_locks=NUMBER_OF_LOCKS:X:DIAG::TAB:%u pf=/PATH_TO_PROFILE/SID_ASCSASCS_INSTANCE_NUMBER_ASCS_VIRTUAL_HOST_NAME
  2. Come SID_LCadm, sul server in cui è attivo ASCS, verifica che le voci di blocco siano registrate:

    > sapcontrol -nr ASCS_INSTANCE_NUMBER -function EnqGetStatistic | grep locks_now

    Se hai creato 10 blocchi, dovresti vedere un output simile al seguente esempio:

    locks_now: 10
  3. Quando l'ERS è attiva, verifica che le voci di blocco siano state replicate:

    > sapcontrol -nr ERS_INSTANCE_NUMBER -function EnqGetStatistic | grep locks_now

    Il numero di blocchi restituiti deve essere uguale a quello dell'istanza ASCS.

  4. Se ASCS è attivo, riavvia il server.

  5. Facoltativamente, come root su uno dei due server, monitora il failover del cluster:

    # crm_mon
  6. Come SID_LCadm, sul server in cui è stato riavviato ASCS, verifica che le voci di blocco siano state conservate:

    > sapcontrol -nr ASCS_INSTANCE_NUMBER -function EnqGetStatistic | grep locks_now
  7. Come SID_LCadm, sul server su cui è attivo l'ERS, dopo aver confermato che i blocchi sono stati mantenuti, rilasciali:

    > enq_admin --release_locks=NUMBER_OF_LOCKS:X:DIAG::TAB:%u pf=/PATH_TO_PROFILE/SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME
  8. Come SID_LCadm, sul server in cui è attivo ASCS, verifica che le voci di blocco vengano rimosse:

    > sapcontrol -nr ASCS_INSTANCE_NUMBER -function EnqGetStatistic | grep locks_now

    Dovresti vedere un output simile al seguente esempio:

    locks_now: 0

Simula un evento di manutenzione di Compute Engine

Simula un evento di manutenzione di Compute Engine per assicurarti che la migrazione live non attivi un failover.

I valori di timeout e di intervallo utilizzati in queste istruzioni tengono conto della durata delle migrazioni live. Se utilizzi valori più brevi nella configurazione del cluster, il rischio che la migrazione live attivi un failover è maggiore.

Per testare la tolleranza del tuo cluster per la migrazione live:

  1. Sul nodo primario, attiva un evento di manutenzione simulato utilizzando il seguente comando gcloud CLI:

    $ gcloud compute instances simulate-maintenance-event PRIMARY_VM_NAME
  2. Verifica che il nodo primario non cambi:

    $ pcs status

Valuta il carico di lavoro SAP NetWeaver

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

Workload Manager consente di analizzare e valutare automaticamente i carichi di lavoro ad alta disponibilità di SAP NetWeaver rispetto alle best practice dei fornitori SAP, Google Cloud e sistemi operativi. Ciò consente di migliorare la qualità, le prestazioni e l'affidabilità dei carichi di lavoro.

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

Risoluzione dei problemi

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

Raccogli informazioni diagnostiche per i cluster SAP NetWeaver ad alta disponibilità

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

Per raccogliere informazioni diagnostiche, vedi Cluster ad alta disponibilità con 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 della console Google Cloud. Se l'assistenza clienti determina che un problema si verifica nei tuoi sistemi SAP, viene indirizzato al supporto SAP.

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

Requisiti di assistenza

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

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

Esecuzione di attività post-deployment

Prima di utilizzare il sistema SAP NetWeaver, ti consigliamo di eseguire il backup del nuovo sistema SAP NetWeaver HA.

Per ulteriori informazioni, consulta la guida alle operazioni di SAP NetWeaver.

Passaggi successivi

Per ulteriori informazioni sull'alta disponibilità, su SAP NetWeaver e Google Cloud, consulta le seguenti risorse: