Questa guida illustra come eseguire il deployment e configurare un cluster SUSE Linux Enterprise Server (SLES) ad alta disponibilità (HA) ottimizzato per le prestazioni per un sistema di scale out SAP HANA su Google Cloud.
Questa guida illustra i passaggi per:
- Configurazione di un bilanciatore del carico di rete passthrough interno per reinstradare il traffico in caso di errore
- La configurazione di un cluster Pacemaker su SLES per gestire i sistemi SAP e altre risorse durante un failover
Questa guida include anche i passaggi per configurare la replica di sistema SAP HANA, ma fai riferimento alla documentazione SAP per le istruzioni definitive.
Per eseguire il deployment di un sistema SAP HANA senza un cluster Linux ad alta disponibilità o un host del nodo in standby, consulta la guida al deployment di SAP HANA.
Questa guida è destinata agli utenti avanzati SAP HANA che hanno familiarità con le configurazioni Linux ad alta disponibilità per SAP HANA.
Il sistema implementato da questa guida
Seguendo questa guida, eseguirai il deployment di un sistema SAP HANA HA multinodo configurato per la ridondanza completa della zona con un'istanza aggiuntiva che funge da produttore di maggioranza, nota anche come nodo tie-breaker, che garantisce il quorum del cluster in caso di perdita di una zona.
Il deployment finale comprende le seguenti risorse:
- Un sito principale e secondario in cui ogni istanza ha una controparte di zona.
- Due siti configurati per la replica sincrona.
- Una singola istanza di computing che funge da produttore di maggioranza.
- Gestore di risorse del cluster ad alta disponibilità Pacemaker con meccanismo di scherma.
- Dischi permanenti per dati e volumi di log SAP HANA collegati a ciascuna istanza SAP HANA.
Questa guida illustra l'utilizzo dei modelli Terraform 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à SAP e siano conformi alle best practice attuali.
In questa guida viene utilizzato SAP HANA Studio per testare la replica del sistema SAP HANA. Se preferisci, puoi utilizzare SAP HANA Cockpit. Per informazioni sull'installazione di SAP HANA Studio, consulta:
- Installazione di SAP HANA Studio su una VM Windows di Compute Engine
- Guida all'installazione e all'aggiornamento di SAP HANA Studio
Prerequisiti
Prima di creare il cluster SAP HANA ad alta disponibilità, assicurati che siano soddisfatti i seguenti prerequisiti:
- Hai letto la guida alla pianificazione di SAP HANA e la guida alla pianificazione dell'alta disponibilità di SAP HANA.
- Tu o la tua organizzazione disponete di un account Google Cloud e avete creato un progetto per il deployment di SAP HANA. Per informazioni sulla creazione di account e progetti Google Cloud, consulta Configurare l'Account Google nella Guida al deployment di SAP HANA.
- Se richiedi l'esecuzione del carico di lavoro SAP in conformità con i requisiti di residenza dei dati, controllo dell'accesso, personale di assistenza o normativi, devi creare la cartella Assured Workloads richiesta. Per ulteriori informazioni, consulta la pagina Conformità e controlli di sovranità per SAP su Google Cloud.
Il supporto di installazione SAP HANA è archiviato in un bucket Cloud Storage disponibile nel progetto di deployment e nella regione. Per informazioni su come caricare contenuti multimediali di installazione SAP HANA in un bucket Cloud Storage, consulta il download di SAP HANA nella guida al deployment di SAP HANA.
Se OS Login è abilitato nei metadati di progetto, devi disattivarlo temporaneamente fino al completamento del deployment. Ai fini del deployment, questa procedura configura le chiavi SSH nei metadati dell'istanza. Quando l'accesso al sistema operativo è abilitato, le configurazioni delle chiavi SSH basate su metadati vengono disabilitate e questo deployment non riesce. Al termine del deployment, puoi abilitare di nuovo OS Login.
Per ulteriori informazioni, consulta:
Se utilizzi DNS interno VPC, il valore della variabile
vmDnsSetting
nei metadati di progetto deve essereGlobalOnly
oZonalPreferred
per abilitare la risoluzione dei nomi dei nodi tra le zone. L'impostazione predefinita divmDnsSetting
èZonalOnly
. Per ulteriori informazioni, consulta:Hai una soluzione NFS, come la soluzione Filestore gestita, per condividere i volumi SAP HANA
/hana/shared
e/hanabackup
tra gli host nel sistema SAP HANA con scale out. Per eseguire il deployment dei server NFS Filestore, consulta Creazione di istanze.- Tieni presente che i siti principali e secondari devono avere accesso ai propri percorsi NFS dedicati per evitare di sovrascrivere i dati. Per utilizzare una singola istanza Filestore, devi configurare il deployment in modo che utilizzi sottodirectory distinte come percorso di montaggio.
Creare una rete
Per motivi di sicurezza, crea una nuova rete. Puoi controllare chi ha accesso aggiungendo regole firewall o utilizzando un altro metodo di controllo dell'accesso.
Se il progetto ha una rete VPC predefinita, non utilizzarla. Crea invece la tua rete VPC in modo che le uniche regole firewall in vigore siano quelle create in modo esplicito.
Durante il deployment, le istanze VM in genere richiedono l'accesso a internet per scaricare l'agente di Google Cloud per SAP. Se utilizzi una delle immagini Linux certificate SAP disponibili su Google Cloud, l'istanza VM richiede anche l'accesso a internet per registrare la licenza e accedere ai repository dei fornitori di sistemi operativi. Questo accesso è supportato da una configurazione con un gateway NAT e tag di rete VM, anche se le VM di destinazione non hanno IP esterni.
Per configurare il networking:
Console
- Nella console Google Cloud, vai alla pagina Reti VPC.
- Fai clic su Crea rete VPC.
- 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.
- In Modalità di creazione subnet, scegli Personalizzata.
- Nella sezione Nuova subnet, specifica i seguenti parametri di configurazione per una
subnet:
- Inserisci un nome per la subnet.
- In Regione, seleziona la regione di Compute Engine in cui vuoi creare la subnet.
- Per Tipo di stack IP, seleziona IPv4 (stack singolo) e inserisci un intervallo di indirizzi IP nel formato CIDR, ad esempio
10.1.0.0/24
.Questo è l'intervallo IPv4 principale per la subnet. Se prevedi di aggiungere più di una subnet, assegna intervalli IP CIDR non sovrapposti per ogni subnet nella rete. Tieni presente che ogni subnet e i relativi intervalli IP interni sono mappati a una singola regione.
- Fai clic su Fine.
- Per aggiungere altre subnet, fai clic su Aggiungi subnet e ripeti i passaggi precedenti. Puoi aggiungere altre subnet alla rete dopo aver creato la rete.
- Fai clic su Crea.
gcloud
- Vai a Cloud Shell.
- Per creare una nuova rete in modalità subnet personalizzate, esegui:
gcloud compute networks create NETWORK_NAME --subnet-mode custom
Sostituisci
NETWORK_NAME
con il nome della nuova rete. Il nome deve rispettare la convenzione di denominazione. Le reti VPC utilizzano la convenzione di denominazione di Compute Engine.Specifica
--subnet-mode custom
per evitare di utilizzare la modalità automatica predefinita, che crea automaticamente una subnet in ogni regione di Compute Engine. Per maggiori informazioni, vedi Modalità di creazione subnet. - 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 subnetNETWORK_NAME
: il nome della rete che hai creato nel passaggio precedenteREGION
: la regione in cui vuoi la subnetRANGE
: l'intervallo di indirizzi IP, specificato in formato CIDR, ad esempio10.1.0.0/24
Se prevedi di aggiungere più di una subnet, assegna intervalli IP CIDR non sovrapposti per ogni subnet nella rete. Tieni presente che ogni subnet e i relativi intervalli IP interni sono mappati a una singola regione.
- Se vuoi, ripeti il passaggio precedente e aggiungi altre subnet.
Configurazione di un gateway NAT
Se devi creare una o più VM senza indirizzi IP pubblici, devi utilizzare Network Address Translation (NAT) per consentire alle VM di accedere a internet. Utilizza Cloud NAT, un servizio gestito distribuito e software-defined di Google Cloud, che consente alle VM di inviare pacchetti in uscita a internet e ricevere tutti i pacchetti di risposta in entrata stabiliti corrispondenti. In alternativa, puoi configurare una VM separata come gateway NAT.
Per creare un'istanza Cloud NAT per il tuo progetto, consulta Utilizzo di Cloud NAT.
Dopo aver configurato Cloud NAT per il tuo progetto, le istanze VM possono accedere in modo sicuro a internet senza un indirizzo IP pubblico.
aggiungi regole firewall
Per impostazione predefinita, una regola firewall implicita blocca le connessioni in entrata dall'esterno della rete Virtual Private Cloud (VPC). Per consentire le connessioni in entrata, configura una regola firewall per la VM. Dopo aver stabilito una connessione in entrata con una VM, il traffico viene consentito in entrambe le direzioni su questa connessione.
Puoi anche creare una regola firewall per consentire l'accesso esterno a porte specifiche o per limitare l'accesso tra le VM sulla stessa rete. Se viene utilizzato il tipo di rete VPC default
, vengono applicate anche alcune regole predefinite aggiuntive, ad esempio la regola default-allow-internal
, che consente la connettività tra VM sulla stessa rete su tutte le porte.
A seconda del criterio IT applicabile al tuo ambiente, potresti dover isolare o limitare la connettività all'host del database creando regole firewall.
A seconda del tuo scenario, puoi creare regole firewall per consentire l'accesso a:
- Le porte SAP predefinite elencate in TCP/IP di tutti i prodotti SAP.
- Connessioni dal computer o dall'ambiente di rete aziendale alla tua istanza VM di Compute Engine. Se hai dubbi in merito all'indirizzo IP da utilizzare, rivolgiti all'amministratore di rete della tua azienda.
Per creare una regola firewall:
Console
Nella console Google Cloud, vai alla pagina Firewall di Compute Engine.
Nella parte superiore della pagina, fai clic su Crea regola firewall.
- Nel campo Rete, seleziona la rete in cui si trova la VM.
- Nel campo Destinazioni, specifica le risorse su Google Cloud a cui si applica questa regola. Ad esempio, specifica Tutte le istanze nella rete. In alternativa, per limitare la regola a istanze specifiche su Google Cloud, inserisci i tag in Tag di destinazione specificati.
- Nel campo Filtro di origine, seleziona una delle seguenti opzioni:
- Intervalli IP per consentire il traffico in entrata da indirizzi IP specifici. Specifica l'intervallo di indirizzi IP nel campo Intervalli IP di origine.
- Subnet per consentire il traffico in entrata da una determinata subnet. Specifica il nome della subnet nel seguente campo Subnet. Puoi utilizzare questa opzione per consentire l'accesso tra le VM in una configurazione a 3 livelli o con scale out.
- Nella sezione Protocolli e porte, seleziona Protocolli e porte specificati e inserisci
tcp:PORT_NUMBER
.
Fai clic su Crea per creare la regola firewall.
gcloud
Crea una regola firewall utilizzando questo comando:
$
gcloud compute firewall-rules create firewall-name
--direction=INGRESS --priority=1000 \
--network=network-name --action=ALLOW --rules=protocol:port \
--source-ranges ip-range --target-tags=network-tags
Deployment delle VM e di SAP HANA
Per eseguire il deployment di un sistema ad alta disponibilità SAP HANA a più nodi configurato per la ridondanza completa della zona, utilizza il modello Cloud Deployment Manager per SAP HANA come base per la configurazione, oltre a un modello aggiuntivo per il deployment di un'istanza della maggior parte dei produttori.
Il deployment prevede quanto segue:
- Due sistemi SAP HANA corrispondenti, ciascuno con due o più nodi worker.
- Un'istanza maker a maggioranza singola, nota anche come nodo tie-breaker, garantisce il quorum del cluster in caso di perdita di una zona.
Puoi aggiungere la definizione di tutti i sistemi allo stesso file YAML in modo che Deployment Manager esegua il deployment di tutte le risorse in un unico deployment. Una volta eseguito il deployment dei sistemi SAP HANA e dell'istanza di Majority Maker, puoi definire e configurare il cluster ad alta disponibilità.
Le seguenti istruzioni utilizzano Cloud Shell, ma sono generalmente applicabili a Google Cloud CLI.
Verifica che le quote attuali per risorse come dischi permanenti e CPU siano sufficienti per i sistemi SAP HANA che stai per installare. Se le quote sono insufficienti, il deployment non va a buon fine. Per i requisiti delle quote di SAP HANA, consulta Considerazioni su prezzi e quote per SAP HANA.
Apri Cloud Shell o, se hai installato gcloud CLI sulla workstation locale, apri un terminale.
Scarica il modello di file di configurazione
template.yaml
per il cluster ad alta disponibilità SAP HANA nella tua directory di lavoro inserendo il comando seguente in Cloud Shell o in gcloud CLI:wget https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_hana/template.yaml
Facoltativamente, rinomina il file
template.yaml
per identificare la configurazione che definisce.Apri il file
template.yaml
nell'editor di codice di Cloud Shell o, se utilizzi gcloud CLI, l'editor di testo che preferisci.Per aprire l'editor di codice di Cloud Shell, fai clic sull'icona a forma di matita nell'angolo in alto a destra della finestra del terminale Cloud Shell.
Nel file
template.yaml
, completa la definizione del sistema SAP HANA principale. Specifica i valori delle proprietà sostituendo le parentesi e i relativi contenuti con i valori per l'installazione. Le proprietà sono descritte nella seguente tabella.Per creare le istanze VM senza installare SAP HANA, elimina o commenta tutte le righe che iniziano con
sap_hana_
.Proprietà Tipo di dati Descrizione Tipo String Specifica la località, il tipo e la versione del modello di Deployment Manager da utilizzare durante il deployment.
Il file YAML include due specifiche
type
, una delle quali è commentata. La specificatype
attiva per impostazione predefinita specifica la versione del modello comelatest
. La specificatype
che viene commentata specifica una versione specifica del modello con un timestamp.Se vuoi che tutti i tuoi deployment utilizzino la stessa versione del modello, usa la specifica
type
che include il timestamp.instanceName
String Il nome dell'istanza VM attualmente in fase di definizione. Specifica nomi diversi nelle definizioni della VM primaria e secondaria. I nomi devono essere specificati in lettere minuscole, numeri o trattini. instanceType
String Il tipo di macchina virtuale Compute Engine su cui hai bisogno di eseguire SAP HANA. Se hai bisogno di un tipo di VM personalizzata, specifica un tipo di VM predefinito con un numero di vCPU più vicino a quello necessario, ma comunque di dimensioni maggiori. Al termine del deployment, modifica il numero di vCPU e la quantità di memoria Il valore minimo consigliato di instanceType
per la maggior parte dell'istanza maker èn1-standard-2
o l'equivalente di almeno 2 core CPU e 2 GB di memoria.zone
String La zona Google Cloud in cui eseguire il deployment dell'istanza VM che stai definendo. Specifica zone diverse nella stessa regione per le definizioni delle istanze HANA primarie, HANA secondarie e di maggior parte dei maker . Le zone devono trovarsi nella stessa regione selezionata per la subnet. subnetwork
String Il nome della subnet che hai creato in un passaggio precedente. Se esegui il deployment in un VPC condiviso, specifica questo valore come [SHAREDVPC_PROJECT]/[SUBNETWORK]
. Ad esempio,myproject/network1
.linuxImage
String Il nome dell'immagine o della famiglia di immagini del sistema operativo Linux che utilizzi con SAP HANA. Per specificare una famiglia di immagini, aggiungi il prefisso family/
al cognome. Ad esempio,family/sles-15-sp1-sap
. Per specificare un'immagine specifica, indica solo il nome dell'immagine. Per l'elenco delle immagini e delle famiglie disponibili, consulta la pagina Immagini nella console Google Cloud.linuxImageProject
String Il progetto Google Cloud che contiene l'immagine che utilizzerai. Questo progetto potrebbe essere il tuo o un progetto immagine Google Cloud, ad esempio suse-sap-cloud
. Per saperne di più sui progetti immagine di Google Cloud, consulta la pagina Immagini nella documentazione di Compute Engine.sap_hana_deployment_bucket
String Il nome del bucket Google Cloud Storage nel progetto che contiene i file di installazione e revisione di SAP HANA che hai caricato in un passaggio precedente. Tutti i file di revisione dell'upgrade nel bucket vengono applicati a SAP HANA durante il processo di deployment. sap_hana_sid
String L'ID di sistema (SID) SAP HANA. L'ID deve essere composto da tre caratteri alfanumerici e deve iniziare con una lettera. Tutte le lettere devono essere in maiuscolo. sap_hana_instance_number
Integer Il numero di istanza, da 0 a 99, del sistema SAP HANA. Il valore predefinito è 0. sap_hana_sidadm_password
String La password dell'amministratore del sistema operativo. Le password devono contenere almeno otto caratteri e includere almeno una lettera maiuscola, una lettera minuscola e un numero. sap_hana_system_password
String La password per il super user del database. Le password devono contenere almeno 8 caratteri e includere almeno una lettera maiuscola, una lettera minuscola e un numero. sap_hana_sidadm_uid
Integer Il valore predefinito per l'ID utente SID_LCadm
è900
per evitare che i gruppi creati dall'utente siano in conflitto con SAP HANA. Se necessario, puoi modificare il valore.sap_hana_sapsys_gid
Integer L'ID gruppo predefinito per sapsys è 79
. Se specifichi un valore sopra, puoi sostituirlo in base ai tuoi requisiti.sap_hana_scaleout_nodes
Integer Specifica 1
o un valore superiore.sap_hana_shared_nfs
String Il punto di montaggio NFS per il volume /hana/shared
. Ad esempio,10.151.91.122:/hana_shared_nfs
.sap_hana_backup_nfs
String Il punto di montaggio NFS per il volume /hanabackup
. Ad esempio,10.216.41.122:/hana_backup_nfs
.networkTag
String Un tag di rete che rappresenta la tua istanza VM ai fini del firewall o del routing. Se specifichi publicIP: No
senza specificare un tag di rete, assicurati di fornire un altro mezzo di accesso a internet.nic_type
String Facoltativo ma consigliato se disponibile per la macchina e la versione del sistema operativo di destinazione. Specifica l'interfaccia di rete da utilizzare con l'istanza VM. Puoi specificare il valore GVNIC
oVIRTIO_NET
. Per utilizzare un NIC virtuale di Google (gVNIC), devi specificare un'immagine del sistema operativo che supporti gVNIC come valore per la proprietàlinuxImage
. Per l'elenco delle immagini del sistema operativo, vedi Dettagli sul sistema operativo.Se non specifichi un valore per questa proprietà, l'interfaccia di rete viene selezionata automaticamente in base al tipo di macchina specificato per la proprietà
Questo argomento è disponibile nelle versioni del modello di Deployment ManagerinstanceType
.202302060649
o successive.publicIP
Booleano Facoltativo. Determina se un indirizzo IP pubblico viene aggiunto alla tua istanza VM. Il valore predefinito è Yes
.serviceAccount
String Facoltativo. Specifica un account di servizio che deve essere utilizzato dalle VM host e dai programmi in esecuzione sulle VM host. Specifica l'indirizzo email dell'account di servizio. Ad esempio, svc-acct-name@project-id.iam.gserviceaccount.com. Per impostazione predefinita, viene utilizzato l'account di servizio predefinito di Compute Engine. Per maggiori informazioni, consulta Identity and Access Management for SAP programmi on Google Cloud. Crea la definizione del sistema SAP HANA secondario copiando la definizione del sistema SAP HANA principale e incollandola dopo la definizione del sistema SAP HANA principale. Segui l'esempio seguendo questi passaggi.
Nella definizione del sistema SAP HANA secondario, specifica valori diversi per le proprietà seguenti rispetto a quelli specificati nella definizione del sistema SAP HANA principale:
name
instanceName
zone
Scarica il file di configurazione dell'istanza della maggior parte dei produttori (
sap_majoritymaker.yaml
):wget https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_majoritymaker/template.yaml -O sap_majoritymaker.yaml
Copia e incolla la specifica YAML dal file
sap_majoritymaker.yaml
, a partire dalla riga 6 e più avanti, in fondo al file SAP HANAtemplate.yaml
.Completa la definizione per l'istanza della maggior parte dei maker:
- Specifica un valore
zone
diverso dai due sistemi SAP HANA. - Il valore minimo consigliato per
instanceType
èn1-standard-2
o l'equivalente di almeno 2 core CPU e 2 GB di memoria.
Ora dovresti avere tre risorse elencate nel file YAML, due cluster SAP HANA e un'istanza maker di maggioranza, insieme alle relative proprietà configurabili.
- Specifica un valore
Crea le istanze:
gcloud deployment-manager deployments create DEPLOYMENT_NAME --config TEMPLATE_NAME.yaml
Il comando precedente richiama Deployment Manager, che esegue il deployment delle VM, scarica il software SAP HANA dal bucket di archiviazione e installa SAP HANA, il tutto in base alle specifiche contenute nel file
template.yaml
.L'elaborazione del deployment prevede due fasi. Nella prima fase, Deployment Manager scrive il proprio stato nella console. Nella seconda fase, gli script di deployment scrivono il proprio stato in Cloud Logging.
Esempio di un file di configurazione template.yaml
completo
L'esempio seguente mostra un file di configurazione template.yaml
completato che esegue il deployment di due cluster a scalabilità orizzontale con un sistema SAP HANA installato e di una singola istanza VM che funge da maggior produttore.
Il file contiene le definizioni di due risorse di cui eseguire il deployment:
sap_hana_primary
e sap_hana_secondary
. Ogni definizione di risorsa contiene le definizioni di una VM e un'istanza SAP HANA.
La definizione della risorsa sap_hana_secondary
è stata creata copiando e incollando
la prima definizione, poi modificando i valori delle proprietà name
,
instanceName
e zone
. Tutti gli altri valori delle proprietà
nelle due definizioni della risorsa sono uguali.
Le proprietà networkTag
, serviceAccount
, sap_hana_sidadm_uid
e
sap_hana_sapsys_gid
provengono dalla sezione Opzioni avanzate del
modello di file di configurazione. Le proprietà sap_hana_sidadm_uid
e
sap_hana_sapsys_gid
vengono incluse per mostrare i relativi valori predefiniti, utilizzati
perché le proprietà sono commentate.
resources: - name: sap_hana_primary type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_hana/sap_hana.py # # By default, this configuration file uses the latest release of the deployment # scripts for SAP on Google Cloud. To fix your deployments to a specific release # of the scripts, comment out the type property above and uncomment the type property below. # # type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/yyyymmddhhmm/dm-templates/sap_hana/sap_hana.py # properties: instanceName: hana-ha-vm-1 instanceType: n2-highmem-32 zone: us-central1-a subnetwork: example-subnet-us-central1 linuxImage: family/sles-15-sp1-sap linuxImageProject: suse-sap-cloud sap_hana_deployment_bucket: hana2-sp4-rev46 sap_hana_sid: HA1 sap_hana_instance_number: 22 sap_hana_sidadm_password: Tempa55word sap_hana_system_password: Tempa55word sap_hana_scaleout_nodes: 2 sap_hana_shared_nfs: 10.151.91.123:/hana_shared_nfs sap_hana_backup_nfs: 10.216.41.123:/hana_backup_nfs networkTag: cluster-ntwk-tag serviceAccount: limited-roles@example-project-123456.iam.gserviceaccount.com # sap_hana_sidadm_uid: 900 # sap_hana_sapsys_gid: 79 - name: sap_hana_secondary type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_hana/sap_hana.py # # By default, this configuration file uses the latest release of the deployment # scripts for SAP on Google Cloud. To fix your deployments to a specific release # of the scripts, comment out the type property above and uncomment the type property below. # # type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/yyyymmddhhmm/dm-templates/sap_hana/sap_hana.py # properties: instanceName: hana-ha-vm-2 instanceType: n2-highmem-32 zone: us-central1-c subnetwork: example-subnet-us-central1 linuxImage: family/sles-15-sp1-sap linuxImageProject: suse-sap-cloud sap_hana_deployment_bucket: hana2-sp4-rev46 sap_hana_sid: HA1 sap_hana_instance_number: 22 sap_hana_sidadm_password: Google123 sap_hana_system_password: Google123 sap_hana_scaleout_nodes: 2 sap_hana_shared_nfs: 10.141.91.124:/hana_shared_nfs sap_hana_backup_nfs: 10.106.41.124:/hana_backup_nfs networkTag: cluster-ntwk-tag serviceAccount: limited-roles@example-project-123456.iam.gserviceaccount.com # sap_hana_sidadm_uid: 900 # sap_hana_sapsys_gid: 79 - name: sap_majoritymaker type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_majoritymaker/sap_majoritymaker.py # # By default, this configuration file uses the latest release of the deployment # scripts for SAP on Google Cloud. To fix your deployments to a specific release # of the scripts, comment out the type property above and uncomment the type property below. # # type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/202208181245/dm-templates/sap_majoritymaker/sap_majoritymaker.py properties: instanceName: sap-majoritymaker instanceType: n1-standard-2 zone: us-central1-b subnetwork: example-subnet-us-central1 linuxImage: family/sles-15-sp1-sap linuxImageProject: suse-sap-cloud publicIP: No
Crea regole firewall che consentano l'accesso alle VM host
Se non lo hai già fatto, crea regole firewall che consentano l'accesso a ogni VM host dalle seguenti origini:
- Ai fini della configurazione, la tua workstation locale, un bastion host o un jump server
- Per l'accesso tra i nodi del cluster, le altre VM host nel cluster ad alta disponibilità
Quando crei regole firewall VPC, specifichi i tag di rete definiti nel file di configurazione template.yaml
per designare le VM host come target della regola.
Per verificare il deployment, definisci una regola per consentire le connessioni SSH sulla porta 22 da un bastion host o dalla tua workstation locale.
Per l'accesso tra i nodi del cluster, aggiungi una regola firewall che consenta tutti i tipi di connessioni su qualsiasi porta da altre VM nella stessa subnet.
Assicurati che le regole firewall per la verifica del deployment e per la comunicazione intra-cluster vengano create prima di passare alla sezione successiva. Per le istruzioni, consulta Aggiungere regole firewall.
Verifica del deployment delle VM e di SAP HANA
Per verificare il deployment, controlla i log di deployment in Cloud Logging e controlla i dischi e i servizi sulle VM degli host principali e secondari.
Nella console Google Cloud, apri Cloud Logging per monitorare l'avanzamento dell'installazione e verificare la presenza di errori.
Filtra i log:
Esplora log
Nella pagina Esplora log, vai al riquadro Query.
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"
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.
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:
Nella pagina Quote di IAM e amministrazione, aumenta le quote che non soddisfano i requisiti SAP HANA elencati nella guida alla pianificazione di SAP HANA.
Nella pagina Deployment di Deployment Manager, elimina il deployment per ripulire le VM e i dischi permanenti dall'installazione non riuscita.
Esegui di nuovo il deployment.
- Se viene visualizzato
Controllare lo stato di implementazione della maggior parte dei produttori
Puoi controllare lo stato di deployment della maggior parte dei produttori utilizzando il seguente comando.
gcloud compute instances describe MAJORITY_MAKER_HOSTNAME --zone MAJORITY_MAKER_ZONE --format="table[box,title='Deployment Status'](name:label=Instance_Name,metadata.items.status:label=Status)"
Se viene visualizzato lo stato Complete
, l'elaborazione del deployment
risulta riuscita per l'istanza della maggior parte dei produttori.
Per un deployment in corso, viene visualizzato lo stato <blank>
.
Controlla la configurazione delle VM e di SAP HANA
Una volta eseguito il deployment del sistema SAP HANA senza errori, connettiti a ogni VM utilizzando SSH. Nella pagina Istanze VM di Compute Engine, puoi fare clic sul pulsante SSH per ogni istanza VM oppure utilizzare il metodo SSH che preferisci.
Passa all'utente root.
$
sudo su -Al prompt dei comandi, inserisci
df -h
. Su ogni VM, assicurati che siano visualizzate le directory/hana
, ad esempio/hana/data
.Filesystem Size Used Avail Use% Mounted on /dev/sda2 30G 4.0G 26G 14% / devtmpfs 126G 0 126G 0% /dev tmpfs 126G 0 126G 0% /dev/shm tmpfs 126G 17M 126G 1% /run tmpfs 126G 0 126G 0% /sys/fs/cgroup /dev/sda1 200M 9.7M 191M 5% /boot/efi /dev/mapper/vg_hana-shared 251G 49G 203G 20% /hana/shared /dev/mapper/vg_hana-sap 32G 240M 32G 1% /usr/sap /dev/mapper/vg_hana-data 426G 7.0G 419G 2% /hana/data /dev/mapper/vg_hana-log 125G 4.2G 121G 4% /hana/log /dev/mapper/vg_hanabackup-backup 512G 33M 512G 1% /hanabackup tmpfs 26G 0 26G 0% /run/user/900 tmpfs 26G 0 26G 0% /run/user/899 tmpfs 26G 0 26G 0% /run/user/1000
Passa all'utente amministratore SAP sostituendo
SID_LC
nel seguente comando con l'ID di sistema che hai specificato nel modello di file di configurazione. Utilizza il minuscolo per tutte le lettere.#
su - SID_LCadmAssicurati che i servizi SAP HANA, come
hdbnameserver
,hdbindexserver
e altri, siano in esecuzione sull'istanza inserendo il comando seguente:>
HDB infoSe utilizzi RHEL per SAP 9.0 o versioni successive, assicurati che i pacchetti
chkconfig
ecompat-openssl11
siano installati sulla tua istanza VM.Per maggiori informazioni su SAP, consulta SAP Note 3108316 - Red Hat Enterprise Linux 9.x: installazione e configurazione .
Convalida l'installazione dell'agente di Google Cloud per SAP
Dopo aver eseguito il deployment di una VM e installato il sistema SAP, verifica che l'agente Google Cloud per SAP funzioni correttamente.
Verifica che l'agente Google Cloud per SAP sia in esecuzione
Per verificare che l'agente sia in esecuzione, segui questi passaggi:
Stabilisci una connessione SSH con la tua istanza VM host.
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:
- Nel sistema SAP, inserisci la transazione
ST06
. 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
- Provider cloud:
Configura il monitoraggio per SAP HANA
Facoltativamente, puoi monitorare le tue istanze SAP HANA utilizzando l'agente di Google Cloud per SAP. Dalla versione 2.0, puoi configurare l'agente per raccogliere le metriche di monitoraggio SAP HANA e inviarle a Cloud Monitoring. Cloud Monitoring consente di creare dashboard per visualizzare queste metriche, configurare avvisi basati su soglie delle metriche e altro ancora.
Per ulteriori informazioni sulla raccolta delle metriche di monitoraggio SAP HANA tramite l'agente di Google Cloud per SAP, consulta Raccolta delle metriche di monitoraggio SAP HANA.
(Facoltativo) Crea un elenco di istanze per l'automazione degli script
Per automatizzare parzialmente alcune delle attività ripetitive durante la configurazione del sistema SAP HANA e del cluster Pacemaker, puoi utilizzare gli script bash. In questa guida, questi script bash vengono utilizzati per velocizzare la configurazione del sistema SAP HANA e del cluster Pacemaker. Questi script richiedono come input un elenco di tutte le istanze VM di cui è stato eseguito il deployment e delle zone corrispondenti.
Per abilitare questa automazione, crea un file denominato nodes.txt
e includi i dettagli di tutte le istanze VM di cui è stato eseguito il deployment nel seguente formato: nome della zona, spazio vuoto e nome dell'istanza VM. Il seguente file di esempio viene utilizzato in questa guida:
# cat nodes.txt us-west1-a hana-ha-vm-1 us-west1-a hana-ha-vm-1w1 us-west1-a hana-ha-vm-1w2 us-west1-b hana-majoritymaker us-west1-c hana-ha-vm-2 us-west1-c hana-ha-vm-2w1 us-west1-c hana-ha-vm-2w2
Configura l'accesso SSH senza password
Per configurare il cluster Pacemaker e sincronizzare le chiavi di archivio sicuro (SSFS) SAP HANA, è richiesto l'accesso SSH senza password tra tutti i nodi, inclusa l'istanza di Majority maker. Per l'accesso SSH senza password, devi aggiungere le chiavi pubbliche SSH ai metadati dell'istanza di tutte le istanze di cui è stato eseguito il deployment.
Il formato dei metadati è USERNAME: PUBLIC-KEY-VALUE
.
Per saperne di più sull'aggiunta di chiavi SSH alle VM, consulta Aggiungere chiavi SSH alle VM che utilizzano chiavi SSH basate su metadati.
Passaggi manuali
Raccogli la chiave pubblica per l'utente
root
per ogni istanza nei sistemi primari e secondari, nonché per l'istanza della maggior parte del creatore.gcloud compute ssh --quiet --zone ZONE_ID INSTANCE_NAME -- sudo cat /root/.ssh/id_rsa.pub
Anteponi alla chiave la stringa
root:
e scrivi la chiave come nuova riga nel file denominatopublic-ssh-keys.txt
, ad esempio:root:ssh-rsa AAAAB3NzaC1JfuYnOI1vutCs= root@INSTANCE_NAME
Dopo aver raccolto tutte le chiavi pubbliche SSH, carica le chiavi come metadati in tutte le istanze:
gcloud compute instances add-metadata --metadata-from-file ssh-keys=public-ssh-keys.txt --zone ZONE_ID INSTANCE_NAME
Passaggi automatici
In alternativa, per automatizzare il processo di configurazione dell'accesso SSH senza password per tutte le istanze elencate in nodes.txt
, esegui i seguenti passaggi dalla console Google Cloud:
Crea un elenco di chiavi pubbliche da tutte le istanze di cui è stato eseguito il deployment:
while read -u10 ZONE HOST ; do echo "Collecting public-key from $HOST"; { echo 'root:'; gcloud compute ssh --quiet --zone $ZONE $HOST --tunnel-through-iap -- sudo cat /root/.ssh/id_rsa.pub; } | tr -ds '\n' " " >> public-ssh-keys.txt; done 10< nodes.txt
Assegna le chiavi pubbliche SSH come voci di metadati a tutte le istanze:
while read -u10 ZONE HOST ; do echo "Adding public keys to $HOST"; gcloud compute instances add-metadata --metadata-from-file ssh-keys=public-ssh-keys.txt --zone $ZONE $HOST; done 10< nodes.txt
Disabilita l'avvio automatico di SAP HANA
Passaggi manuali
Per ogni istanza SAP HANA nel cluster, assicurati che l'avvio automatico di SAP HANA sia disabilitato. Per i failover, Pacemaker gestisce l'avvio e l'arresto delle istanze SAP HANA in un cluster.
Su ogni host come SID_LCadm, arresta SAP HANA:
>
HDB stopSu ogni host, apri il profilo SAP HANA utilizzando un editor, ad esempio vi:
vi /usr/sap/SID/SYS/profile/SID_HDBINST_NUM_HOST_NAME
Imposta la proprietà
Autostart
su0
:Autostart=0
Salva il profilo.
Su ogni host come SID_LCadm, avvia SAP HANA:
>
HDB start
Passaggi automatici
In alternativa, per disabilitare l'avvio automatico di SAP HANA per tutte le istanze elencate in nodes.txt
, esegui lo script seguente dalla console Google Cloud:
while read -u10 ZONE HOST ; do gcloud compute ssh --verbosity=none --zone $ZONE $HOST -- "echo Setting Autostart=0 on \$HOSTNAME; sudo sed -i 's/Autostart=1/Autostart=0/g' /usr/sap/SID/SYS/profile/SID_HDBINST_NUM_\$HOSTNAME"; done 10< nodes.txt
Abilita riavvio rapido SAP HANA
Google Cloud consiglia vivamente di abilitare il riavvio rapido di SAP HANA per ogni istanza di SAP HANA, in particolare per le istanze più grandi. Il riavvio rapido di SAP HANA riduce i tempi di riavvio nel caso in cui SAP HANA termina, ma il sistema operativo rimane in esecuzione.
Come configurato dagli script di automazione forniti da Google Cloud, le impostazioni del sistema operativo e del kernel supportano già SAP HANA Fast Riavvia.
Devi definire il file system tmpfs
e configurare SAP HANA.
Per definire il file system tmpfs
e configurare SAP HANA, puoi seguire
la procedura manuale o utilizzare lo script di automazione fornito
da Google Cloud per abilitare SAP HANA Fast Riavvia. Per ulteriori informazioni, consulta:
- Passaggi manuali: abilita il riavvio rapido di SAP HANA
- Passaggi automatici: abilita il riavvio rapido di SAP HANA
Per le istruzioni autorevoli complete per il riavvio rapido di SAP HANA, consulta la documentazione relativa all'opzione di riavvio rapido di SAP HANA.
Passaggi manuali
Configura il file system tmpfs
Una volta eseguito il deployment delle VM host e dei sistemi SAP HANA di base, devi creare e montare le directory per i nodi NUMA nel file system tmpfs
.
Visualizza la topologia NUMA della VM
Prima di poter mappare il file system tmpfs
richiesto, devi sapere quanti nodi NUMA include la tua VM. Per visualizzare i nodi NUMA disponibili su una VM di Compute Engine, inserisci il seguente comando:
lscpu | grep NUMA
Ad esempio, un tipo di VM m2-ultramem-208
ha quattro nodi NUMA,
numerati da 0 a 3, come mostrato nell'esempio seguente:
NUMA node(s): 4 NUMA node0 CPU(s): 0-25,104-129 NUMA node1 CPU(s): 26-51,130-155 NUMA node2 CPU(s): 52-77,156-181 NUMA node3 CPU(s): 78-103,182-207
Crea le directory dei nodi NUMA
Crea una directory per ogni nodo NUMA nella tua VM e imposta le autorizzazioni.
Ad esempio, per quattro nodi NUMA numerati da 0 a 3:
mkdir -pv /hana/tmpfs{0..3}/SID chown -R SID_LCadm:sapsys /hana/tmpfs*/SID chmod 777 -R /hana/tmpfs*/SID
Monta le directory del nodo NUMA in tmpfs
Monta le directory del file system tmpfs
e specifica
una preferenza di nodo NUMA per ognuna con mpol=prefer
:
SID specifica il SID con lettere maiuscole.
mount tmpfsSID0 -t tmpfs -o mpol=prefer:0 /hana/tmpfs0/SID mount tmpfsSID1 -t tmpfs -o mpol=prefer:1 /hana/tmpfs1/SID mount tmpfsSID2 -t tmpfs -o mpol=prefer:2 /hana/tmpfs2/SID mount tmpfsSID3 -t tmpfs -o mpol=prefer:3 /hana/tmpfs3/SID
Aggiorna /etc/fstab
Per assicurarti che i punti di montaggio siano disponibili dopo il riavvio di un sistema operativo, aggiungi voci alla tabella del file system /etc/fstab
:
tmpfsSID0 /hana/tmpfs0/SID tmpfs rw,relatime,mpol=prefer:0 tmpfsSID1 /hana/tmpfs1/SID tmpfs rw,relatime,mpol=prefer:1 tmpfsSID1 /hana/tmpfs2/SID tmpfs rw,relatime,mpol=prefer:2 tmpfsSID1 /hana/tmpfs3/SID tmpfs rw,relatime,mpol=prefer:3
(Facoltativo) Imposta i limiti per l'utilizzo della memoria
Il file system tmpfs
può crescere e ridursi in modo dinamico.
Per limitare la memoria utilizzata dal file system tmpfs
, puoi
impostare un limite di dimensione per un volume di nodi NUMA con l'opzione size
.
Ad esempio:
mount tmpfsSID0 -t tmpfs -o mpol=prefer:0,size=250G /hana/tmpfs0/SID
Puoi anche limitare l'utilizzo complessivo della memoria di tmpfs
per tutti i nodi NUMA per una determinata istanza SAP HANA e un determinato nodo del server impostando il parametro persistent_memory_global_allocation_limit
nella sezione [memorymanager]
del file global.ini
.
Configurazione SAP HANA per riavvio rapido
Per configurare SAP HANA per il riavvio rapido, aggiorna il file global.ini
e specifica le tabelle da archiviare nella memoria permanente.
Aggiorna la sezione [persistence]
nel file global.ini
Configura la sezione [persistence]
nel file SAP HANA global.ini
per fare riferimento alle località tmpfs
. Separa ogni posizione tmpfs
con
un punto e virgola:
[persistence] basepath_datavolumes = /hana/data basepath_logvolumes = /hana/log basepath_persistent_memory_volumes = /hana/tmpfs0/SID;/hana/tmpfs1/SID;/hana/tmpfs2/SID;/hana/tmpfs3/SID
L'esempio precedente specifica quattro volumi di memoria per quattro nodi NUMA,
che corrispondono al valore m2-ultramem-208
. Se utilizzi il m2-ultramem-416
, devi configurare otto volumi di memoria (0,.7).
Riavvia SAP HANA dopo aver modificato il file global.ini
.
SAP HANA può ora utilizzare la località tmpfs
come spazio di memoria permanente.
Specifica le tabelle da archiviare in memoria permanente
Specifica tabelle o partizioni di colonne specifiche da archiviare nella memoria permanente.
Ad esempio, per attivare la memoria permanente per una tabella esistente, esegui la query SQL:
ALTER TABLE exampletable persistent memory ON immediate CASCADE
Per modificare il valore predefinito per le nuove tabelle, aggiungi il parametro table_default
nel file indexserver.ini
. Ad esempio:
[persistent_memory] table_default = ON
Per ulteriori informazioni su come controllare colonne e tabelle e sulle viste di monitoraggio che forniscono informazioni dettagliate, consulta SAP HANA Persistent Memory.
Passaggi automatici
Lo script di automazione fornito da Google Cloud per abilitare
il riavvio rapido di SAP HANA
apporta modifiche alle directory /hana/tmpfs*
, al file /etc/fstab
e alla
configurazione di SAP HANA. Quando esegui lo script, potresti dover eseguire
passaggi aggiuntivi, a seconda che si tratti del deployment iniziale del tuo
sistema SAP HANA o di dimensioni della macchina a una dimensione NUMA diversa.
Per il deployment iniziale del sistema SAP HANA o il ridimensionamento della macchina per aumentare il numero di nodi NUMA, assicurati che SAP HANA sia in esecuzione durante l'esecuzione dello script di automazione fornito da Google Cloud per abilitare SAP HANA Fast Riavvia.
Quando ridimensiona la macchina per ridurre il numero di nodi NUMA, assicurati che SAP HANA venga arrestato durante l'esecuzione dello script di automazione fornito da Google Cloud per abilitare SAP HANA Fast Riavvia. Dopo l'esecuzione dello script, devi aggiornare manualmente la configurazione SAP HANA per completare la configurazione di SAP HANA Fast Riavvia. Per maggiori informazioni, consulta la pagina sulla configurazione di SAP HANA per il riavvio rapido.
Per abilitare il riavvio rapido di SAP HANA, segui questi passaggi:
Stabilisci una connessione SSH con la VM host.
Passa alla directory principale:
sudo su -
Scarica lo script
sap_lib_hdbfr.sh
:wget https://storage.googleapis.com/cloudsapdeploy/terraform/latest/terraform/lib/sap_lib_hdbfr.sh
Rendi eseguibile il file:
chmod +x sap_lib_hdbfr.sh
Verifica che lo script non presenti errori:
vi sap_lib_hdbfr.sh ./sap_lib_hdbfr.sh -help
Se il comando restituisce un errore, contatta l'assistenza clienti Google Cloud. Per saperne di più su come contattare l'assistenza clienti, vedi Ottenere assistenza per SAP su Google Cloud.
Esegui lo script dopo aver sostituito l'ID sistema (SID) e la password SAP HANA per l'utente SYSTEM del database SAP HANA. Per fornire la password in modo sicuro, ti consigliamo di utilizzare un secret in Secret Manager.
Esegui lo script utilizzando il nome di un secret in Secret Manager. Questo secret deve esistere nel progetto Google Cloud che contiene l'istanza VM host.
sudo ./sap_lib_hdbfr.sh -h 'SID' -s SECRET_NAME
Sostituisci quanto segue:
SID
: specifica il SID con lettere maiuscole. Ad esempio,AHA
.SECRET_NAME
: specifica il nome del secret corrispondente alla password per l'utente SYSTEM del database SAP HANA. Questo secret deve esistere nel progetto Google Cloud che contiene l'istanza VM host.
In alternativa, puoi eseguire lo script utilizzando una password in testo normale. Dopo aver abilitato il riavvio rapido di SAP HANA, assicurati di modificare la password. Non è consigliabile utilizzare una password di testo normale, in quanto la password verrebbe registrata nella cronologia della riga di comando della VM.
sudo ./sap_lib_hdbfr.sh -h 'SID' -p 'PASSWORD'
Sostituisci quanto segue:
SID
: specifica il SID con lettere maiuscole. Ad esempio,AHA
.PASSWORD
: specifica la password per l'utente SYSTEM del database SAP HANA.
Per un'esecuzione iniziale riuscita, dovresti vedere un output simile al seguente:
INFO - Script is running in standalone mode ls: cannot access '/hana/tmpfs*': No such file or directory INFO - Setting up HANA Fast Restart for system 'TST/00'. INFO - Number of NUMA nodes is 2 INFO - Number of directories /hana/tmpfs* is 0 INFO - HANA version 2.57 INFO - No directories /hana/tmpfs* exist. Assuming initial setup. INFO - Creating 2 directories /hana/tmpfs* and mounting them INFO - Adding /hana/tmpfs* entries to /etc/fstab. Copy is in /etc/fstab.20220625_030839 INFO - Updating the HANA configuration. INFO - Running command: select * from dummy DUMMY "X" 1 row selected (overall time 4124 usec; server time 130 usec) INFO - Running command: ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'SYSTEM') SET ('persistence', 'basepath_persistent_memory_volumes') = '/hana/tmpfs0/TST;/hana/tmpfs1/TST;' 0 rows affected (overall time 3570 usec; server time 2239 usec) INFO - Running command: ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'SYSTEM') SET ('persistent_memory', 'table_unload_action') = 'retain'; 0 rows affected (overall time 4308 usec; server time 2441 usec) INFO - Running command: ALTER SYSTEM ALTER CONFIGURATION ('indexserver.ini', 'SYSTEM') SET ('persistent_memory', 'table_default') = 'ON'; 0 rows affected (overall time 3422 usec; server time 2152 usec)
Scarica pacchetti SUSE
Disinstalla gli agenti di risorse utilizzati per i deployment di scale up e sostituiscili con quelli utilizzati per lo scale out.
Passaggi manuali
Procedi nel seguente modo su tutti gli host, inclusa l'istanza della maggior parte dei maker:
Disinstalla gli agenti delle risorse di scale up HANA:
zypper remove SAPHanaSR SAPHanaSR-doc
Installa gli agenti delle risorse con scale out HANA:
zypper in SAPHanaSR-ScaleOut SAPHanaSR-ScaleOut-doc
Installa
socat
:zypper install socat
Installa le patch del sistema operativo più recenti:
zypper patch
Passaggi automatici
In alternativa, per automatizzare questo processo per tutte le istanze elencate in nodes.txt
, esegui lo script seguente dalla console Google Cloud:
while read -u10 HOST ; do gcloud compute ssh --zone $HOST -- "sudo zypper remove -y SAPHanaSR SAPHanaSR-doc; sudo zypper in -y SAPHanaSR-ScaleOut SAPHanaSR-ScaleOut-doc socat; sudo zypper patch -y"; done 10< nodes.txt
Esegui il backup dei database
Crea backup dei tuoi database per avviare il logging dei database per la replica del sistema SAP HANA e creare un punto di ripristino.
Se hai più database tenant in una configurazione MDC, esegui il backup di ogni database tenant.
Il modello di Deployment Manager utilizza /hanabackup/data/SID come directory di backup predefinita.
Per creare backup dei nuovi database SAP HANA:
Nell'host principale, passa a
SID_LCadm
. A seconda dell'immagine sistema operativo, il comando potrebbe essere diverso.sudo -i -u SID_LCadm
Crea backup dei database:
Per un sistema SAP HANA a database singolo e container:
>
hdbsql -t -u system -p SYSTEM_PASSWORD -i INST_NUM \ "backup data using file ('full')"L'esempio seguente mostra una risposta riuscita da un nuovo sistema SAP HANA:
0 rows affected (overall time 18.416058 sec; server time 18.414209 sec)
Per un sistema di container multi-database (MDC) SAP HANA, crea un backup del database di sistema e di qualsiasi database tenant:
>
hdbsql -t -d SYSTEMDB -u system -p SYSTEM_PASSWORD -i INST_NUM \ "backup data using file ('full')">
hdbsql -t -d SID -u system -p SYSTEM_PASSWORD -i INST_NUM \ "backup data using file ('full')"
L'esempio seguente mostra una risposta riuscita da un nuovo sistema SAP HANA:
0 rows affected (overall time 16.590498 sec; server time 16.588806 sec)
Verifica che la modalità di logging sia impostata su normale:
>
hdbsql -u system -p SYSTEM_PASSWORD -i INST_NUM \ "select value from "SYS"."M_INIFILE_CONTENTS" where key='log_mode'"Dovresti vedere:
VALUE "normal"
Abilita replica del sistema SAP HANA
Nell'ambito dell'abilitazione della replica del sistema SAP HANA, devi copiare i dati e i file delle chiavi per gli archivi sicuri SAP HANA sul file system (SSFS) dall'host principale all'host secondario. Il metodo utilizzato da questa procedura per copiare i file è solo uno dei possibili metodi a tua disposizione.
Nell'host principale come
SID_LCadm
, attiva la replica di sistema:>
hdbnsutil -sr_enable --name=PRIMARY_HOST_NAMENell'host secondario:
Come
SID_LCadm
, interrompi SAP HANA:>
sapcontrol -nr INST_NUM -function StopSystemCome root, archivia i dati SSFS e i file chiave 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-ARCCopia 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.DATCopia 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.KEYAggiorna 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.KEYAggiorna 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.KEYCome SID_LCadm, registra il sistema SAP HANA secondario con la replica di sistema SAP HANA:
>
hdbnsutil -sr_register --remoteHost=PRIMARY_HOST_NAME --remoteInstance=INST_NUM \ --replicationMode=syncmem --operationMode=logreplay --name=SECONDARY_HOST_NAMECome SID_LCadm, avvia SAP HANA:
>
sapcontrol -nr INST_NUM -function StartSystem
Convalida della replica del sistema in corso...
Nell'host principale come SID_LCadm
, verifica che la replica del sistema SAP
HANA sia attiva eseguendo il seguente script Python:
$
python $DIR_INSTANCE/exe/python_support/systemReplicationStatus.py
Se la replica è configurata correttamente, tra gli altri indicatori vengono visualizzati i seguenti valori
per i servizi xsengine
, nameserver
e indexserver
:
- Il valore
Secondary Active Status
èYES
- Il valore
Replication Status
èACTIVE
Inoltre, overall system replication status
mostra ACTIVE
.
Abilita gli hook del provider HA/RE SAP HANA
SUSE consiglia di abilitare gli hook del provider SAP HANA HA/RE al fine di consentire a SAP HANA di inviare notifiche per determinati eventi e migliorare il rilevamento degli errori. Gli hook del provider HA/RE SAP HANA richiedono SAP HANA 2.0 SPS 03 o una versione successiva.
Completa i seguenti passaggi sia sul sito principale che su quello secondario:
Come
SID_LCadm
, interrompi SAP HANA:>
sapcontrol -nr 00 -function StopSystem
Come root o
SID_LCadm
, apri il fileglobal.ini
per modificarlo:>
vi /hana/shared/SID/global/hdb/custom/config/global.iniAggiungi le seguenti definizioni al file
global.ini
:[ha_dr_provider_saphanasrmultitarget] provider = SAPHanaSrMultiTarget path = /usr/share/SAPHanaSR-ScaleOut/ execution_order = 1 [ha_dr_provider_sustkover] provider = susTkOver path = /usr/share/SAPHanaSR-ScaleOut/ execution_order = 2 sustkover_timeout = 30 [ha_dr_provider_suschksrv] provider = susChkSrv path = /usr/share/SAPHanaSR-ScaleOut/ execution_order = 3 action_on_lost = stop [trace] ha_dr_saphanasrmultitarget = info ha_dr_sustkover = info
Come root, crea un file di configurazione personalizzato nella directory
/etc/sudoers.d
eseguendo questo comando. Questo nuovo file di configurazione consente all'utenteSID_LCadm
di accedere agli attributi dei nodi cluster quando viene chiamato il metodo di hooksrConnectionChanged()
.>
sudo visudo -f /etc/sudoers.d/SAPHanaSRNel file
/etc/sudoers.d/SAPHanaSR
, aggiungi il seguente testo:Sostituisci
SID_LC
con il SID in lettere minuscole.SID_LCadm ALL=(ALL) NOPASSWD: /usr/sbin/crm_attribute -n hana_SID_LC_site_srHook_* SID_LCadm ALL=(ALL) NOPASSWD: /usr/sbin/crm_attribute -n hana_SID_LC_gsh * SID_LCadm ALL=(ALL) NOPASSWD: /usr/sbin/SAPHanaSR-hookHelper --sid=SID_LC *
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 significa che la riga è un commento.
Come
SID_LCadm
, avvia SAP HANA:>
sapcontrol -nr 00 -function StartSystemDopo 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 dell'hook SAPHanaSR Python e il takeover del cluster ad alta disponibilità richiede troppo tempo in caso di errore del server di indice HANA.
Configurare il supporto per il failover di Cloud Load Balancing
Il servizio bilanciatore del carico di rete passthrough interno con supporto del failover instrada il traffico all'host attivo in un cluster SAP HANA in base a un servizio di controllo di integrità.
Prenota un indirizzo IP per l'IP virtuale
L'indirizzo IP virtuale (VIP), a volte indicato come indirizzo IP fluttuante, segue il sistema SAP HANA attivo. Il bilanciatore del carico instrada il traffico inviato al VIP alla VM che ospita attualmente il sistema SAP HANA attivo.
Apri Cloud Shell:
Prenota un indirizzo IP per l'IP virtuale. Questo è l'indirizzo IP utilizzato dalle applicazioni per accedere a SAP HANA. Se ometti il flag
--addresses
, viene scelto un indirizzo IP nella subnet specificata:$
gcloud compute addresses create VIP_NAME \ --region CLUSTER_REGION --subnet CLUSTER_SUBNET \ --addresses VIP_ADDRESSPer ulteriori informazioni sulla prenotazione di un IP statico, vedi Prenotare un indirizzo IP interno statico.
Conferma prenotazione dell'indirizzo IP:
$
gcloud compute addresses describe VIP_NAME \ --region CLUSTER_REGIONDovresti vedere un output simile all'esempio seguente:
address: 10.0.0.19 addressType: INTERNAL creationTimestamp: '2020-05-20T14:19:03.109-07:00' description: '' id: '8961491304398200872' kind: compute#address name: vip-for-hana-ha networkTier: PREMIUM purpose: GCE_ENDPOINT region: https://www.googleapis.com/compute/v1/projects/example-project-123456/regions/us-central1 selfLink: https://www.googleapis.com/compute/v1/projects/example-project-123456/regions/us-central1/addresses/vip-for-hana-ha status: RESERVED subnetwork: https://www.googleapis.com/compute/v1/projects/example-project-123456/regions/us-central1/subnetworks/example-subnet-us-central1
Crea gruppi di istanze per le VM host
In Cloud Shell, crea due gruppi di istanze non gestite e assegna la VM dell'host master principale a uno e la VM dell'host master secondaria all'altro:
$
gcloud compute instance-groups unmanaged create PRIMARY_IG_NAME \ --zone=PRIMARY_ZONE$
gcloud compute instance-groups unmanaged add-instances PRIMARY_IG_NAME \ --zone=PRIMARY_ZONE \ --instances=PRIMARY_HOST_NAME$
gcloud compute instance-groups unmanaged create SECONDARY_IG_NAME \ --zone=SECONDARY_ZONE$
gcloud compute instance-groups unmanaged add-instances SECONDARY_IG_NAME \ --zone=SECONDARY_ZONE \ --instances=SECONDARY_HOST_NAMEConferma la creazione dei gruppi di istanze:
$
gcloud compute instance-groups unmanaged listDovresti vedere un output simile all'esempio seguente:
NAME ZONE NETWORK NETWORK_PROJECT MANAGED INSTANCES hana-ha-ig-1 us-central1-a example-network example-project-123456 No 1 hana-ha-ig-2 us-central1-c example-network example-project-123456 No 1
Crea un controllo di integrità di Compute Engine
In Cloud Shell, crea il controllo di integrità. Per la porta utilizzata dal controllo di integrità, scegli una porta nell'intervallo privato, 49152-65535, per evitare conflitti con altri servizi. I valori di intervallo di controllo e timeout sono leggermente più lunghi dei valori predefiniti per aumentare la tolleranza di failover durante gli eventi di migrazione live di Compute Engine. Se necessario, puoi modificare i valori:
$
gcloud compute health-checks create tcp HEALTH_CHECK_NAME --port=HEALTHCHECK_PORT_NUM \ --proxy-header=NONE --check-interval=10 --timeout=10 --unhealthy-threshold=2 \ --healthy-threshold=2Conferma la creazione del controllo di integrità:
$
gcloud compute health-checks describe HEALTH_CHECK_NAMEDovresti vedere un output simile all'esempio seguente:
checkIntervalSec: 10 creationTimestamp: '2020-05-20T21:03:06.924-07:00' healthyThreshold: 2 id: '4963070308818371477' kind: compute#healthCheck name: hana-health-check selfLink: https://www.googleapis.com/compute/v1/projects/example-project-123456/global/healthChecks/hana-health-check tcpHealthCheck: port: 60000 portSpecification: USE_FIXED_PORT proxyHeader: NONE timeoutSec: 10 type: TCP unhealthyThreshold: 2
Crea una regola firewall per i controlli di integrità
Definisci una regola firewall per una porta nell'intervallo privato che consenta l'accesso alle VM host dagli intervalli IP utilizzati dai controlli di integrità di Compute Engine, 35.191.0.0/16
e 130.211.0.0/22
. Per maggiori informazioni, consulta Creare regole firewall per i controlli di integrità.
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_ZONESe 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_NUMAd 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
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-checksAggiungi il gruppo di istanze principali al servizio di backend:
$
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group PRIMARY_IG_NAME \ --instance-group-zone PRIMARY_ZONE \ --region CLUSTER_REGIONAggiungi 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_REGIONCreare una regola di forwarding. Per l'indirizzo IP, specifica l'indirizzo IP che hai prenotato per il VIP. Se hai bisogno di accedere al sistema SAP HANA dall'esterno della regione specificata di seguito, includi il flag
--allow-global-access
nella definizione:$
gcloud compute forwarding-rules create RULE_NAME \ --load-balancing-scheme internal \ --address VIP_ADDRESS \ --subnet CLUSTER_SUBNET \ --region CLUSTER_REGION \ --backend-service BACKEND_SERVICE_NAME \ --ports ALLPer ulteriori informazioni sull'accesso tra regioni al tuo sistema ad alta disponibilità SAP HANA, consulta Bilanciamento del carico TCP/UDP interno.
Testa la configurazione del bilanciatore del carico
Anche se i gruppi di istanza di backend non verranno registrati come integri fino a un momento successivo, puoi testare la configurazione del bilanciatore del carico impostando un listener che risponda ai controlli di integrità. Dopo aver impostato un listener, se il bilanciatore del carico è configurato correttamente, lo stato dei gruppi di istanza di backend diventa integro.
Le sezioni seguenti presentano diversi metodi che puoi utilizzare per testare la configurazione.
Test del bilanciatore del carico con l'utilità socat
Puoi utilizzare l'utilità socat
per ascoltare temporaneamente la porta del controllo di integrità. Devi comunque installare l'utilità socat
perché la userai in seguito durante la configurazione delle risorse del cluster.
Installa l'utilità
socat
sulle VM host principali e secondarie come root:#
zypper install -y socatAvvia un processo
socat
per ascoltare per 60 secondi sulla porta del controllo di integrità:#
timeout 60s socat - TCP-LISTEN:HLTH_CHK_PORT_NUM,forkIn Cloud Shell, dopo aver atteso alcuni secondi che il controllo di integrità rilevasse il listener, controlla l'integrità dei gruppi di istanza di backend:
$
gcloud compute backend-services get-health BACKEND_SERVICE_NAME \ --region CLUSTER_REGIONDovresti vedere un output simile al seguente:
--- backend: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-a/instanceGroups/hana-ha-ig-1 status: healthStatus: ‐ healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-a/instances/hana-ha-vm-1 ipAddress: 10.0.0.35 port: 80 kind: compute#backendServiceGroupHealth --- backend: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-c/instanceGroups/hana-ha-ig-2 status: healthStatus: ‐ healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-c/instances/hana-ha-vm-2 ipAddress: 10.0.0.34 port: 80 kind: compute#backendServiceGroupHealth
Test del bilanciatore del carico utilizzando la porta 22
Se la porta 22 è aperta per le connessioni SSH sulle VM host, puoi modificare temporaneamente il controllo di integrità in modo che utilizzi la porta 22, che dispone di un listener in grado di rispondere al controllo di integrità.
Per utilizzare temporaneamente la porta 22, segui questi passaggi:
Fai clic sul controllo di integrità nella console:
Fai clic su Modifica.
Nel campo Porta, imposta il numero di porta su 22.
Fai clic su Salva e attendi un minuto o due.
In Cloud Shell, controlla l'integrità dei gruppi di istanza di backend:
$
gcloud compute backend-services get-health BACKEND_SERVICE_NAME \ --region CLUSTER_REGIONDovresti 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
Al termine, reimposta il numero di porta del controllo di integrità originale.
Configura Pacemaker
La seguente procedura configura l'implementazione SUSE di un cluster Pacemaker sulle VM di Compute Engine per SAP HANA.
Per ulteriori informazioni sulla configurazione di cluster ad alta disponibilità su SLES, consulta la documentazione dell'estensione SUSE Linux Enterprise ad alta disponibilità per la tua versione di SLES.
Scarica gli script dell'agente di risorsa
Passaggi manuali
Come root su tutti gli host principali e secondari, nonché su chi crea la maggior parte dei processi, scarica gli script degli agenti di risorsa richiesti:
#
mkdir -p /usr/lib64/stonith/plugins/external#
curl https://storage.googleapis.com/sapdeploy/pacemaker-gcp/gcpstonith -o /usr/lib64/stonith/plugins/external/gcpstonith#
chmod +x /usr/lib64/stonith/plugins/external/gcpstonith
Passaggi automatici
In alternativa, per scaricare gli script degli agenti di risorsa richiesti per tutte le istanze elencate in nodes.txt
, esegui lo script seguente dalla console Google Cloud:
while read -u10 HOST ; do gcloud compute ssh --tunnel-through-iap --quiet --zone $HOST -- "echo 'CLOUDSDK_PYTHON=/usr/bin/python' | sudo tee -a /etc/sysconfig/pacemaker; sudo curl --silent https://storage.googleapis.com/sapdeploy/pacemaker-gcp/gcpstonith -o /usr/lib64/stonith/plugins/external/gcpstonith; sudo chmod +x /usr/lib64/stonith/plugins/external/gcpstonith"; done 10< nodes.txt
Inizializza il cluster
Inizializza il cluster sull'host principale come root:
SLES 15
crm cluster init -y
SLES 12
ha-cluster-init -y
Ignora gli avvisi relativi a SBD e alla password predefinita. In questo deployment non vengono utilizzati SBD e la password predefinita.
Configura il cluster
Esegui le seguenti operazioni sull'host principale come root.
Abilita modalità di manutenzione
Imposta il cluster Pacemaker in modalità di manutenzione:
crm configure property maintenance-mode="true"
Configura le proprietà generali del cluster
Configura le seguenti proprietà generali del cluster:
crm configure property stonith-timeout="300s" crm configure property stonith-action="reboot" crm configure property stonith-enabled="true" crm configure property cluster-infrastructure="corosync" crm configure property cluster-name="hacluster" crm configure property placement-strategy="balanced" crm configure property no-quorum-policy="freeze" crm configure property concurrent-fencing="true" crm configure rsc_defaults migration-threshold="50" crm configure rsc_defaults resource-stickiness="1000" crm configure op_defaults timeout="600"
Modifica le impostazioni predefinite di corosync.conf
Apri il file
/etc/corosync/corosync.conf
utilizzando un editor di tua scelta.Rimuovi il parametro
consensus
.Modifica i parametri rimanenti in base ai suggerimenti di Google Cloud.
La seguente tabella mostra i parametritotem
per cui Google Cloud consiglia i valori, insieme all'impatto della modifica dei valori. Per i valori predefiniti di questi parametri, che possono essere diversi tra le distribuzioni Linux, consulta la documentazione per la tua distribuzione Linux.Parametro Valore consigliato Impatto della modifica del valore secauth
off
Disattiva l'autenticazione e la crittografia di tutti i messaggi totem
.join
60 (ms) Aumenta il tempo di attesa del nodo per i messaggi join
nel protocollo di appartenenza.max_messages
20 Aumenta il numero massimo di messaggi che potrebbero essere inviati dal nodo dopo aver ricevuto il token. token
20.000 (ms) Aumenta il tempo di attesa del nodo per un token di protocollo
totem
prima che il nodo dichiari una perdita di token, presuppone un errore del nodo e inizi a eseguire un'azione.L'aumento del valore del parametro
token
rende il cluster più tollerante in caso di eventi temporanei dell'infrastruttura, come una migrazione live. Tuttavia, può anche richiedere più tempo per rilevare e ripristinare il cluster in seguito a un errore del nodo.Il valore del parametro
token
determina anche il valore predefinito del parametroconsensus
, che controlla per quanto tempo un nodo attende il raggiungimento di un consenso prima di tentare di ristabilire l'appartenenza alla configurazione.consensus
N/A Specifica, in millisecondi, il tempo di attesa prima che venga raggiunto il consenso prima di iniziare un nuovo ciclo di configurazione dell'appartenenza.
Consigliamo di omettere questo parametro. Se il parametro
Se specifichi esplicitamente un valore perconsensus
non viene specificato, Corosync imposta il suo valore su 1,2 volte il valore del parametrotoken
. Se utilizzi il valore consigliato del parametrotoken
20000
, il parametroconsesus
viene impostato con il valore24000
.consensus
, assicurati che il valore sia24000
o1.2*token
, a seconda di quale delle due opzioni è maggiore.token_retransmits_before_loss_const
10 Aumenta il numero di ritrasmissioni di token da parte del nodo prima di concludere che il nodo destinatario non è riuscito e che intraprende un'azione. transport
- Per SLES:
udpu
- Per RHEL 8 o versioni successive:
knet
- Per RHEL 7:
udpu
Specifica il meccanismo di trasporto utilizzato da corosync. - Per SLES:
Unisci tutti gli host al cluster Pacemaker
Unisci tutti gli altri host, incluso il creatore della maggioranza, al cluster Pacemaker sull'host principale:
Passaggi manuali
SLES 15
crm cluster join -y -c PRIMARY_HOST_NAME
SLES 12
ha-cluster-join -y -c PRIMARY_HOST_NAME
Passaggi automatici
In alternativa, per automatizzare questo processo per tutte le istanze elencate in nodes.txt
, esegui lo script seguente dalla console Google Cloud:
while read -u10 HOST ; do echo "Joining $HOST to Pacemaker cluster"; gcloud compute ssh --tunnel-through-iap --quiet --zone $HOST -- sudo ha-cluster-join -y -c PRIMARY_HOST_NAME; done 10< nodes.txt
Ignora il messaggio di errore ERROR: cluster.join: Abort: Cluster is currently active
che viene attivato quando si unisce il nodo principale a se stesso.
Da qualsiasi host come root, verifica che il cluster mostri tutti i nodi:
#
crm_mon -s
Dovresti vedere un output simile al seguente:
CLUSTER OK: 5 nodes online, 0 resources configured
Allestisci recinzioni
Per configurare la fencing devi definire una risorsa cluster con un agente fence per ogni VM host.
Per garantire la corretta sequenza di eventi dopo un'azione di fencing, devi anche configurare il sistema operativo in modo da ritardare il riavvio di Corosync dopo il recinto di una VM. Puoi anche regolare il timeout del pacemaker per i riavvii in base al ritardo.
Crea le risorse del dispositivo di recinzione
Passaggi manuali
Nell'host principale, come root, crea le risorse di fencing per tutti i nodi nel cluster principale e secondario:
Esegui questo comando dopo aver sostituito
PRIMARY_HOST_NAME
con il nome host di un nodo nel cluster principale:#
crm configure primitive STONITH-"PRIMARY_HOST_NAME" stonith:external/gcpstonith \ op monitor interval="300s" timeout="120s" \ op start interval="0" timeout="60s" \ params instance_name="PRIMARY_HOST_NAME" gcloud_path="/usr/bin/gcloud" logging="yes" \ pcmk_reboot_timeout=300 pcmk_monitor_retries=4 pcmk_delay_max=30Ripeti il passaggio precedente per tutti gli altri nodi nel cluster principale.
Esegui questo comando dopo aver sostituito
SECONDARY_HOST_NAME
con il nome host di un nodo nel cluster secondario.#
crm configure primitive STONITH-"SECONDARY_HOST_NAME" stonith:external/gcpstonith \ op monitor interval="300s" timeout="120s" \ op start interval="0" timeout="60s" \ params instance_name="SECONDARY_HOST_NAME" gcloud_path="/usr/bin/gcloud" logging="yes" \ pcmk_reboot_timeout=300 pcmk_monitor_retries=4Ripeti il passaggio precedente per tutti gli altri nodi nel cluster secondario.
Esegui questo comando dopo aver sostituito
MAJORITY_MAKER_HOSTNAME
con il nome host dell'istanza di Majority Maker:#
crm configure primitive STONITH-"MAJORITY_MAKER_HOSTNAME" stonith:external/gcpstonith \ op monitor interval="300s" timeout="120s" \ op start interval="0" timeout="60s" \ params instance_name="MAJORITY_MAKER_HOSTNAME" gcloud_path="/usr/bin/gcloud" logging="yes" \ pcmk_reboot_timeout=300 pcmk_monitor_retries=4Imposta la posizione del dispositivo di recinzione:
#
crm configure location LOC_STONITH_"PRIMARY_HOST_NAME" \ STONITH-"PRIMARY_HOST_NAME" -inf: "PRIMARY_HOST_NAME"Ripeti il passaggio precedente per tutti gli altri host sul cluster principale e secondario, incluso l'host della maggior parte dei produttori.
Passaggi automatici
In alternativa, per configurare la recinzione per tutte le istanze elencate in nodes.txt
, esegui il seguente script dalla console Google Cloud:
while read -u10 HOST; do gcloud compute ssh --tunnel-through-iap --quiet --zone $HOST -- "sudo crm configure primitive STONITH-\$HOSTNAME stonith:external/gcpstonith op monitor interval=\"300s\" timeout=\"60s\" on-fail=\"restart\" op start interval=\"0\" timeout=\"60s\" onfail=\"restart\" params instance_name=\$HOSTNAME gcloud_path=\"/usr/bin/gcloud\" logging=\"yes\" pcmk_reboot_timeout=300 pcmk_monitor_retries=4; sudo crm configure location LOC_STONITH_\$HOSTNAME STONITH-\$HOSTNAME -inf: \$HOSTNAME"; done 10< nodes.txt
Imposta un ritardo per il riavvio di Corosync
Passaggi manuali
Su tutti gli host come 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
Aggiungi le seguenti righe al file:
[Service] ExecStartPre=/bin/sleep 60
Salva il file ed esci dall'editor.
Ricarica la configurazione dell'amministratore di sistema.
systemctl daemon-reload
Verifica che il file di inserimento sia stato creato:
service corosync status
Dovresti vedere una riga per il file di inserimento, come mostrato nell'esempio seguente:
● corosync.service - Corosync Cluster Engine Loaded: loaded (/usr/lib/systemd/system/corosync.service; disabled; vendor preset: disabled) Drop-In: /etc/systemd/system/corosync.service.d └─override.conf Active: active (running) since Tue 2021-07-20 23:45:52 UTC; 2 days ago
Passaggi automatici
In alternativa, per automatizzare questo processo per tutte le istanze elencate in nodes.txt
, esegui lo script seguente dalla console Google Cloud:
while read -u10 HOST; do gcloud compute ssh --tunnel-through-iap --quiet --zone $HOST -- "sudo mkdir -p /etc/systemd/system/corosync.service.d/; sudo echo -e '[Service]\nExecStartPre=/bin/sleep 60' | sudo tee -a /etc/systemd/system/corosync.service.d/override.conf; sudo systemctl daemon-reload"; done 10< nodes.txt
Crea una risorsa IP del cluster locale per l'indirizzo VIP
Per configurare l'indirizzo VIP nel sistema operativo, crea una risorsa IP del cluster locale per l'indirizzo VIP che hai prenotato in precedenza:
#
crm configure primitive rsc_vip_int-primary IPaddr2 \
params ip=VIP_ADDRESS cidr_netmask=32 nic="eth0" op monitor interval=3600s timeout=60s
Configura il servizio di controllo di integrità helper
Il bilanciatore del carico utilizza un listener sulla porta per il controllo di integrità di ciascun host per determinare dove è in esecuzione l'istanza principale del cluster SAP HANA.
Per gestire i listener nel cluster, devi creare una risorsa per l'ascoltatore.
In queste istruzioni viene usata l'utilità socat
come listener.
Su entrambi gli host come root, installa
socat utility
:#
zypper in -y socatNell'host principale, crea una risorsa per il servizio di controllo di integrità helper:
crm configure primitive rsc_healthcheck-primary anything \ params binfile="/usr/bin/socat" \ cmdline_options="-U TCP-LISTEN:HEALTHCHECK_PORT_NUM,backlog=10,fork,reuseaddr /dev/null" \ op monitor timeout=20s interval=10s \ op_params depth=0
Raggruppa le risorse del servizio di controllo di integrità di VIP e helper:
#
crm configure group g-primary rsc_vip_int-primary rsc_healthcheck-primary meta resource-stickiness="0"
crea la risorsa primitiva SAPHanaTopology
Puoi definire la risorsa primitiva SAPHanaTopology in un file di configurazione temporaneo, che poi caricherai su Corosync.
Nell'host principale come root:
Crea un file di configurazione temporaneo per i parametri di configurazione SAPHanaTopology:
#
vi /tmp/cluster.tmpCopia e incolla le definizioni delle risorse SAPHanaTopology nel file
/tmp/cluster.tmp
:primitive rsc_SAPHanaTopology_SID_HDBINST_NUM ocf:suse:SAPHanaTopology \ operations \$id="rsc_sap2_SID_HDBINST_NUM-operations" \ op monitor interval="10" timeout="600" \ op start interval="0" timeout="600" \ op stop interval="0" timeout="300" \ params SID="SID" InstanceNumber="INST_NUM" clone cln_SAPHanaTopology_SID_HDBINST_NUM rsc_SAPHanaTopology_SID_HDBINST_NUM \ meta clone-node-max="1" target-role="Started" interleave="true" location SAPHanaTop_not_on_majority_maker cln_SAPHanaTopology_SID_HDBINST_NUM -inf: MAJORITY_MAKER_HOSTNAME
Modifica il file
/tmp/cluster.tmp
per sostituire il testo della variabile con il SID e il numero di istanza per il tuo sistema SAP HANA.Nel file principale come root, carica i contenuti del file
/tmp/cluster.tmp
in Corosync:crm configure load update /tmp/cluster.tmp
crea la risorsa primitiva SAPHana
Per definire la risorsa primitiva SAPHana, utilizza lo stesso metodo utilizzato per la risorsa SAPHanaTopology: in un file di configurazione temporaneo che viene poi caricato su Corosync.
Sostituisci il file di configurazione temporaneo:
#
rm /tmp/cluster.tmp#
vi /tmp/cluster.tmpCopia e incolla le definizioni delle risorse SAPHana nel file
/tmp/cluster.tmp
:primitive rsc_SAPHana_SID_HDBINST_NUM ocf:suse:SAPHanaController \ operations \$id="rsc_sap_SID_HDBINST_NUM-operations" \ op start interval="0" timeout="3600" \ op stop interval="0" timeout="3600" \ op promote interval="0" timeout="3600" \ op demote interval="0" timeout="3600" \ op monitor interval="60" role="Master" timeout="700" \ op monitor interval="61" role="Slave" timeout="700" \ params SID="SID" InstanceNumber="INST_NUM" PREFER_SITE_TAKEOVER="true" \ DUPLICATE_PRIMARY_TIMEOUT="7200" AUTOMATED_REGISTER="true" ms msl_SAPHana_SID_HDBINST_NUM rsc_SAPHana_SID_HDBINST_NUM \ meta master-node-max="1" master-max="1" clone-node-max="1" \ target-role="Started" interleave="true" colocation col_saphana_ip_SID_HDBINST_NUM 4000: g-primary:Started \ msl_SAPHana_SID_HDBINST_NUM:Master order ord_SAPHana_SID_HDBINST_NUM Optional: cln_SAPHanaTopology_SID_HDBINST_NUM \ msl_SAPHana_SID_HDBINST_NUM location SAPHanaCon_not_on_majority_maker msl_SAPHana_SID_HDBINST_NUM -inf: MAJORITY_MAKER_HOSTNAME
Per un cluster SAP HANA ad alta disponibilità multi-livello, se utilizzi una versione precedente a SAP HANA 2.0 SP03, imposta
AUTOMATED_REGISTER
sufalse
. In questo modo, un'istanza recuperata non può tentare di autoregistrarsi per la replica in un sistema HANA in cui è già configurata una destinazione di replica. Per SAP HANA 2.0 SP03 o versioni successive, puoi impostareAUTOMATED_REGISTER
sutrue
per le configurazioni SAP HANA che utilizzano la replica di sistema multilivello. Per ulteriori informazioni, consulta:Nel file principale come root, carica i contenuti del file
/tmp/cluster.tmp
in Corosync:crm configure load update /tmp/cluster.tmp
Conferma che la replica di sistema SAP HANA è attiva
Nell'host principale come SID_LCadm, controlla lo stato della replica:
#
python $DIR_INSTANCE/exe/python_support/systemReplicationStatus.py
Attiva il cluster
Nell'host principale come root, disattiva la modalità di manutenzione del cluster:
#
crm configure property maintenance-mode="false"Se ricevi un messaggio che ti chiede di rimuovere "manutenzione", inserisci
y
.Attendi 15 secondi, quindi controlla lo stato del cluster sull'host principale come root:
#
crm statusGli esempi seguenti mostrano lo stato di un cluster attivo e configurato correttamente:
7 nodes configured 21 resources configured Online: [ hana-ha-vm-1 hana-ha-vm-1w1 hana-ha-vm-1w2 hana-ha-vm-2 hana-ha-vm-2w1 hana-ha-vm-2w2 sap-majoritymaker ] Full list of resources: STONITH-hana-ha-vm-1 (stonith:external/gcpstonith): Started hana-ha-vm-1w2 STONITH-hana-ha-vm-1w1 (stonith:external/gcpstonith): Started hana-ha-vm-1 STONITH-hana-ha-vm-1w2 (stonith:external/gcpstonith): Started hana-ha-vm-2 STONITH-sap-majoritymaker (stonith:external/gcpstonith): Started hana-ha-vm-1w2 STONITH-hana-ha-vm-2 (stonith:external/gcpstonith): Started hana-ha-vm-2w1 STONITH-hana-ha-vm-2w1 (stonith:external/gcpstonith): Started hana-ha-vm-2w2 STONITH-hana-ha-vm-2w2 (stonith:external/gcpstonith): Started sap-majoritymaker Clone Set: cln_SAPHanaTopology_HA1_HDB22 [rsc_SAPHanaTopology_HA1_HDB22] Started: [ hana-ha-vm-1 hana-ha-vm-1w1 hana-ha-vm-1w2 hana-ha-vm-2 hana-ha-vm-2w1 hana-ha-vm-2w2 ] Stopped: [ sap-majoritymaker ] Resource Group: g-primary rsc_vip_int-primary (ocf::heartbeat:IPaddr2): Started hana-ha-vm-1 rsc_healthcheck-primary (ocf::heartbeat:anything): Started hana-ha-vm-1 Clone Set: msl_SAPHana_HA1_HDB22 [rsc_SAPHana_HA1_HDB22] (promotable) Masters: [ hana-ha-vm-1 ] Slaves: [ hana-ha-vm-1w1 hana-ha-vm-1w2 hana-ha-vm-2 hana-ha-vm-2w1 hana-ha-vm-2w2 ] Stopped: [ sap-majoritymaker ]
Testa failover
Testa il cluster simulando un errore sull'host principale. Utilizza un sistema di test o esegui il test sul tuo sistema di produzione prima di rilasciare il sistema per l'uso.
Esegui il backup del sistema prima del test.
Puoi simulare un errore in diversi modi, tra cui:
HDB stop
HDB kill
reboot
(sul nodo attivo)ip link set eth0 down
per le istanze con una singola interfaccia di reteiptables ... DROP
per le istanze con più interfacce di reteecho c > /proc/sysrq-trigger
Queste istruzioni utilizzano ip link set eth0 down
o iptables
per simulare un'interruzione di rete tra i due host nel cluster. Utilizza il comando ip link
su un'istanza con una singola interfaccia di rete e il comando iptables
su istanze con una o più interfacce di rete. Il test convalida sia il failover sia
la scherma. Se per le istanze sono definite più interfacce di rete, puoi utilizzare il comando iptables
sull'host secondario per eliminare il traffico in entrata e in uscita in base all'IP utilizzato dall'host principale per le comunicazioni con il cluster, simulando così una perdita di connessione di rete verso l'host principale.
Sull'host attivo, come root, metti offline l'interfaccia di rete:
#
ip link set eth0 downIn alternativa, se sono attive più interfacce di rete, utilizzando
iptables
sull'host secondario:#
iptables -A INPUT -s PRIMARY_CLUSTER_IP -j DROP; iptables -A OUTPUT -d PRIMARY_CLUSTER_IP -j DROPRiconnettiti a uno dei due host tramite SSH e passa all'utente root.
Inserisci
crm 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: hana-ha-vm-2 (version 2.0.1+20190417.13d370ca9-3.9.1-2.0.1+20190417.13d370ca9) - partition with quorum Last updated: Fri Jun 12 16:46:07 2020 Last change: Fri Jun 12 16:46:07 2020 by root via crm_attribute on hana-ha-vm-2 2 nodes configured 8 resources configured Online: [ hana-ha-vm-1 hana-ha-vm-2 hana-ha-vm-1w1 hana-ha-vm-2w1] Full list of resources: STONITH-hana-ha-vm-1 (stonith:external/gcpstonith): Started hana-ha-vm-2 STONITH-hana-ha-vm-2 (stonith:external/gcpstonith): Started hana-ha-vm-1 STONITH-hana-ha-vm-1w1 (stonith:external/gcpstonith): Started hana-ha-vm-2w1 STONITH-hana-ha-vm-1w1 (stonith:external/gcpstonith): Started hana-ha-vm-mm STONITH-hana-ha-vm-mm (stonith:external/gcpstonith): Started hana-ha-vm-1w1 Clone Set: cln_SAPHanaTopology_HA1_HDB22 [rsc_SAPHanaTopology_HA1_HDB22] Started: [ hana-ha-vm-1 hana-ha-vm-2 hana-ha-vm-1w1 hana-ha-vm-2w1 Stopped: [ hana-ha-vm-mm ]] Resource Group: g-primary rsc_vip_int-primary (ocf::heartbeat:IPaddr2): Started hana-ha-vm-2 rsc_healthcheck-primary (ocf::heartbeat:anything): Started hana-ha-vm-2 Clone Set: msl_SAPHana_HA1_HDB22 [rsc_SAPHana_HA1_HDB22] (promotable) Masters: [ hana-ha-vm-2 ] Slaves: [ hana-ha-vm-1 hana-ha-vm-1w1 hana-ha-vm-2w1 Stopped: [ hana-ha-vm-mm ]]
Valuta il carico di lavoro SAP HANA
Per automatizzare i controlli di convalida continui per i carichi di lavoro ad alta disponibilità SAP HANA in esecuzione su Google Cloud, puoi utilizzare Workload Manager.
Workload Manager consente di analizzare e valutare automaticamente i carichi di lavoro ad alta disponibilità SAP HANA confrontandoli con le best practice dei fornitori SAP, Google Cloud e sistemi operativi. Ciò consente di migliorare la qualità, le prestazioni e l'affidabilità dei carichi di lavoro.
Per informazioni sulle best practice supportate da Workload Manager per la valutazione dei carichi di lavoro ad alta disponibilità SAP HANA in esecuzione su Google Cloud, consulta Best practice di Workload Manager per SAP. Per informazioni su come creare ed eseguire una valutazione utilizzando Gestore carichi di lavoro, consulta Creare ed eseguire una valutazione.
Risoluzione dei problemi
Per risolvere i problemi relativi alle configurazioni ad alta disponibilità per SAP HANA su SLES, consulta Risoluzione dei problemi relativi alle configurazioni ad alta disponibilità per SAP.
Ottenere assistenza per SAP HANA su SLES
Se hai bisogno di aiuto per risolvere un problema con i cluster ad alta disponibilità per SAP HANA su SLES, raccogli le informazioni diagnostiche richieste e contatta l'assistenza clienti Google Cloud. Per ulteriori informazioni, consulta Cluster ad alta disponibilità con informazioni diagnostiche su SLES.
Assistenza
In caso di problemi con l'infrastruttura o i servizi Google Cloud, contatta l'assistenza clienti. Puoi trovare le informazioni di contatto nella pagina Panoramica dell'assistenza della console Google Cloud. Se l'assistenza clienti 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:
- Ricevi assistenza per SAP su Google Cloud
- SAP Note 2456406 - SAP on Google Cloud Platform: Support Prerequisiti (È richiesto un account utente SAP)
Connessione a SAP HANA
Se le VM host non hanno un indirizzo IP esterno per SAP HANA, puoi connetterti alle istanze SAP HANA solo tramite l'istanza bastion utilizzando SSH o tramite il server Windows tramite SAP HANA Studio.
Per connetterti a SAP HANA tramite l'istanza bastion, connettiti al bastion host e quindi alle istanze SAP HANA utilizzando un client SSH di tua scelta.
Per connetterti al database SAP HANA tramite SAP HANA Studio, utilizza un client desktop remoto per connetterti all'istanza Windows Server. Dopo la connessione, installa manualmente SAP HANA Studio e accedi al tuo database SAP HANA.
Attività post-deployment
Dopo aver completato il deployment, completa questi passaggi:
Modificare le password temporanee per l'amministratore di sistema e il super user del database SAP HANA. Ad esempio:
sudo passwd SID_LCadm
Per informazioni da SAP sulla modifica della password, consulta Reimpostare la password utente SYSTEM del database di sistema.
Prima di utilizzare la tua istanza SAP HANA, configura ed esegui il backup del nuovo database SAP HANA.
Se viene eseguito il deployment del sistema SAP HANA su un'interfaccia di rete VirtIO, ti consigliamo di assicurarti che il valore del parametro TCP
/proc/sys/net/ipv4/tcp_limit_output_bytes
sia impostato su1048576
. Questa modifica consente di migliorare la velocità effettiva di rete complessiva nell'interfaccia di rete VirtIO senza influire sulla latenza di rete.
Per ulteriori informazioni, consulta:
Passaggi successivi
Per saperne di più, consulta la seguente risorsa: