Guida alla configurazione del cluster ad alta disponibilità scalabile verticalmente per SAP HANA su SLES

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

Questa guida include i passaggi per:

Questa guida include anche i passaggi per la configurazione della replica del sistema SAP HANA, ma consulta la documentazione di SAP per le istruzioni definitive.

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

Per configurare un cluster ad alta disponibilità per SAP HANA su Red Hat Enterprise Linux (RHEL), consulta la guida alla configurazione del cluster ad alta disponibilità per lo scale-up di SAP HANA su RHEL.

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

Il sistema di cui questa guida illustra il deployment

Seguendo questa guida, eseguirai il deployment di due istanze SAP HANA e configurerai un cluster HA su SLES. Esegui il deployment di ogni istanza SAP HANA su una VM Compute Engine in una zona diversa all'interno della stessa regione. Questa guida non tratta l'installazione di SAP NetWeaver con disponibilità elevata.

Panoramica di un cluster Linux ad alta disponibilità per un sistema SAP HANA scalabile verticalmente a un nodo

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

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

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

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

Prerequisiti

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

Creare una rete

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

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

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 da SAP disponibili su Google Cloud, l'istanza VM richiede anche l'accesso a internet per registrare la licenza e accedere ai repository del fornitore del sistema operativo. Una configurazione con un gateway NAT e con i tag di rete VM supporta questo accesso, anche se le VM di destinazione non hanno IP esterni.

Per configurare la rete:

Console

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

    Vai a Reti VPC

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

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

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

      Si tratta dell'intervallo IPv4 principale per la subnet. Se prevedi di aggiungere più di una subnet, assegni intervalli IP CIDR non sovrapposti per ogni subnet della rete. Tieni presente che ogni subnet e i relativi intervalli IP interni sono mappati a una singola regione.

    4. Fai clic su Fine.
  6. Per aggiungere altre subnet, fai clic su Aggiungi subnet e ripeti i passaggi precedenti. Puoi aggiungere altre subnet alla rete dopo averla creata.
  7. Fai clic su Crea.

gcloud

  1. Vai a Cloud Shell.

    Vai a Cloud Shell

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

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

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

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

    Sostituisci quanto segue:

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

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

  4. (Facoltativo) Ripeti il passaggio precedente e aggiungi altre sottoreti.

Configurazione di un gateway NAT

Se devi creare una o più VM senza indirizzi IP pubblici, devi utilizzare la Network Address Translation (NAT) per consentire alle VM di accedere a internet. Utilizza Cloud NAT, un servizio gestito software-defined distribuito di Google Cloud che consente alle VM di inviare pacchetti in uscita a internet e di ricevere eventuali 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 progetto, le istanze VM possono accedere in sicurezza 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 tramite la connessione.

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

A seconda dei criteri IT applicabili al tuo ambiente, potresti dover isolare o limitare in altro modo la connettività all'host del database, cosa che puoi fare creando regole firewall.

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

  • Le porte SAP predefinite elencate in TCP/IP di tutti i prodotti SAP.
  • Connessioni dal tuo computer o dall'ambiente di rete aziendale all'istanza VM Compute Engine. Se hai dubbi su quale indirizzo IP utilizzare, rivolgiti all'amministratore di rete della tua azienda.
  • Comunicazione tra le VM nella sottorete SAP HANA, inclusa la comunicazione tra i nodi di un sistema SAP HANA scalabile o tra il server di database e i server delle applicazioni in un'architettura a tre livelli. Puoi attivare la comunicazione tra le VM creando una regola firewall per consentire il traffico proveniente dalla sottorete.

Per creare una regola firewall:

Console

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

    Vai a Firewall

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

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

gcloud

Crea una regola firewall utilizzando il seguente comando:

$ gcloud compute firewall-rules create FIREWALL_NAME
--direction=INGRESS --priority=1000 \
--network=NETWORK_NAME --action=ALLOW --rules=PROTOCOL:PORT \
--source-ranges IP_RANGE --target-tags=NETWORK_TAGS

Deployment delle VM e di SAP HANA

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

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

Tuttavia, per eseguire il deployment di due sistemi anziché uno, devi aggiungere la definizione del secondo sistema al file di configurazione copiando e incollando la definizione del primo sistema. Dopo aver creato la seconda definizione, devi modificare i nomi delle risorse e delle istanze nella seconda definizione. Per proteggerti da un errore zonale, specifica un'altra zona nella stessa regione. Tutti gli altri valori delle proprietà nelle due definizioni rimangono invariati.

Dopo aver eseguito correttamente il deployment dei sistemi SAP HANA, definisci e configura il cluster HA.

Le istruzioni riportate di seguito utilizzano Cloud Shell, ma sono applicabili in generale a Google Cloud CLI.

  1. Verifica che le quote attuali per risorse come i dischi permanenti e le CPU siano sufficienti per i sistemi SAP HANA che stai per installare. Se le tue quote non sono sufficienti, il deployment non riesce. Per i requisiti relativi alle quote di SAP HANA, consulta Considerazioni su prezzi e quote per SAP HANA.

    Vai alla pagina Quote

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

    Vai a Cloud Shell

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

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

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

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

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

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

    Proprietà Tipo di dati Descrizione
    tipo Stringa

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

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

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

    instanceName Stringa Il nome dell'istanza VM attualmente in fase di definizione. Specifica nomi diversi nelle definizioni delle VM principali e secondarie. I nomi devono essere specificati con lettere minuscole, numeri o trattini.
    instanceType Stringa Il tipo di macchina virtuale Compute Engine su cui devi eseguire SAP HANA. Se hai bisogno di un tipo di VM personalizzato, specifica un tipo di VM predefinito con un numero di vCPU più vicino a quello di cui hai bisogno, pur essendo più grande. Al termine del deployment, modifica il numero di vCPU e la quantità di memoria.
    zone Stringa La zona Google Cloud in cui eseguire il deployment dell'istanza VM che stai definendo. Specifica zone diverse nella stessa regione per le definizioni HANA principali e secondarie. Le zone devono trovarsi nella stessa regione selezionata per la subnet.
    subnetwork Stringa Il nome della sottorete creata in un passaggio precedente. Se esegui il deployment in un VPC condiviso, specifica questo valore come [SHAREDVPC_PROJECT]/[SUBNETWORK]. Ad esempio, myproject/network1.
    linuxImage Stringa Il nome dell'immagine o della famiglia di immagini del sistema operativo Linux che utilizzi con SAP HANA. Per specificare una famiglia di immagini, aggiungi il prefisso family/ al nome della famiglia. Ad esempio, family/sles-15-sp1-sap. Per specificare un'immagine specifica, specifica solo il nome dell'immagine. Per l'elenco delle immagini e delle famiglie disponibili, consulta la pagina Immagini nella console Google Cloud.
    linuxImageProject Stringa Il progetto Google Cloud che contiene l'immagine che vuoi utilizzare. Questo progetto potrebbe essere il tuo progetto o un progetto di immagini Google Cloud, come suse-sap-cloud. Per ulteriori informazioni sui progetti di immagini Google Cloud, consulta la pagina Immagini della documentazione di Compute Engine.
    sap_hana_deployment_bucket Stringa Il nome del bucket Google Cloud Storage nel progetto che contiene i file di installazione e revisione di SAP HANA che hai caricato in un passaggio precedente. Eventuali file di revisione dell'upgrade nel bucket vengono applicati a SAP HANA durante la procedura di deployment.
    sap_hana_sid Stringa L'ID sistema (SID) SAP HANA. L'ID deve essere composto da tre caratteri alfanumerici e deve iniziare con una lettera. Tutte le lettere devono essere maiuscole.
    sap_hana_instance_number Numero intero Il numero di istanza, compreso tra 0 e 99, del sistema SAP HANA. Il valore predefinito è 0.
    sap_hana_sidadm_password Stringa La password dell'amministratore del sistema operativo. Le password devono essere costituite da almeno acht caratteri e includere almeno una lettera maiuscola, una lettera minuscola e un numero.
    sap_hana_system_password Stringa La password per il superutente del database. Le password devono essere composte da almeno 8 caratteri e includere almeno una lettera maiuscola, una lettera minuscola e un numero.
    sap_hana_sidadm_uid Numero intero Il valore predefinito per l'ID utente SID_LCadm è 900 per evitare che i gruppi creati dagli utenti entrino in conflitto con SAP HANA. Se necessario, puoi impostare un valore diverso.
    sap_hana_sapsys_gid Numero intero L'ID gruppo predefinito per sapsys è 79. Se specifichi un valore superiore, puoi sostituirlo con quello richiesto.
    sap_hana_scaleout_nodes Numero intero Specifica 0. Queste istruzioni riguardano solo i sistemi SAP HANA di scalabilità.
    networkTag Stringa Un tag di rete che rappresenta l'istanza VM per scopi di firewall o routing. Se specifichi publicIP: No e non specifichi un tag di rete, assicurati di fornire un altro mezzo di accesso a internet.
    nic_type Stringa Facoltativo, ma consigliato se disponibile per la macchina e la versione del sistema operativo di destinazione. Specifica l'interfaccia di rete da utilizzare con l'istanza VM. Puoi specificare il valore GVNIC o VIRTIO_NET. Per utilizzare una Google Virtual NIC (gVNIC), devi specificare un'immagine del sistema operativo che supporti gVNIC come valore per la proprietà linuxImage. Per l'elenco delle immagini del sistema operativo, vedi Dettagli del sistema operativo.

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

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

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

    • name
    • instanceName
    • zone

  9. Crea le istanze:

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

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

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

Esempio di file di configurazione template.yaml completo

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

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

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

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

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

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

Creare regole firewall che consentano l'accesso alle VM host

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

  • A scopo di configurazione, la tua workstation locale, un bastion host o un jump server
  • Per l'accesso tra i nodi del cluster, le altre VM host nel cluster HA

Quando crei regole firewall VPC, specifichi i tag di rete che hai definito nel file di configurazione template.yaml per designare le VM host come target della regola.

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

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

Prima di procedere alla sezione successiva, assicurati che le regole del firewall per la verifica del deployment e per la comunicazione all'interno del cluster siano state create. Per istruzioni, vedi Aggiungere regole firewall.

Verifica del deployment delle VM e di SAP HANA

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

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

    Vai a Cloud Logging

  2. Filtra i log:

    Esplora log

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

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

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

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

    Visualizzatore log legacy

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

    • Se viene visualizzato "--- Finished", significa che l'elaborazione del deployment è completata e puoi procedere al passaggio successivo.
    • Se viene visualizzato un errore relativo alla quota:

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

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

      3. Esegui di nuovo il deployment.

Controlla la configurazione delle VM e di SAP HANA

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

    Pulsante SSH nella pagina delle istanze VM di Compute Engine.

  2. Passa all'utente root.

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

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

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

    > HDB info
  6. Se utilizzi RHEL per SAP 9.0 o versioni successive, assicurati che i pacchettichkconfig e compat-openssl11 siano installati nell'istanza VM.

    Per ulteriori informazioni di SAP, consulta Nota SAP 3108316 - Red Hat Enterprise Linux 9.x: installazione e configurazione .

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

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

Verificare 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 Compute Engine.

  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 riceva 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 di panoramica, controlla la disponibilità e i contenuti dei seguenti campi per la configurazione end-to-end corretta dell'infrastruttura di monitoraggio di SAP e Google:

    • Fornitore cloud: Google Cloud Platform
    • Accesso al monitoraggio avanzato: TRUE
    • Dettagli sul monitoraggio avanzato: ACTIVE

Configurare il monitoraggio per SAP HANA

Se vuoi, puoi monitorare le tue istanze SAP HANA utilizzando l'agente di Google Cloud per SAP. Dalla versione 2.0, puoi configurare l'agente per raccogliere le metriche di monitoraggio di SAP HANA e inviarle a Cloud Monitoring. Cloud Monitoring ti consente di creare dashboard per visualizzare queste metriche, configurare avvisi in base alle soglie delle metriche e altro ancora.

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

Disattivare l'avvio automatico di SAP HANA

Per ogni istanza SAP HANA nel cluster, assicurati che l'avvio automatico di SAP HANA sia disattivato. 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. Su ogni host, avvia SAP HANA come SID_LCadm:

    > HDB start

Attivare il riavvio rapido di SAP HANA

Google Cloud consiglia vivamente di attivare il riavvio rapido di SAP HANA per ogni istanza di SAP HANA, in particolare per le istanze più grandi. Il riavvio rapido di SAP HANA riduce il tempo di riavvio nel caso in cui SAP HANA si arresti, ma il sistema operativo rimanga 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 di 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 attivare il riavvio rapido di SAP HANA. Per ulteriori informazioni, consulta:

Per istruzioni autorevoli complete su SAP HANA Fast Restart, consulta la documentazione dell'opzione SAP HANA Fast Restart.

Passaggi manuali

Configura il file system tmpfs

Dopo aver 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.

Mostra la topologia NUMA della VM

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

lscpu | grep NUMA

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

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

Crea una directory per ogni nodo NUMA nella 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 su tmpfs

Monta le directory del file system tmpfs e specifica una preferenza per il nodo NUMA per ciascuna 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 un riavvio del 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ò aumentare e diminuire dinamicamente.

Per limitare la memoria utilizzata dal file system tmpfs, puoi impostare un limite di dimensioni per un volume del nodo 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 di una determinata istanza SAP HANA e di un determinato nodo del server impostando il parametro persistent_memory_global_allocation_limit nella sezione [memorymanager] del file global.ini.

Configurazione di 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 nella memoria persistente.

Aggiorna la sezione [persistence] nel file global.ini

Configura la sezione [persistence] nel file global.ini di SAP HANA per fare 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 corrispondono a m2-ultramem-208. Se esegui la tua esecuzione su m2-ultramem-416, devi configurare otto volumi di memoria (0-7).

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

Ora SAP HANA può utilizzare la posizione tmpfs come spazio di memoria permanente.

Specifica le tabelle da archiviare nella memoria persistente

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

Ad esempio, per attivare la memoria persistente 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 le colonne, le tabelle e le visualizzazioni di monitoraggio che forniscono informazioni dettagliate, consulta Memoria persistente SAP HANA.

Passaggi automatici

Lo script di automazione fornito da Google Cloud per attivare il riavvio rapido di SAP HANA apporta modifiche alle directory /hana/tmpfs*, al file /etc/fstab e alla configurazione di SAP HANA. Quando esegui lo script, potresti dover eseguire passaggi aggiuntivi a seconda che si tratti del deployment iniziale del sistema SAP HANA o se stai ridimensionando la macchina a una dimensione NUMA diversa.

Per il deployment iniziale del sistema SAP HANA o per il ridimensionamento della macchina al fine di 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 attivare il riavvio rapido di SAP HANA.

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

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

  1. Stabilisci una connessione SSH con la VM host.

  2. Passa al root:

    sudo su -

  3. Scarica lo script sap_lib_hdbfr.sh:

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

    chmod +x sap_lib_hdbfr.sh
  5. Verifica che lo script non 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, consulta Assistenza per SAP su Google Cloud.

  6. Esegui lo script dopo aver sostituito l'ID sistema (SID) e la password di 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 segreto deve esistere nel progetto Google Cloud che contiene l'istanza VM di hosting.

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

    Sostituisci quanto segue:

    • SID: specifica l'SID con lettere maiuscole. Ad esempio, AHA.
    • SECRET_NAME: specifica il nome del segreto corrispondente alla password per l'utente SYSTEM del database SAP HANA. Questo segreto 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 attivato il riavvio rapido di SAP HANA, assicurati di cambiare la password. L'utilizzo di una password in testo normale non è consigliato perché la password verrà registrata nella cronologia della riga di comando della VM.

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

    Sostituisci quanto segue:

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

Se l'esecuzione iniziale è andata a buon fine, 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)

Configura le chiavi SSH sulle VM principali e secondarie

Le chiavi del secure store SAP HANA (SSFS) devono essere sincronizzate tra gli host del cluster HA. Per semplificare la sincronizzazione e consentire di copiare file come i backup tra gli host del cluster HA, queste istruzioni ti chiedono di creare connessioni SSH root tra i due host.

La tua organizzazione ha probabilmente linee guida che regolano le comunicazioni della rete interna. Se necessario, al termine del deployment puoi rimuovere i metadati dalle VM e le chiavi dalla directory authorized_keys.

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

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

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

  1. Nella VM host principale:

    1. Accedi tramite SSH alla VM.

    2. Passa al root:

    $ sudo su -
    1. Come utente root, genera una chiave SSH.

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

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

      # cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  2. Nella VM host secondaria:

    1. Accedi tramite SSH alla VM.

    2. Passa al root:

    $ sudo su -
    1. Come utente root, genera una chiave SSH.

      # ssh-keygen
    2. Aggiorna i metadati della VM secondaria con le informazioni sulla chiave SSH per la VM principale.

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

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

      # ssh primary-host-name
  3. Nella VM host principale come utente root, conferma la connessione aprendo una connessione SSH alla VM host secondaria:

    # ssh secondary-host-name

Crea un utente del database SAP HANA per il monitoraggio dello stato del cluster

  1. Nell'host principale, accedi al terminal interattivo del database SAP HANA come SID_LCadm:

    > hdbsql -u system -p "system-password" -i inst_num
  2. Nel terminale interattivo, crea l'utente del database slehasync:

    => CREATE USER slehasync PASSWORD "hdb-user-password";
    => GRANT CATALOG READ TO slehasync;
    => GRANT MONITOR ADMIN TO slehasync;
    => ALTER USER slehasync DISABLE PASSWORD LIFETIME;
  3. Come SID_LCadm, definisci la chiave utente SLEHALOC nell'hdbuserstore SAP HANA Secure User Store:

    > PATH="$PATH:/usr/sap/SID/HDBinst_num/exe"
    > hdbuserstore SET SLEHALOC localhost:3inst_num15 slehasync hdb-user-password

Esegui il backup dei database

Crea i backup dei database per avviare la registrazione del 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 ciascun database tenant.

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

Per creare i backup dei nuovi database SAP HANA:

  1. Nell'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 del database:

    • Per un sistema SAP HANA con un singolo contenitore del database:

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

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

      0 rows affected (overall time 18.416058 sec; server time 18.414209 sec)
    • Per un sistema di contenitori multidatabase (MDC) SAP HANA, crea un backup del database di sistema e di tutti i database dei 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 corretta da un nuovo sistema SAP HANA:

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

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

    Dovresti vedere:

    VALUE
    "normal"

Attiva la replica del sistema SAP HANA

Nell'ambito dell'attivazione della replica del sistema SAP HANA, devi copiare i dati e i file chiave per gli archivi sicuri SAP HANA sul file system (SSFS) dall'hosting primario all'hosting secondario. Il metodo utilizzato da questa procedura per copiare i file è solo uno dei possibili metodi che puoi utilizzare.

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

    > hdbnsutil -sr_enable --name=PRIMARY_HOST_NAME
  2. Sul computer host secondario:

    1. Come SID_LCadm, interrompi SAP HANA:

      > HDB stop
    2. Come utente root, archivia i dati e i file di chiavi SSFS esistenti:

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

      > HDB start

Convalida della replica del sistema

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

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

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

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

Inoltre, overall system replication status mostra ACTIVE.

Attivare i hook del provider SAP HANA HA/RE

SUSE consiglia di attivare gli hook del provider SAP HANA HA/RE, che consentono a SAP HANA di inviare notifiche per determinati eventi e migliorano il rilevamento degli errori. Gli hook del provider SAP HANA HA/RE richiedono SAP HANA 2.0 SPS 03 o una versione successiva.

Sia sul sito principale che su quello secondario, completa i seguenti passaggi:

  1. Come SID_LCadm, interrompi SAP HANA:

    > HDB stop

  1. Come utente root o SID_LCadm, apri il file global.ini per la modifica:

    > 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/
    execution_order = 1
    
    [ha_dr_provider_suschksrv]
    provider = susChkSrv
    path = /usr/share/SAPHanaSR/
    execution_order = 3
    action_on_lost = stop
    
    
    [trace]
    ha_dr_saphanasr = info
    

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

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

    Sostituisci quanto segue:

    • SITE_A: il nome del sito del server SAP HANA principale
    • SITE_B: il nome del sito del server SAP HANA secondario
    • SID_LC: l'SID, specificato utilizzando lettere minuscole
    Per visualizzare i nomi dei siti, puoi eseguire il comando crm_mon -A1 | grep site come utente root sul server SAP HANA principale o secondario.
    Cmnd_Alias SOK_SITEA = /usr/sbin/crm_attribute -n hana_SID_LC_site_srHook_SITE_A -v SOK -t crm_config -s SAPHanaSR
    Cmnd_Alias SFAIL_SITEA = /usr/sbin/crm_attribute -n hana_SID_LC_site_srHook_SITE_A -v SFAIL -t crm_config -s SAPHanaSR
    Cmnd_Alias SOK_SITEB = /usr/sbin/crm_attribute -n hana_SID_LC_site_srHook_SITE_B -v SOK -t crm_config -s SAPHanaSR
    Cmnd_Alias SFAIL_SITEB = /usr/sbin/crm_attribute -n hana_SID_LC_site_srHook_SITE_B -v SFAIL -t crm_config -s SAPHanaSR
    SID_LCadm ALL=(ALL) NOPASSWD: SOK_SITEA, SFAIL_SITEA, SOK_SITEB, SFAIL_SITEB

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

    • Per SLES for SAP 15 SP3 e versioni successive:

      @includedir /etc/sudoers.d

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

      #includedir /etc/sudoers.d

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

  6. Come SID_LCadm, avvia SAP HANA:

    > HDB start

  7. Dopo aver completato la configurazione del cluster per SAP HANA, puoi verificare che l'hook funzioni correttamente durante un test di failover, come descritto in Risoluzione dei problemi relativi all'hook Python SAPHanaSR e Il rilevamento del cluster HA richiede troppo tempo in caso di errore dell'index server HANA.

Configurare il supporto del failover di Cloud Load Balancing

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

Prenota un indirizzo IP per l'IP virtuale

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

  1. Apri Cloud Shell:

    Vai a Cloud Shell

  2. Prenota un indirizzo IP per l'IP virtuale. Si tratta dell'indirizzo IP utilizzato dalle applicazioni per accedere a SAP HANA. Se ometti il flag --addresses, viene scelto per te 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 indirizzo IP statico, consulta Prenotazione di un indirizzo IP interno statico.

  3. Conferma la prenotazione dell'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 host principale a uno e la VM host secondaria all'altro:

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

    $ gcloud compute instance-groups unmanaged list

    Dovresti vedere un output simile 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à Compute Engine

  1. In Cloud Shell, crea il controllo di integrità. Per la porta utilizzata dal controllo di integrità, scegli una porta nell'intervallo privato 49152-65535 per evitare conflitti con altri servizi. I valori di intervallo di controllo e timeout sono leggermente più lunghi di quelli predefiniti per aumentare la tolleranza al failover durante gli eventi di migrazione live di Compute Engine. Se necessario, puoi modificare i valori:

    $ gcloud compute health-checks create tcp HEALTH_CHECK_NAME --port=HEALTHCHECK_PORT_NUM \
      --proxy-header=NONE --check-interval=10 --timeout=10 --unhealthy-threshold=2 \
      --healthy-threshold=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 salute di Compute Engine, 35.191.0.0/16 e 130.211.0.0/22. Per saperne di più, consulta Creare regole firewall per i controlli di integrità.

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

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

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

    Ad esempio:

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

Configura il bilanciatore del carico e il gruppo di failover

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

    $ gcloud compute backend-services create BACKEND_SERVICE_NAME \
      --load-balancing-scheme internal \
      --health-checks HEALTH_CHECK_NAME \
      --no-connection-drain-on-failover \
      --drop-traffic-if-unhealthy \
      --failover-ratio 1.0 \
      --region CLUSTER_REGION \
      --global-health-checks
  2. Aggiungi il gruppo di istanze 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 riservato 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 sistema SAP HANA ad alta disponibilità, consulta Bilanciamento del carico TCP/UDP interno.

Testa la configurazione del bilanciatore del carico

Anche se i gruppi di istanza di backend non verranno registrati come integri fino a più tardi, puoi testare la configurazione del bilanciatore del carico impostando un listener per rispondere ai controlli di integrità. Dopo aver configurato un ascoltatore, se il bilanciatore del carico è configurato correttamente, lo stato dei gruppi di istanza di backend diventa Stabile.

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

Test del bilanciatore del carico con l'utilità socat

Puoi utilizzare l'utilità socat per ascoltare temporaneamente sulla porta di controllo di integrità. Devi comunque installare l'socatutilità, perché la utilizzerai in un secondo momento per configurare le risorse del cluster.

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

    # zypper install -y socat

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

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

  3. In Cloud Shell, dopo aver atteso qualche secondo affinché il controllo di integrità rilevi il listener, controlla lo stato dei gruppi di istanza di backend:

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

    Dovresti vedere un output simile al seguente:

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

Test del bilanciatore del carico utilizzando la porta 22

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

Per utilizzare temporaneamente la porta 22:

  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 lo stato 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 del controllo di integrità.

Configurare Pacemaker

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

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

Crea i file di configurazione di Corosync

  1. Crea un file di configurazione Corosync sull'host principale:

    1. Crea il seguente file:

       vi /etc/corosync/corosync.conf
    2. Nel file corosync.conf sull'host principale, aggiungi la seguente configurazione, sostituendo il testo della variabile in corsivo con i tuoi valori:

      totem {
       version: 2
       secauth: off
       crypto_hash: sha1
       crypto_cipher: aes256
       cluster_name: hacluster
       clear_node_high_bit: yes
       token: 20000
       token_retransmits_before_loss_const: 10
       join: 60
       max_messages:  20
       transport: udpu
       interface {
         ringnumber: 0
         Bindnetaddr: static-ip-of-hdb-on-this-host
         mcastport: 5405
         ttl: 1
       }
      }
      logging {
       fileline:  off
       to_stderr: no
       to_logfile: no
       logfile: /var/log/cluster/corosync.log
       to_syslog: yes
       debug: off
       timestamp: on
       logger_subsys {
         subsys: QUORUM
         debug: off
       }
      }
      nodelist {
       node {
         ring0_addr: this-host-name
         nodeid: 1
       }
       node {
         ring0_addr: other-host-name
         nodeid: 2
       }
      }
      quorum {
       provider: corosync_votequorum
       expected_votes: 2
       two_node: 1
      }
  2. Crea un file di configurazione Corosync sull'host secondario ripetendo gli stessi passaggi utilizzati per l'host principale. A parte l'IP statico dell'HDB nella proprietà Bindnetaddr e l'ordine dei nomi host in nodelist, i valori delle proprietà del file di configurazione sono gli stessi per ogni host.

Inizializza il cluster

  1. Nell'host principale come utente root:

    1. Modifica la password dell'utente hacluster:

      # passwd hacluster
    2. Inizializza il cluster:

      # corosync-keygen
      # crm cluster init --yes ssh
      # crm cluster init -y csync2
    3. Avvia Pacemaker sull'host principale:

      # systemctl enable pacemaker
      # systemctl start pacemaker
  2. Nell'host secondario come utente root:

    1. Modifica la password dell'utente hacluster:

      # passwd hacluster
    2. Collega l'host secondario al cluster inizializzato sull'host primario:

      # crm cluster join --yes ssh
      # crm cluster join -y -c primary-host-name csync2
    3. Avvia Pacemaker sull'host secondario:

      # systemctl enable pacemaker
      # systemctl start pacemaker
  3. Su entrambi gli host come utente root, verifica che il cluster mostri entrambi i nodi:

    # crm_mon -s

    Dovresti vedere un output simile al seguente:

    CLUSTER OK: 2 nodes online, 0 resources configured

Configura il cluster

Per configurare il cluster, definisci le proprietà generali del cluster e le risorse primitive del cluster.

Attivare la modalità di manutenzione

  1. Su entrambi gli host, come utente root, imposta il cluster in modalità di manutenzione:

    # crm configure property maintenance-mode="true"

Configura le proprietà generali del cluster

  1. Nell'host principale:

    1. Imposta le proprietà generali del cluster:

      # crm configure property stonith-timeout="300s"
      # crm configure property stonith-enabled="true"
      # crm configure rsc_defaults resource-stickiness="1000"
      # crm configure rsc_defaults migration-threshold="5000"
      # crm configure op_defaults timeout="600"

Configurare la recinzione

La configurazione del recinto virtuale avviene definendo una risorsa del cluster con un agente di recinto virtuale per ogni VM host.

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

Crea le risorse del dispositivo di recinzione

  1. Nell'host principale come utente root, crea le risorse di recinzione:

    # crm configure primitive STONITH-"primary-host-name" stonith:fence_gce \
        op monitor interval="300s" timeout="120s" \
        op start interval="0" timeout="60s" \
        params port="primary-host-name" zone="primary-zone" project="project_id" \
        pcmk_reboot_timeout=300 pcmk_monitor_retries=4 pcmk_delay_max=30
    # crm configure primitive STONITH-"secondary-host-name" stonith:fence_gce \
        op monitor interval="300s" timeout="120s" \
        op start interval="0" timeout="60s" \
        params port="secondary-host-name" zone="secondary-zone" project="project_id" \
        pcmk_reboot_timeout=300 pcmk_monitor_retries=4
  2. Imposta la posizione di ogni dispositivo di recinzione:

    # crm configure location LOC_STONITH_"primary-host-name" \
        STONITH-"primary-host-name" -inf: "primary-host-name"
    # crm configure location LOC_STONITH_"secondary-host-name" \
        STONITH-"secondary-host-name" -inf: "secondary-host-name"

Imposta un ritardo per il riavvio di Corosync

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

  4. Ricarica la configurazione del gestore systemd.

    systemctl daemon-reload
  5. Verifica che il file plug-in sia stato creato:

    service corosync status

    Dovresti vedere una riga per il file plug-in, come 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

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

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

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

Configurare il servizio di controllo di integrità dell'helper

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

Per gestire gli ascoltatori nel cluster, crea una risorsa per l'ascoltatore.

Queste istruzioni utilizzano l'utilità socat come ascoltatore.

  1. Su entrambi gli host come utente root, installa socat utility:

    # zypper in -y socat
  2. Nell'host principale:

    1. Crea una risorsa per il servizio di controllo di integrità dell'helper:

      # crm configure primitive rsc_healthcheck-primary anything \
          params binfile="/usr/bin/socat" \
          cmdline_options="-U TCP-LISTEN:healthcheck-port-num,backlog=10,fork,reuseaddr /dev/null" \
          op monitor timeout=20s interval=10s \
          op_params depth=0

Raggruppa le risorse del servizio di controllo di integrità VIP e dell'helper

Raggruppa le risorse di servizio di controllo di integrità VIP e di supporto:

# crm configure group g-primary rsc_vip_int-primary rsc_healthcheck-primary

Crea la risorsa primitiva SAPHanaTopology

Definisci la risorsa primitiva SAPHanaTopology in un file di configurazione temporaneo, che poi carichi in Corosync.

Nell'host principale come utente root:

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

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

    primitive rsc_SAPHanaTopology_SID_HDBinst_num ocf:suse:SAPHanaTopology \
     operations \$id="rsc_sap2_SID_HDBinst_num-operations" \
     op monitor interval="10" timeout="600" \
     op start interval="0" timeout="600" \
     op stop interval="0" timeout="300" \
     params SID="SID" InstanceNumber="inst_num"
    
    clone cln_SAPHanaTopology_SID_HDBinst_num rsc_SAPHanaTopology_SID_HDBinst_num \
     meta clone-node-max="1" target-role="Started" interleave="true"
  3. Modifica il file /tmp/cluster.tmp per sostituire il testo della variabile con l'ID sistema e il numero di istanza del sistema SAP HANA.

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

    crm configure load update /tmp/cluster.tmp

Crea la risorsa primitiva SAPHana

La risorsa primitiva SAPHana viene definita utilizzando lo stesso metodo utilizzato per la risorsa SAPHanaTopology: in un file di configurazione temporaneo, che poi carichi in Corosync.

  1. Sostituisci il file di configurazione temporaneo:

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

    primitive rsc_SAPHana_SID_HDBinst_num ocf:suse:SAPHana \
     operations \$id="rsc_sap_SID_HDBinst_num-operations" \
     op start interval="0" timeout="3600" \
     op stop interval="0" timeout="3600" \
     op promote interval="0" timeout="3600" \
     op demote interval="0" timeout="3600" \
     op monitor interval="60" role="Master" timeout="700" \
     op monitor interval="61" role="Slave" timeout="700" \
     params SID="SID" InstanceNumber="inst_num" PREFER_SITE_TAKEOVER="true" \
     DUPLICATE_PRIMARY_TIMEOUT="7200" AUTOMATED_REGISTER="true"
    
    ms msl_SAPHana_SID_HDBinst_num rsc_SAPHana_SID_HDBinst_num \
     meta notify="true" clone-max="2" clone-node-max="1" \
     target-role="Started" interleave="true"
    
    colocation col_saphana_ip_SID_HDBinst_num 4000: g-primary:Started \
     msl_SAPHana_SID_HDBinst_num:Master
    order ord_SAPHana_SID_HDBinst_num Optional: cln_SAPHanaTopology_SID_HDBinst_num \
     msl_SAPHana_SID_HDBinst_num

    Per un cluster SAP HANA HA multilivello, se utilizzi una versione precedente a SAP HANA 2.0 SP03, imposta AUTOMATED_REGISTER su false. In questo modo, un'istanza recuperata non tenterà di registrarsi autonomamente per la replica a un sistema HANA che ha già un target di replica configurato. 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 a più livelli. Per ulteriori informazioni, consulta:

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

    crm configure load update /tmp/cluster.tmp

Verificare che la replica del sistema SAP HANA sia attiva

  1. Nell'host principale, accedi al terminal interattivo del database SAP HANA come SID_LCadm:

    > hdbsql -u system -p "system-password" -i inst_num
  2. Nel terminale interattivo, controlla lo stato della replica:

    => select distinct REPLICATION_STATUS from SYS.M_SERVICE_REPLICATION

    REPLICATION_STATUS deve essere "ACTIVE".

In alternativa, puoi controllare lo stato della replica eseguendo il seguente script Python come SID_LCadm:

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

Attiva il cluster

  1. Nell'host principale, come utente root, esci dalla modalità di manutenzione del cluster:

    # crm configure property maintenance-mode="false"

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

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

    # crm status

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

    Stack: corosync
    Current DC: hana-ha-vm-1 (version 2.0.1+20190417.13d370ca9-3.9.1-2.0.1+20190417.13d370ca9) - partition with quorum
    Last updated: Sun Jun  7 00:36:56 2020
    Last change: Sun Jun  7 00:36:53 2020 by root via crm_attribute on hana-ha-vm-1
    
    2 nodes configured
    8 resources configured
    
    Online: [ hana-ha-vm-1 hana-ha-vm-2 ]
    
    Full list of resources:
    
    STONITH-hana-ha-vm-1   (stonith:fence_gce):  Started hana-ha-vm-2
    STONITH-hana-ha-vm-2   (stonith:fence_gce):  Started hana-ha-vm-1
    Clone Set: cln_SAPHanaTopology_HA1_HDB22 [rsc_SAPHanaTopology_HA1_HDB22]
        Started: [ hana-ha-vm-1 hana-ha-vm-2 ]
    Resource Group: g-primary
        rsc_vip_int-primary        (ocf::heartbeat:IPaddr2):       Started hana-ha-vm-1
        rsc_healthcheck-primary        (ocf::heartbeat:anything):      Started hana-ha-vm-1
    Clone Set: msl_SAPHana_HA1_HDB22 [rsc_SAPHana_HA1_HDB22] (promotable)
        Masters: [ hana-ha-vm-1 ]
        Slaves: [ hana-ha-vm-2 ]

Test del failover

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

Esegui il backup del sistema prima del test.

Puoi simulare un errore in diversi modi, ad esempio:

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

Queste istruzioni utilizzano ip link set eth0 down o iptables per simulare un'interruzione della rete tra i due host del cluster. Utilizza il comando ip link su un'istanza con una singola interfaccia di rete e il comando iptables su istanze con una o più interfacce di rete. Il test convalida sia il failover sia il fencing. Se le tue istanze hanno 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ì una perdita di connessione di rete con l'host principale.

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

    # ip link set eth0 down

    In alternativa, se sono attive più interfacce di rete, utilizza iptables sull'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 utilizzando SSH e passa all'utente root.

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

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

Configura HANA Active/Active (lettura abilitata)

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

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

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

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

Per configurare il supporto del failover per l'host secondario:

  1. Apri Cloud Shell:

    Vai a Cloud Shell

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

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

    Se ometti il flag --addresses nel seguente comando, viene scelto automaticamente un indirizzo IP nella sottorete specificata. Per ulteriori informazioni sulla prenotazione di un indirizzo IP statico, consulta Prenotazione di un indirizzo IP interno statico.

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

    Per la porta utilizzata dal controllo di integrità, scegli una porta nell'intervallo privato 49152-65535 per evitare conflitti con altri servizi. La porta deve essere diversa da quella configurata per il controllo di integrità utilizzato per l'accesso al sistema principale HANA. I valori di intervallo di controllo e timeout sono leggermente più lunghi rispetto ai valori predefiniti per aumentare la tolleranza al failover durante gli eventi di migrazione live di Compute Engine. Se necessario, puoi modificare i valori.

    $ gcloud compute health-checks create tcp secondary-health-check-name \
      --port=secondary-healthcheck-port-num \
      --proxy-header=NONE --check-interval=10 --timeout=10 --unhealthy-threshold=2 \
      --healthy-threshold=2
  4. Configura il bilanciatore del carico e il gruppo di failover eseguendo i seguenti comandi.

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

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

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

      $ gcloud compute backend-services add-backend secondary-backend-service-name \
        --instance-group primary-ig-name \
        --instance-group-zone primary-zone \
        --region cluster-region
    3. Aggiungi il gruppo di istanze di failover secondario al servizio di backend:

      $ gcloud compute backend-services add-backend secondary-backend-service-name \
        --instance-group secondary-ig-name \
        --instance-group-zone secondary-zone \
        --failover \
        --region cluster-region
    4. Creare una regola di forwarding.

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

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

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

Attiva HANA Active/Active (lettura abilitata)

Nell'host secondario, attiva Active/Active (lettura abilitata) per la replica del sistema SAP HANA seguendo questi passaggi:

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

    # crm configure property maintenance-mode="true"

  2. Come SID_LCadm, interrompi SAP HANA:

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

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

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

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

    Dovresti vedere un output simile al seguente esempio:

    overall_replication_status=ACTIVE

Configurare Pacemaker

Configura il cluster Pacemaker HA per Active/Active (lettura abilitata) eseguendo i seguenti comandi come utente root:

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

    # crm configure primitive rsc_vip_int-secondary IPaddr2 \
      params ip=secondary-vip-address cidr_netmask=32 nic="eth0" \
      op monitor interval=3600s timeout=60s
  2. Configura il servizio di controllo dell'integrità di assistenza eseguendo i seguenti comandi:

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

    1. Per gestire gli ascoltatori nel cluster, crea una risorsa per l'ascoltatore. Queste istruzioni utilizzano l'utilità socat come ascoltatore. Crea una risorsa per il servizio di controllo di integrità dell'helper:

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

      # crm configure group g-secondary rsc_vip_int-secondary rsc_healthcheck-secondary
  3. Crea un vincolo di colocalizzazione:

    # crm configure colocation col_saphana_secondary 4000: g-secondary:Started \
      msl_SAPHana_SID_HDBinst_num:Slave
  4. Per uscire dalla modalità di manutenzione del cluster:

    # crm configure property maintenance-mode="false"
  5. Controlla lo stato del cluster:

    # crm status

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

    Cluster Summary:
      Stack: corosync
      Current DC: hana-ha-vm-1 (version 2.0.4+20200616.2deceaa3a-3.15.1-2.0.4+20200616.2deceaa3a) - partition with quorum
      Last updated: Fri Oct  7 21:52:46 2022
      Last change:  Fri Oct  7 21:51:42 2022 by root via crm_attribute on hana-ha-vm-1
    
      2 nodes configured
      10 resource instances configured
    
    Node List:
      Online: [ hana-ha-vm-1 hana-ha-vm-2 ]
    
    Active Resources:
      STONITH-hana-ha-vm-1  (stonith:fence_gce):   Started hana-ha-vm-2
      STONITH-hana-ha-vm-2  (stonith:fence_gce):   Started hana-ha-vm-1
      Resource Group: g-primary:
        rsc_vip_int-primary       (ocf::heartbeat:IPaddr2):        Started hana-ha-vm-1
        rsc_vip_hc-primary        (ocf::heartbeat:anything):       Started hana-ha-vm-1
      Clone Set: cln_SAPHanaTopology_HA1_HDB00 [rsc_SAPHanaTopology_HA1_HDB00]:
        Started: [ hana-ha-vm-1 hana-ha-vm-2 ]
      Clone Set: msl_SAPHana_HA1_HDB00 [rsc_SAPHana_HA1_HDB00] (promotable):
        Masters: [ hana-ha-vm-1 ]
        Slaves: [ hana-ha-vm-2 ]
      Resource Group: g-secondary:
        rsc_vip_int-secondary       (ocf::heartbeat:IPaddr2):        Started hana-ha-vm-2
        rsc_healthcheck-secondary   (ocf::heartbeat:anything):       Started hana-ha-vm-2
    

Valuta il tuo workload SAP HANA

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

Workload Manager ti consente di eseguire automaticamente la scansione e la valutazione dei carichi di lavoro SAP HANA ad alta disponibilità in base alle best practice di SAP, Google Cloud e dei fornitori di sistemi operativi. In questo modo puoi migliorare la qualità, le prestazioni e l'affidabilità dei tuoi carichi di lavoro.

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

Risoluzione dei problemi

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

Ricevere assistenza per SAP HANA su SLES

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

Assistenza

Per problemi con i servizi o l'infrastruttura di Google Cloud, contatta l'assistenza clienti. Puoi trovare i dati di contatto nella pagina Panoramica dell'assistenza nella console Google Cloud. Se l'assistenza clienti stabilisce che il problema riguarda i tuoi sistemi SAP, ti verrà consigliato di rivolgerti all'assistenza SAP.

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

Requisiti di assistenza

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

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

Connessione a SAP HANA

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

  • Per connetterti a SAP HANA tramite l'istanza bastion, connettiti all'host bastion e poi alle istanze SAP HANA utilizzando un client SSH di tua scelta.

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

Attività di post-deployment

Dopo aver completato il deployment, completa i passaggi che seguono:

  1. Modifica le password temporanee per l'amministratore di sistema SAP HANA e per il superutente del database. Ad esempio:

    sudo passwd SID_LCadm

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

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

  3. Se il sistema SAP HANA è dipiegato 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 contribuisce a migliorare la velocità effettiva complessiva della rete sull'interfaccia di rete VirtIO senza influire sulla latenza della rete.

Per ulteriori informazioni, vedi:

Passaggi successivi

Per ulteriori informazioni, consulta la seguente risorsa:

  • Replicazione automatica del sistema SAP HANA in scale-up in un cluster pacemaker
  • Guida alla pianificazione dell'alta disponibilità di SAP HANA
  • Guida alla pianificazione del ripristino di emergenza di SAP HANA
  • Per ulteriori informazioni sull'amministrazione e sul monitoraggio delle VM, consulta la Guida alle operazioni di SAP HANA.