Questa guida mostra come eseguire il deployment e configurare un cluster ad alta disponibilità (HA) Red Hat Enterprise Linux (RHEL) ottimizzato per le prestazioni per il sistema SAP NetWeaver.
Questa guida include i passaggi per:- Configurazione di un bilanciatore del carico di rete passthrough interno per reindirizzare il traffico in caso di guasto.
- Configurazione di un cluster Pacemaker su RHEL per gestire i sistemi SAP e altre risorse durante un failover.
Questa guida include anche i passaggi per configurare il sistema SAP NetWeaver per l'HA, ma fai riferimento alla documentazione di SAP per le istruzioni definitive.
Per informazioni sul deployment di VM Compute Engine per SAP NetWeaver non specifiche per la disponibilità elevata, consulta la guida al deployment di SAP NetWeaver specifica per il tuo sistema operativo.
Per configurare un cluster ad alta disponibilità per SAP NetWeaver su SUSE Linux Enterprise Server (SLES), consulta la guida alla configurazione manuale del cluster ad alta disponibilità per SAP NetWeaver su SLES.
Questa guida è rivolta agli utenti avanzati di SAP NetWeaver che hanno familiarità con le configurazioni di disponibilità elevata di Linux per SAP NetWeaver.
Il sistema di cui questa guida illustra il deployment
Seguendo questa guida, eseguirai il deployment di due istanze SAP NetWeaver e configurerai un cluster ad alta disponibilità su RHEL. Esegui il deployment di ogni istanza SAP NetWeaver su una VM Compute Engine in una zona diversa all'interno della stessa regione. Questa guida non tratta l'installazione ad alta disponibilità del database sottostante.
Il cluster di cui è stato eseguito il deployment include le seguenti funzioni e funzionalità:
- Due VM host, una per l'istanza ASCS attiva e una per l'istanza attiva dell'Enqueue Replicator ENSA2 o dell'Enqueue Replication Server ENSA1. Entrambe le istanze ENSA2 ed ENSA1 sono indicate come ERS.
- 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.
Per utilizzare Terraform per automatizzare il deployment di sistemi SAP NetWeaver ad alta disponibilità, consulta Terraform: guida alla configurazione del cluster ad alta disponibilità per SAP NetWeaver su RHEL.
Prerequisiti
Prima di creare il cluster SAP NetWeaver ad alta disponibilità, assicurati che siano soddisfatti i seguenti prerequisiti:
- Hai letto la guida alla pianificazione di SAP NetWeaver e la guida alla pianificazione della disponibilità elevata per SAP NetWeaver su Google Cloud.
- Tu o la tua organizzazione disponete di un account Google Cloud e avete creato un progetto per il deployment di SAP NetWeaver. Per informazioni sulla creazione di account e progetti Google Cloud, consulta la sezione Creare un progetto della Guida all'implementazione di SAP NetWeaver per Linux.
- Se vuoi che il tuo carico di lavoro SAP venga eseguito in conformità con la residenza dei dati, controllo dell'accesso, il personale di assistenza o i requisiti normativi, devi creare la cartella Assured Workloads richiesta. Per ulteriori informazioni, consulta Controlli di conformità e sovranità per SAP su Google Cloud.
Se utilizzi il DNS interno della VPC, il valore della variabile
vmDnsSetting
nei metadati del progetto deve essereGlobalOnly
oZonalPreferred
per abilitare la risoluzione dei nomi dei nodi nelle varie zone. L'impostazione predefinita divmDnsSetting
èZonalOnly
. Per ulteriori informazioni, consulta:Hai configurato una condivisione file utilizzando una soluzione di archiviazione file condivisa NFS, come Filestore Enterprise.
Se OS Login è abilitato nei metadati del 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 va a buon fine. Al termine del deployment, puoi riattivare l'accesso al sistema operativo.
Per ulteriori informazioni, vedi:
Informazioni correlate di RHEL
Salvo ove richiesto per l'ambiente Google Cloud, le informazioni riportate in questa guida sono coerenti con le seguenti guide correlate di Red Hat e SAP:
- Configurare SAP NetWeaver ASCS/ERS ENSA1 con risorse autonome in RHEL 7.5 e versioni successive e RHEL 8
- Configurare SAP S/4HANA ASCS/ERS con Standalone Enqueue Server 2 (ENSA2) in Pacemaker
- Nota SAP 2002167 - Red Hat Enterprise Linux 7.x: installazione e upgrade
- Nota SAP 2772999 - Red Hat Enterprise Linux 8.x: installazione e configurazione
- Nota SAP 3108316 - Red Hat Enterprise Linux 9.x: installazione e configurazione
- Nota SAP 2641322 - Installazione di ENSA2 e aggiornamento da ENSA1 a ENSA2 quando si utilizzano le soluzioni Red Hat HA per SAP
Creare una rete
Per motivi di sicurezza, crea una nuova rete. Puoi controllare chi ha accesso aggiungendo regole firewall o utilizzando un altro metodo di controllo dell'accesso.
Se il progetto ha una rete VPC predefinita, non utilizzarla. Crea invece 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
- 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.
- Per Regione, seleziona la regione Compute Engine in cui vuoi creare la sottorete.
- 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.
- 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 averla creata.
- Fai clic su Crea.
gcloud
- Vai a Cloud Shell.
- 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. - 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 creata 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 della 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 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, le connessioni in entrata dall'esterno della rete Google Cloud sono bloccate. Per consentire le connessioni in entrata, configura una regola firewall per la tua VM. Le regole firewall regolano solo le nuove connessioni in entrata a una VM. Dopo aver stabilito una connessione con una VM, il traffico è consentito in entrambe le direzioni su quella connessione.
Puoi creare una regola firewall per consentire l'accesso a porte specifiche o per consentire l'accesso tra le VM nella stessa sottorete.
Crea regole firewall per consentire l'accesso per elementi quali:
- Le porte predefinite utilizzate da SAP NetWeaver, come documentato in Porte 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 VM in una configurazione a 3 livelli, scalabile o ad alta disponibilità. Ad esempio, se esegui il deployment di un sistema a tre livelli, nella sottorete avrai almeno due VM: la VM per SAP NetWeaver e un'altra VM per il server di database. Per abilitare la comunicazione tra le due VM, devi creare una regola firewall per consentire il traffico proveniente dalla sottorete.
- Controlli di integrità di Cloud Load Balancing. Per saperne di più, consulta Creare una regola firewall per i controlli di integrità.
Per creare una regola firewall:
Nella console Google Cloud, vai alla pagina Firewall della rete VPC.
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, seleziona Tutte le istanze nella rete.
- 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 subnet 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 specifica
tcp:PORT_NUMBER;
.
Fai clic su Crea per creare la regola firewall.
Deployment delle VM per SAP NetWeaver
Prima di iniziare a configurare il cluster ad alta disponibilità, definisci ed esegui il deployment delle istanze VM che fungeranno da nodi principali e secondari nel cluster ad alta disponibilità.
Per definire ed eseguire il deployment delle VM, utilizza lo stesso modello Cloud Deployment Manager impiegato per eseguire il deployment di una VM per un sistema SAP NetWeaver in Deployment automatico delle VM per SAP NetWeaver su Linux.
Tuttavia, per eseguire il deployment di due VM anziché una, devi aggiungere la definizione della seconda VM al file di configurazione copiando e incollando la definizione della prima VM. 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 delle VM, installa SAP NetWeaver e definisci e configura il cluster HA.
Le istruzioni riportate di seguito utilizzano Cloud Shell, ma sono applicabili in generale a Google Cloud CLI.
Apri Cloud Shell.
Scarica il modello di file di configurazione YAML,
template.yaml
, nella directory di lavoro:wget https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_nw/template.yaml
Se vuoi, rinomina il file
template.yaml
per identificare la configurazione che definisce. Ad esempio,nw-ha-rhel-8-4.yaml
.Apri il file di configurazione YAML nell'editor di codice di Cloud Shell facendo clic sull'icona a forma di matita (edit) nell'angolo in alto a destra della finestra del terminale di Cloud Shell per avviare l'editor.
Nel modello di file di configurazione YAML, definisci la prima istanza VM. Definisci la seconda istanza VM nel passaggio successivo dopo la seguente tabella.
Specifica i valori delle proprietà sostituendo le parentesi e i relativi contenuti con i valori per la tua installazione. Le proprietà sono descritte nella tabella seguente. Per un esempio di un file di configurazione completato, consulta Esempio di un file di configurazione YAML completo.
Proprietà Tipo di dati Descrizione name
Stringa Un nome arbitrario che identifica la risorsa di deployment definita dal seguente insieme di proprietà. type
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 specificatype
attiva per impostazione predefinita specifica la versione del modello comelatest
. La specificatype
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 che stai definendo. Specifica nomi diversi nelle definizioni delle VM principali e secondarie. Valuta la possibilità di utilizzare nomi che identifichino le istanze come appartenenti allo stesso cluster ad alta disponibilità. I nomi delle istanze devono contenere al massimo 13 caratteri ed essere specificati con lettere minuscole, numeri o trattini. Utilizza un nome univoco all'interno del progetto.
instanceType
Stringa Il tipo di VM Compute Engine di cui hai bisogno. Specifica lo stesso tipo di istanza per le VM principali e secondarie. Se hai bisogno di un tipo di VM personalizzato, specifica un piccolo tipo di VM predefinito e, al termine del deployment, personalizza la VM in base alle tue esigenze.
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 della VM principale e secondaria. 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 NetWeaver. Per specificare una famiglia di immagini, aggiungi il prefisso family/
al nome della famiglia. Ad esempio,family/rhel-8-4-sap-ha
. Per l'elenco delle famiglie di immagini disponibili, consulta la pagina Immagini nella console Google Cloud.linuxImageProject
Stringa Il progetto Google Cloud che contiene l'immagine che intendi utilizzare. Questo progetto potrebbe essere il tuo progetto o il progetto immagine Google Cloud rhel-sap-cloud
. Per un elenco dei progetti di immagini Google Cloud, consulta la pagina Immagini della documentazione di Compute Engine.usrsapSize
Numero intero La dimensione del disco /usr/sap
. La dimensione minima è di 8 GB.sapmntSize
Numero intero La dimensione del disco /sapmnt
. La dimensione minima è di 8 GB.swapSize
Numero intero La dimensione del volume dello scambio. La dimensione minima è 1 GB. networkTag
Stringa Facoltativo. Uno o più tag di rete separati da virgole che rappresentano l'istanza VM a fini di firewall o routing.
Per le configurazioni ad alta disponibilità, specifica un tag di rete da utilizzare per una regola firewall che consenta la comunicazione tra i nodi del cluster e un tag di rete da utilizzare in una regola firewall che consenta ai controlli di integrità Cloud Load Balancing di accedere ai nodi del cluster.
Se specifichi
publicIP: No
e non specifichi un tag di rete, assicurati di fornire un altro mezzo di accesso a internet.serviceAccount
Stringa Facoltativo. Specifica un account di servizio personalizzato da utilizzare per la VM di cui è stato eseguito il deployment. L'account di servizio deve includere le autorizzazioni necessarie durante il deployment per configurare la VM per SAP.
Se
serviceAccount
non è specificato, viene utilizzato il account di servizio Compute Engine predefinito.Specifica l'indirizzo completo dell'account di servizio. Ad esempio:
sap-ha-example@example-project-123456.iam.gserviceaccount.com
publicIP
Booleano Facoltativo. Determina se viene aggiunto un indirizzo IP pubblico alla tua istanza VM. Il valore predefinito è Yes
.sap_deployment_debug
Booleano Facoltativo. Se questo valore è impostato su Yes
, il deployment genera log dettagliati. Non attivare questa impostazione a meno che un tecnico del servizio di assistenza Google non ti chieda di attivare il debug.Nel file di configurazione YAML, crea la definizione della seconda VM copiando la definizione della prima VM e incollando la copia dopo la prima definizione. Per un esempio, consulta Esempio di un file di configurazione YAML completo.
Nella definizione della seconda VM, specifica valori diversi per le seguenti proprietà rispetto a quelli specificati nella prima definizione:
name
instanceName
zone
Crea le istanze VM:
gcloud deployment-manager deployments create DEPLOYMENT_NAME --config TEMPLATE_NAME.yaml
dove:
DEPLOYMENT_NAME
rappresenta il nome del deployment.TEMPLATE_NAME
rappresenta il nome del file di configurazione YAML.
Il comando precedente richiama Deployment Manager, che esegue il deployment delle VM in base alle specifiche nel file di configurazione 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 YAML completo
L'esempio seguente mostra un file di configurazione YAML completato che esegue il deployment di due istanze VM per una configurazione HA per SAP NetWeaver utilizzando la versione più recente dei modelli di Deployment Manager. L'esempio omette i commenti contenuti nel modello al primo download.
Il file contiene le definizioni di due risorse da eseguire il deployment:
sap_nw_node_1
e sap_nw_node_2
. Ogni definizione della risorsa contiene le definizioni di una VM.
La definizione della risorsa sap_nw_node_2
è 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
e serviceAccount
provengono dalla sezione Opzioni avanzate del modello del file di configurazione.
resources: - name: sap_nw_node_1 type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_nw/sap_nw.py properties: instanceName: nw-ha-vm-1 instanceType: n2-standard-4 zone: us-central1-b subnetwork: example-sub-network-sap linuxImage: family/rhel-8-4-sap-ha linuxImageProject: rhel-sap-cloud usrsapSize: 15
sapmntSize: 15 swapSize: 24 networkTag: cluster-ntwk-tag,allow-health-check serviceAccount: limited-roles@example-project-123456.iam.gserviceaccount.com - name: sap_nw_node_2 type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_nw/sap_nw.py properties: instanceName: nw-ha-vm-2 instanceType: n2-standard-4 zone: us-central1-c subnetwork: example-sub-network-sap linuxImage: family/rhel-8-4-sap-ha linuxImageProject: rhel-sap-cloud usrsapSize: 15
sapmntSize: 15 swapSize: 24 networkTag: cluster-ntwk-tag,allow-health-check serviceAccount: limited-roles@example-project-123456.iam.gserviceaccount.com
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
- I controlli di integrità utilizzati da Cloud Load Balancing, come descritto nel passaggio successivo Creare una regola firewall per i controlli di integrità.
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
Prima di installare SAP NetWeaver o di iniziare a configurare il cluster ad alta disponibilità, verifica che le VM siano state implementate correttamente controllando i log e la mappatura dello spazio di archiviazione del sistema operativo.
Controlla i log
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.
Dal 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"
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.
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:
Nella pagina IAM e amministrazione Quote, aumenta le quote che non soddisfano i requisiti di SAP NetWeaver elencati nella guida alla pianificazione di SAP NetWeaver.
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
Controlla la configurazione delle VM
Dopo il deployment delle istanze VM, connettiti alle VM utilizzando
ssh
.- Se non l'hai ancora fatto,
crea una regola firewall
per consentire una connessione SSH sulla porta
22
. Vai alla pagina Istanze VM.
Connettiti a ogni istanza VM facendo clic sul pulsante SSH nella voce corrispondente a ogni istanza VM oppure puoi utilizzare il metodo SSH che preferisci.
- Se non l'hai ancora fatto,
crea una regola firewall
per consentire una connessione SSH sulla porta
Visualizza il file system:
~>
df -hAssicurati di vedere un output simile al seguente:
Filesystem Size Used Avail Use% Mounted on devtmpfs 32G 8.0K 32G 1% /dev tmpfs 48G 0 48G 0% /dev/shm tmpfs 32G 402M 32G 2% /run tmpfs 32G 0 32G 0% /sys/fs/cgroup /dev/sda3 30G 3.4G 27G 12% / /dev/sda2 20M 3.7M 17M 19% /boot/efi /dev/mapper/vg_usrsap-vol 15G 48M 15G 1% /usr/sap
/dev/mapper/vg_sapmnt-vol 15G 48M 15G 1% /sapmnt tmpfs 6.3G 0 6.3G 0% /run/user/1002 tmpfs 6.3G 0 6.3G 0% /run/user/0Verifica che lo spazio di scambio sia stato creato:
~>
cat /proc/meminfo | grep SwapVedrai risultati simili all'esempio seguente:
SwapCached: 0 kB SwapTotal: 25161724 kB SwapFree: 25161724 kB
Se uno dei passaggi di convalida indica che l'installazione non è riuscita:
- Correggi l'errore.
- Nella pagina Deployment, elimina il deployment per ripulire le VM e i dischi permanenti dall'installazione non riuscita.
- Esegui di nuovo il deployment.
Abilita la comunicazione di backend del bilanciatore del carico tra le VM
Dopo aver verificato che le VM sono state implementate correttamente, attiva la comunicazione di backend tra le VM che fungeranno da nodi nel cluster ad alta disponibilità.
Attiva la comunicazione di backend tra le VM modificando la configurazione del google-guest-agent
, incluso nell'ambiente guest Linux per tutte le immagini pubbliche Linux fornite da Google Cloud.
Per attivare le comunicazioni di backend del bilanciatore del carico, svolgi i seguenti passaggi su ogni VM che fa parte del cluster:
Interrompi l'agente:
sudo service google-guest-agent stop
Apri o crea il file
/etc/default/instance_configs.cfg
per modificarlo. Ad esempio:sudo vi /etc/default/instance_configs.cfg
Nel file
/etc/default/instance_configs.cfg
, specifica le seguenti proprietà di configurazione come mostrato. Se le sezioni non esistono, creane di nuove. In particolare, assicurati che entrambe le proprietàtarget_instance_ips
eip_forwarding
siano impostate sufalse
:[IpForwarding] ethernet_proto_id = 66 ip_aliases = true target_instance_ips = false [NetworkInterfaces] dhclient_script = /sbin/google-dhclient-script dhcp_command = ip_forwarding = false setup = true
Avvia il servizio dell'agente ospite:
sudo service google-guest-agent start
La configurazione del controllo di integrità del bilanciatore del carico richiede sia una porta di destinazione in ascolto per il controllo di integrità sia l'assegnazione dell'IP virtuale a un'interfaccia. Per ulteriori informazioni, consulta Testare la configurazione del bilanciatore del carico.
Configura le chiavi SSH sulle VM principali e secondarie
Per consentire la copia dei file tra gli host nel cluster HA, i passaggi di questa sezione creano connessioni SSH root tra i due host.
I modelli di Deployment Manager forniti da Google Cloud generano una chiave per te, ma puoi sostituirla con una chiave generata da te, se necessario.
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 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 Cloud Storage. Consulta Caricamenti e download.
- Utilizza una soluzione di archiviazione file come Filestore o NetApp Cloud Volumes Service per creare una cartella condivisa. Consulta Soluzioni di condivisione dei file.
Per abilitare le connessioni SSH tra le istanze principale e secondaria, segui questi passaggi. I passaggi presuppongono che tu stia utilizzando la chiave SSH generata dai modelli di Deployment Manager per SAP.
Nella VM host principale:
Connettiti alla VM tramite SSH.
Passa al root:
$
sudo su -Verifica che la chiave SSH esista:
#
ls -l /root/.ssh/Dovresti vedere i file della chiave id_rsa come nell'esempio seguente:
-rw-r--r-- 1 root root 569 May 4 23:07 authorized_keys -rw------- 1 root root 2459 May 4 23:07 id_rsa -rw-r--r-- 1 root root 569 May 4 23:07 id_rsa.pub
Aggiorna i metadati della VM principale con le informazioni sulla chiave SSH per la VM secondaria.
#
gcloud compute instances add-metadata SECONDARY_VM_NAME \ --metadata "ssh-keys=$(whoami):$(cat ~/.ssh/id_rsa.pub)" \ --zone SECONDARY_VM_ZONEVerifica che le chiavi SSH siano configurate correttamente aprendo una connessione SSH dal sistema principale al sistema secondario:
#
ssh SECONDARY_VM_NAME
Nella VM host secondaria:
Accedi tramite SSH alla VM.
Passa al root:
$
sudo su -Verifica che la chiave SSH esista:
#
ls -l /root/.ssh/Dovresti vedere i file della chiave id_rsa come nell'esempio seguente:
-rw-r--r-- 1 root root 569 May 4 23:07 authorized_keys -rw------- 1 root root 2459 May 4 23:07 id_rsa -rw-r--r-- 1 root root 569 May 4 23:07 id_rsa.pub
Aggiorna i metadati della VM secondaria con le informazioni sulla chiave SSH per la VM principale.
#
gcloud compute instances add-metadata PRIMARY_VM_NAME \ --metadata "ssh-keys=$(whoami):$(cat ~/.ssh/id_rsa.pub)" \ --zone PRIMARY_VM_ZONE#
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keysVerifica che le chiavi SSH siano configurate correttamente aprendo una connessione SSH dal sistema secondario al sistema principale.
#
ssh PRIMARY_VM_NAME
Configurare lo spazio di archiviazione dei file condivisi e le directory condivise
Devi configurare una soluzione di condivisione file NFS che fornisca uno spazio di archiviazione per file con elevata disponibilità a cui possono accedere entrambi i nodi del cluster HA. Poi, crea directory su entrambi i nodi che mappano allo spazio di archiviazione dei file condivisi. Il software del cluster garantisce che le directory appropriate vengano montate solo sulle istanze corrette.
La configurazione di una soluzione di condivisione di file non è trattata in questa guida. Per istruzioni sulla configurazione del sistema di condivisione dei file, consulta le istruzioni fornite dal fornitore della soluzione selezionata. Se scegli di utilizzare Filestore per la tua soluzione di condivisione file, ti consigliamo di utilizzare il livello Enterprise di Filestore. Per scoprire come creare un'istanza Filestore, consulta Creare istanze.
Per informazioni sulle soluzioni di condivisione dei file disponibili su Google Cloud, consulta Opzioni di archiviazione condivisa per sistemi SAP ad alta disponibilità su Google Cloud.
Per configurare le directory condivise:
Se non hai ancora configurato una soluzione di archiviazione file condivisa NFS a disponibilità elevata, fallo ora.
Monta lo spazio di archiviazione condiviso NFS su entrambi i server per la configurazione iniziale.
~>
sudo mkdir /mnt/nfs~>
sudo mount -t nfs NFS_PATH /mnt/nfsSostituisci
NFS_PATH
con il percorso della tua soluzione di condivisione di file NFS. Ad esempio,10.49.153.26:/nfs_share_nw_ha
.Da uno dei server, crea le directory per
sapmnt
, la directory di trasporto centralizzata e la directory specifica per l'istanza. Se utilizzi uno stack Java, sostituisci "ASCS" con "SCS" prima di utilizzare il seguente e qualsiasi altro comando di esempio:~>
sudo mkdir /mnt/nfs/sapmntSID~>
sudo mkdir /mnt/nfs/usrsap{trans,SIDASCSASCS_INSTANCE_NUMBER,SIDERSERS_INSTANCE_NUMBER}Se utilizzi una configurazione di montaggio semplice, esegui invece i seguenti comandi:
~>
sudo mkdir /mnt/nfs/sapmntSID~>
sudo mkdir /mnt/nfs/usrsap{trans,SID}Sostituisci quanto segue:
SID
: l'ID sistema SAP (SID). Utilizza le lettere maiuscole per tutte le lettere. Ad esempio,AHA
.ASCS_INSTANCE_NUMBER
: il numero di istanza del sistema ASCS. Ad esempio,00
.ERS_INSTANCE_NUMBER
: il numero di istanza del sistema ERS. Ad esempio,10
.
Crea i punti di montaggio necessari su entrambi i server:
~>
sudo mkdir -p /sapmnt/SID~>
sudo mkdir -p /usr/sap/trans~>
sudo mkdir -p /usr/sap/SID/ASCSASCS_INSTANCE_NUMBER~>
sudo mkdir -p /usr/sap/SID/ERSERS_INSTANCE_NUMBERSe utilizzi una configurazione di montaggio semplice, esegui invece i seguenti comandi:
~>
sudo mkdir -p /sapmnt/SID~>
sudo mkdir -p /usr/sap/trans~>
sudo mkdir -p /usr/sap/SIDConfigura
autofs
in modo da montare le directory dei file condivisi comuni quando si accede per la prima volta alle directory dei file. Il montaggio delle directoryASCSASCS_INSTANCE_NUMBER
eERSERS_INSTANCE_NUMBER
è gestito dal software del cluster, che viene configurato in un passaggio successivo.Modifica le opzioni NFS nei comandi in base alle esigenze della tua soluzione di condivisione file.
Su entrambi i server, configura
autofs
:~>
echo "/- /etc/auto.sap" | sudo tee -a /etc/auto.master~>
NFS_OPTS="-rw,relatime,vers=3,hard,proto=tcp,timeo=600,retrans=2,mountvers=3,mountport=2050,mountproto=tcp"~>
echo "/sapmnt/SID ${NFS_OPTS} NFS_PATH/sapmntSID" | sudo tee -a /etc/auto.sap~>
echo "/usr/sap/trans ${NFS_OPTS} NFS_PATH/usrsaptrans" | sudo tee -a /etc/auto.sapPer informazioni su
autofs
, consulta autofs - how it works.Se utilizzi una configurazione di montaggio semplice, esegui invece i seguenti comandi:
~>
echo "/- /etc/auto.sap" | sudo tee -a /etc/auto.master~>
NFS_OPTS="-rw,relatime,vers=3,hard,proto=tcp,timeo=600,retrans=2,mountvers=3,mountport=2050,mountproto=tcp"~>
echo "/sapmnt/SID ${NFS_OPTS}/sapmnt" | sudo tee -a /etc/auto.sap~>
echo "/usr/sap/trans ${NFS_OPTS}/usrsaptrans" | sudo tee -a /etc/auto.sap~>
echo "/usr/sap/SID ${NFS_OPTS}/usrsapSID" | sudo tee -a /etc/auto.sapSu entrambi i server, avvia il servizio
autofs
:~>
sudo systemctl enable autofs~>
sudo systemctl restart autofs~>
sudo automount -vAttiva
autofs
per montare le directory condivise accedendo a ogni directory utilizzando il comandocd
. Ad esempio:~>
cd /sapmnt/SID~>
cd /usr/sap/transSe utilizzi una configurazione di montaggio semplice, esegui invece il seguente comando:
~>
cd /sapmnt/SID~>
cd /usr/sap/trans~>
cd /usr/sap/SIDDopo aver eseguito l'accesso a tutte le directory, esegui il comando
df -Th
per verificare che le directory siano montate.~>
df -Th | grep FILE_SHARE_NAMESostituisci
FILE_SHARE_NAME
con il nome della tua soluzione di condivisione file NFS. Ad esempio,nfs_share_nw_ha
.Vedrai punti di montaggio e directory simili al seguente esempio:
10.49.153.26:/nfs_share_nw_ha nfs 1007G 76M 956G 1% /mnt/nfs 10.49.153.26:/nfs_share_nw_ha/usrsaptrans nfs 1007G 76M 956G 1% /usr/sap/trans 10.49.153.26:/nfs_share_nw_ha/sapmntAHA nfs 1007G 76M 956G 1% /sapmnt/AHA
Se utilizzi una configurazione di montaggio semplice, vedrai punti di montaggio e directory simili all'esempio seguente:
10.49.153.26:/nfs_share_nw_ha nfs 1007G 76M 956G 1% /mnt/nfs 10.49.153.26:/nfs_share_nw_ha/usrsaptrans nfs 1007G 76M 956G 1% /usr/sap/trans 10.49.153.26:/nfs_share_nw_ha/sapmntAHA nfs 1007G 76M 956G 1% /sapmnt/AHA 10.49.153.26:/nfs_share_nw_ha/usrsapAHA nfs 1007G 76M 956G 1% /usr/sap/AHA
Configurare il supporto del failover di Cloud Load Balancing
Il servizio di bilanciatore del carico di rete passthrough interno con supporto del failover instrada il traffico ASCS e ERS alle istanze attive di ciascun servizio in un cluster SAP NetWeaver. I bilanciatori del carico di rete passthrough interni utilizzano indirizzi IP virtuali (VIP), servizi di backend, gruppi di istanze e controlli di integrità per instradare il traffico in modo appropriato.
Prenota gli indirizzi IP per gli IP virtuali
Per un cluster SAP NetWeaver ad alta disponibilità, crei due VIP, talvolta indicati come indirizzi IP virtuali. Un VIP segue l'istanza SAP Central Services (SCS) attiva e l'altro segue l'istanza Enqueue Replication Server (ERS). Il bilanciatore del carico instrada il traffico inviato a ogni VIP alla VM che attualmente ospita l'istanza attiva del componente ASCS o ERS del VIP.
Apri Cloud Shell:
Prenota un indirizzo IP per l'IP virtuale dell'ASCS e per l'IP VIP dell'ERS. Per ASCS, l'indirizzo IP è quello utilizzato dalle applicazioni per accedere a SAP NetWeaver. Per ERS, l'indirizzo IP è quello utilizzato per la replica del server Enqueue. Se ometti il
--addresses
flag, viene scelto un indirizzo IP nella subnet specificata:~
gcloud compute addresses create ASCS_VIP_NAME \ --region CLUSTER_REGION --subnet CLUSTER_SUBNET \ --addresses ASCS_VIP_ADDRESS~
gcloud compute addresses create ERS_VIP_NAME \ --region CLUSTER_REGION --subnet CLUSTER_SUBNET \ --addresses ERS_VIP_ADDRESSSostituisci quanto segue:
ASCS_VIP_NAME
: specifica un nome per l'indirizzo IP virtuale dell'istanza ASCS. Ad esempio,ascs-aha-vip
.CLUSTER_REGION
: specifica la regione Google Cloud in cui si trova il tuo cluster. Ad esempio,us-central1
CLUSTER_SUBNET
: specifica la sottorete che utilizzi con il cluster. Ad esempio,example-sub-network-sap
.ASCS_VIP_ADDRESS
: facoltativamente, specifica un indirizzo IP per l'IP virtuale dell'ASCS in notazione CIDR. Ad esempio,10.1.0.2
.ERS_VIP_NAME
: specifica un nome per l'indirizzo IP virtuale dell'istanza ERS. Ad esempio,ers-aha-vip
.ERS_VIP_ADDRESS
: facoltativamente, specifica un indirizzo IP per l'IP virtuale ERS in notazione CIDR. Ad esempio,10.1.0.4
.
Per saperne di più sulla prenotazione di un indirizzo IP statico, consulta Prenotazione di un indirizzo IP interno statico.
Conferma la prenotazione dell'indirizzo IP:
~
gcloud compute addresses describe VIP_NAME \ --region CLUSTER_REGIONDovresti vedere un output simile al seguente esempio:
address: 10.1.0.2 addressType: INTERNAL creationTimestamp: '2022-04-04T15:04:25.872-07:00' description: '' id: '555067171183973766' kind: compute#address name: ascs-aha-vip 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/ascs-aha-vip status: RESERVED subnetwork: https://www.googleapis.com/compute/v1/projects/example-project-123456/regions/us-central1/subnetworks/example-sub-network-sap
Definisci i nomi host per l'indirizzo VIP in /etc/hosts
Definisci un nome host per ogni indirizzo VIP e poi aggiungi gli indirizzi IP e i nomi host sia per le VM sia per i VIP al file /etc/hosts
su ogni VM.
I nomi host VIP non sono noti al di fuori delle VM, a meno che non li aggiunga anche al
tuo servizio DNS. L'aggiunta di queste voci al file /etc/hosts
locale
protegge il cluster da eventuali interruzioni del servizio DNS.
Gli aggiornamenti al file /etc/hosts
dovrebbero essere simili al seguente
esempio:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.1.0.113 nw-ha-vm-2.us-central1-c.c.example-project-123456.internal nw-ha-vm-2 10.1.0.2 ascs-aha-vip 10.1.0.4 ers-aha-vip 10.1.0.114 nw-ha-vm-1.us-central1-b.c.example-project-123456.internal nw-ha-vm-1 # Added by Google 169.254.169.254 metadata.google.internal # Added by Google
Crea i controlli di integrità di Cloud Load Balancing
Crea controlli di integrità: uno per l'istanza ASCS attiva e uno per l'ERS attivo.
In Cloud Shell, crea i controlli di integrità. Per evitare conflitti con altri servizi, designa i numeri di porta per le istanze ASCS ed ERS nell'intervallo privato 49152-65535. I valori di intervallo di controllo e timeout nei seguenti comandi sono leggermente più lunghi rispetto ai valori predefiniti per aumentare la tolleranza al failover durante gli eventi di migrazione in produzione di Compute Engine. Se necessario, puoi modificare i valori:
~
gcloud compute health-checks create tcp ASCS_HEALTH_CHECK_NAME \ --port=ASCS_HEALTHCHECK_PORT_NUM --proxy-header=NONE --check-interval=10 --timeout=10 \ --unhealthy-threshold=2 --healthy-threshold=2~
gcloud compute health-checks create tcp ERS_HEALTH_CHECK_NAME \ --port=ERS_HEALTHCHECK_PORT_NUM --proxy-header=NONE --check-interval=10 --timeout=10 \ --unhealthy-threshold=2 --healthy-threshold=2
Conferma la creazione di ogni controllo di integrità:
~
gcloud compute health-checks describe HEALTH_CHECK_NAMEDovresti vedere un output simile al seguente esempio:
checkIntervalSec: 10 creationTimestamp: '2021-05-12T15:12:21.892-07:00' healthyThreshold: 2 id: '1981070199800065066' kind: compute#healthCheck name: ascs-aha-health-check-name selfLink: https://www.googleapis.com/compute/v1/projects/example-project-123456/global/healthChecks/scs-aha-health-check-name tcpHealthCheck: port: 60000 portSpecification: USE_FIXED_PORT proxyHeader: NONE timeoutSec: 10 type: TCP unhealthyThreshold: 2
Crea una regola firewall per i controlli di integrità
Se non lo hai già fatto, 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 Cloud Load Balancing, 35.191.0.0/16
e
130.211.0.0/22
. Per saperne di più sulle regole firewall per i bilanciatori del carico, 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_VM_NAME \ --zone=PRIMARY_ZONE \ --tags NETWORK_TAGS~
gcloud compute instances add-tags SECONDARY_VM_NAME \ --zone=SECONDARY_ZONE \ --tags NETWORK_TAGS
Crea una regola firewall che utilizzi il tag di rete 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:ASCS_HEALTHCHECK_PORT_NUM,tcp:ERS_HEALTHCHECK_PORT_NUMAd esempio:
gcloud compute firewall-rules create nw-ha-cluster-health-checks \ --network=example-network \ --action=ALLOW \ --direction=INGRESS \ --source-ranges=35.191.0.0/16,130.211.0.0/22 \ --target-tags=allow-health-check \ --rules=tcp:60000,tcp:60010
Creare gruppi di istanze Compute Engine
Devi creare un gruppo di istanze in ogni zona contenente una VM con nodo cluster e aggiungere la VM in quella zona al gruppo di istanze.
In Cloud Shell, crea il gruppo di istanze principale e aggiungi la VM principale:
~
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_VM_NAME
In Cloud Shell, crea il gruppo di istanze secondarie e aggiungi la VM secondaria:
~
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_VM_NAME
Conferma la creazione dei gruppi di istanze:
~
gcloud compute instance-groups unmanaged listDovresti vedere un output simile al seguente esempio:
NAME ZONE NETWORK NETWORK_PROJECT MANAGED INSTANCES sap-aha-primary-instance-group us-central1-b example-network-sap example-project-123456 No 1 sap-aha-secondary-instance-group us-central1-c example-network-sap example-project-123456 No 1
Configura i servizi di backend
Crea due servizi di backend, uno per ASCS e uno per ERS. Aggiungi entrambi gli gruppi di istanze a ogni servizio di backend, designando il gruppo di istanze opposto come gruppo di istanze di failover in ogni servizio di backend. Infine, crea regole di inoltro dai VIP ai servizi di backend.
In Cloud Shell, crea il servizio di backend e il gruppo di failover per ASCS:
Crea il servizio di backend per ASCS:
~
gcloud compute backend-services create ASCS_BACKEND_SERVICE_NAME \ --load-balancing-scheme internal \ --health-checks ASCS_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 principale al servizio di backend ASCS:
~
gcloud compute backend-services add-backend ASCS_BACKEND_SERVICE_NAME \ --instance-group PRIMARY_IG_NAME \ --instance-group-zone PRIMARY_ZONE \ --region CLUSTER_REGIONAggiungi il gruppo di istanze secondario come gruppo di istanze di failover per il servizio di backend ASCS:
~
gcloud compute backend-services add-backend ASCS_BACKEND_SERVICE_NAME \ --instance-group SECONDARY_IG_NAME \ --instance-group-zone SECONDARY_ZONE \ --failover \ --region CLUSTER_REGION
In Cloud Shell, crea il servizio di backend e il gruppo di failover per ERS:
Crea il servizio di backend per ERS:
~
gcloud compute backend-services create ERS_BACKEND_SERVICE_NAME \ --load-balancing-scheme internal \ --health-checks ERS_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 secondario al servizio di backend ERS:
~
gcloud compute backend-services add-backend ERS_BACKEND_SERVICE_NAME \ --instance-group SECONDARY_IG_NAME \ --instance-group-zone SECONDARY_ZONE \ --region CLUSTER_REGIONAggiungi il gruppo di istanze principale come gruppo di istanze di failover per il servizio di backend ERS:
~
gcloud compute backend-services add-backend ERS_BACKEND_SERVICE_NAME \ --instance-group PRIMARY_IG_NAME \ --instance-group-zone PRIMARY_ZONE \ --failover \ --region CLUSTER_REGION
Se vuoi, verifica che i servizi di backend contengano i gruppi di istanze come previsto:
~
gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --region=CLUSTER_REGIONDovresti vedere un output simile all'esempio riportato di seguito per il servizio di backend ASCS. Per ERS,
failover: true
viene visualizzato nel gruppo di istanze principali:backends: - balancingMode: CONNECTION group: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-b/instanceGroups/sap-aha-primary-instance-group - balancingMode: CONNECTION failover: true group: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-c/instanceGroups/sap-aha-secondary-instance-group connectionDraining: drainingTimeoutSec: 0 creationTimestamp: '2022-04-06T10:58:37.744-07:00' description: '' failoverPolicy: disableConnectionDrainOnFailover: true dropTrafficIfUnhealthy: true failoverRatio: 1.0 fingerprint: s4qMEAyhrV0= healthChecks: - https://www.googleapis.com/compute/v1/projects/example-project-123456/global/healthChecks/ascs-aha-health-check-name id: '6695034709671438882' kind: compute#backendService loadBalancingScheme: INTERNAL name: ascs-aha-backend-service-name protocol: TCP 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/backendServices/ascs-aha-backend-service-name sessionAffinity: NONE timeoutSec: 30
In Cloud Shell, crea regole di inoltro per i servizi di backend ASCS e ERS:
Crea la regola di forwarding dall'IP virtuale ASCS al servizio di backend ASCS:
~
gcloud compute forwarding-rules create ASCS_FORWARDING_RULE_NAME \ --load-balancing-scheme internal \ --address ASCS_VIP_ADDRESS \ --subnet CLUSTER_SUBNET \ --region CLUSTER_REGION \ --backend-service ASCS_BACKEND_SERVICE_NAME \ --ports ALLCrea la regola di forwarding dall'IP pubblico virtuale ERS al servizio di backend ERS:
~
gcloud compute forwarding-rules create ERS_FORWARDING_RULE_NAME \ --load-balancing-scheme internal \ --address ERS_VIP_ADDRESS \ --subnet CLUSTER_SUBNET \ --region CLUSTER_REGION \ --backend-service ERS_BACKEND_SERVICE_NAME \ --ports ALL
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 su una porta di controllo di integrità.
Su entrambe le VM host, installa l'utilità
socat
:$
sudo yum install socatNella VM principale, assegna temporaneamente l'IP virtuale alla scheda di rete eth0:
ip addr add VIP_ADDRESS dev eth0
Nella VM principale, avvia un processo
socat
per ascoltare per 60 secondi sulla porta di controllo di integrità dell'integrità dell'ASCS:$
timeout 60s socat - TCP-LISTEN:ASCS_HEALTHCHECK_PORT_NUM,forkIn Cloud Shell, dopo aver atteso alcuni secondi affinché il controllo di integrità rilevi il listener, controlla l'integrità del gruppo di istanza di backend ASCS:
~
gcloud compute backend-services get-health ASCS_BACKEND_SERVICE_NAME \ --region CLUSTER_REGIONDovresti vedere un output simile al seguente esempio per ASCS:
backend: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-b/instanceGroups/sap-aha-primary-instance-group status: healthStatus: - forwardingRule: https://www.googleapis.com/compute/v1/projects/example-project-123456/regions/us-central1/forwardingRules/scs-aha-forwarding-rule forwardingRuleIp: 10.1.0.90 healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-b/instances/nw-ha-vm-1 ipAddress: 10.1.0.89 port: 80 kind: compute#backendServiceGroupHealth --- backend: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-c/instanceGroups/sap-aha-secondary-instance-group status: healthStatus: - forwardingRule: https://www.googleapis.com/compute/v1/projects/example-project-123456/regions/us-central1/forwardingRules/scs-aha-forwarding-rule forwardingRuleIp: 10.1.0.90 healthState: UNHEALTHY instance: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-c/instances/nw-ha-vm-2 ipAddress: 10.1.0.88 port: 80 kind: compute#backendServiceGroupHealth
Rimuovi l'IP virtuale dall'interfaccia eth0:
ip addr del VIP_ADDRESS dev eth0
Ripeti i passaggi per ERS, sostituendo i valori delle variabili ASCS con quelli di ERS.
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 ha un listener che può rispondere al controllo di integrità.
Per utilizzare temporaneamente la porta 22
:
Nella console Google Cloud, vai alla pagina Controlli di integrità di Compute Engine:
Fai clic sul nome del controllo di integrità.
Fai clic su Modifica.
Nel campo Porta, imposta il numero di porta su 22.
Fai clic su Salva e attendi un paio di minuti.
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_REGIONDovresti vedere un output simile al seguente:
backend: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-b/instanceGroups/sap-aha-primary-instance-group status: healthStatus: - forwardingRule: https://www.googleapis.com/compute/v1/projects/example-project-123456/regions/us-central1/forwardingRules/scs-aha-forwarding-rule forwardingRuleIp: 10.1.0.85 healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-b/instances/nw-ha-vm-1 ipAddress: 10.1.0.79 port: 80 kind: compute#backendServiceGroupHealth --- backend: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-c/instanceGroups/sap-aha-secondary-instance-group status: healthStatus: - forwardingRule: https://www.googleapis.com/compute/v1/projects/example-project-123456/regions/us-central1/forwardingRules/scs-aha-forwarding-rule forwardingRuleIp: 10.1.0.85 healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-c/instances/nw-ha-vm-2 ipAddress: 10.1.0.78 port: 80 kind: compute#backendServiceGroupHealth
Al termine, ripristina il numero di porta del controllo di integrità.
Installa gli ascoltatori per i controlli di integrità
Per configurare una risorsa di controllo di integrità, devi prima installare i listener.
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.
Su ogni host del cluster, installa un listener completando i seguenti passaggi:
Come utente root, installa un semplice listener TCP. Queste istruzioni descrivono come installare e utilizzare HAProxy come listener.
#
yum install haproxyCopia e rinomina il file di configurazione
haproxy.cfg
predefinito in modo da trasformarlo in un file modello per le più istanze haproxy:#
cp /usr/lib/systemd/system/haproxy.service \ /etc/systemd/system/haproxy@.serviceModifica le sezioni
[Unit]
e[Service]
del filehaproxy@.service
per includere il parametro istanza%i
, come mostrato nell'esempio seguente:[Unit] Description=HAProxy Load Balancer %i After=network-online.target Wants=network-online.target [Service] Environment="CONFIG=/etc/haproxy/haproxy-%i.cfg" "PIDFILE=/run/haproxy-%i.pid" ...
Per ulteriori informazioni di Red Hat sui modelli di unità
systemd
, consulta Utilizzare le unità con istanza.Crea un file di configurazione
haproxy.cfg
per l'istanza ASCS. Ad esempio:#
vi /etc/haproxy/haproxy-SIDscs.cfgSostituisci
SID
con l'ID sistema SAP (SID). Utilizza le lettere maiuscole per tutte le lettere. Ad esempio,AHA
.Nel file di configurazione
haproxy-SIDscs.cfg
ASCS, inserisci la seguente configurazione e sostituisciASCS_HEALTHCHECK_PORT_NUM
con il numero di porta specificato quando hai creato il controllo di salute Compute Engine per ASCS in precedenza:global chroot /var/lib/haproxy pidfile /var/run/haproxy-%i.pid user haproxy group haproxy daemon defaults mode tcp log global option dontlognull option redispatch retries 3 timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout check 10s maxconn 3000 # Listener for SAP healthcheck listen healthcheck bind *:ASCS_HEALTHCHECK_PORT_NUM
Crea un file di configurazione
haproxy.cfg
per l'istanza ERS. Ad esempio:#
vi /etc/haproxy/haproxy-SIDers.cfgNel file di configurazione
haproxy-SIDers.cfg
ERS, inserisci la seguente configurazione e sostituisciERS_HEALTHCHECK_PORT_NUM
con il numero di porta specificato in precedenza quando hai creato il controllo di stato di Compute Engine per ERS:global chroot /var/lib/haproxy pidfile /var/run/haproxy-%i.pid user haproxy group haproxy daemon defaults mode tcp log global option dontlognull option redispatch retries 3 timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout check 10s maxconn 3000 # Listener for SAP healthcheck listen healthcheck bind *:ERS_HEALTHCHECK_PORT_NUM
Ricarica i servizi
systemd
:#
systemctl daemon-reloadVerifica che il servizio haproxy sia configurato correttamente:
#
systemctl start haproxy#
systemctl status haproxy#
systemctl | grep haproxyLo stato restituito dovrebbe mostrare
haproxy.service
comeactive (running)
.● haproxy.service - HAProxy Load Balancer Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2022-04-10 16:48:10 UTC; 2 days ago Main PID: 1079 (haproxy) Tasks: 2 (limit: 100996) Memory: 5.1M CGroup: /system.slice/haproxy.service ├─1079 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid └─1083 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid Apr 10 16:48:10 dru-hanw-ascs systemd[1]: Starting HAProxy Load Balancer... Apr 10 16:48:10 dru-hanw-ascs systemd[1]: Started HAProxy Load Balancer.
Ripeti i passaggi precedenti su ogni host del cluster.
Configurare Pacemaker
La procedura seguente configura l'implementazione RHEL di un cluster Pacemaker su VM Compute Engine per SAP NetWeaver.
La procedura si basa sulla documentazione di Red Hat per la configurazione di cluster ad alta disponibilità, incluse le seguenti pubblicazioni (è necessario un abbonamento a Red Hat):
- Configurazione di SAP NetWeaver ASCS/ERS ENSA1 con risorse autonome in RHEL 7.5 e versioni successive e RHEL 8
- Configurazione di SAP S/4HANA ASCS/ERS con Standalone Enqueue Server 2 (ENSA2) in Pacemaker
Per informazioni di SAP sull'installazione e sulla configurazione di RHEL, consulta:
- Nota SAP 3108316 - Red Hat Enterprise Linux 9.x: installazione e configurazione
- Nota SAP 2772999 - Red Hat Enterprise Linux 8.x: installazione e configurazione
- Nota SAP 2002167 - Red Hat Enterprise Linux 7.x: installazione e upgrade
Configura i pacchetti del cluster e il firewall del sistema operativo richiesti su entrambi gli host
Con accesso come utente root su entrambi gli host principali e secondari, installa e aggiorna i pacchetti del cluster richiesti, configura hacluster
e configura il servizio firewall del sistema operativo.
Installa i seguenti pacchetti del cluster richiesti:
#
yum install pcs pacemaker#
yum install fence-agents-gce#
yum install resource-agents-gcp#
yum install resource-agents-sap#
yum install sap-cluster-connectorAggiorna i pacchetti installati:
#
yum update -yImposta la password per l'utente
hacluster
, che viene installato come parte dei pacchetti del cluster:#
passwd haclusterSpecifica una password per
hacluster
quando richiesto.Nelle immagini RHEL fornite da Google Cloud, il servizio di firewall del sistema operativo è attivo per impostazione predefinita. Configura il servizio firewall per consentire il traffico ad alta disponibilità:
#
firewall-cmd --permanent --add-service=high-availability#
firewall-cmd --reloadAvvia il servizio pcs e configuralo in modo che venga avviato all'avvio:
#
systemctl start pcsd.service#
systemctl enable pcsd.serviceControlla lo stato del servizio pcs:
#
systemctl status pcsd.serviceDovresti vedere un output simile al seguente:
● pcsd.service - PCS GUI and remote configuration interface Loaded: loaded (/usr/lib/systemd/system/pcsd.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2020-06-13 21:17:05 UTC; 25s ago Docs: man:pcsd(8) man:pcs(8) Main PID: 31627 (pcsd) CGroup: /system.slice/pcsd.service └─31627 /usr/bin/ruby /usr/lib/pcsd/pcsd Jun 13 21:17:03 hana-ha-vm-1 systemd[1]: Starting PCS GUI and remote configuration interface... Jun 13 21:17:05 hana-ha-vm-1 systemd[1]: Started PCS GUI and remote configuration interface.
Crea il cluster
Con i privilegi di root su entrambi i nodi, autorizza l'utente
hacluster
. Fai clic sulla scheda corrispondente alla tua versione di RHEL per visualizzare il comando:RHEL 8 e versioni successive
#
pcs host auth PRIMARY_VM_NAME SECONDARY_VM_NAMERHEL 7
#
pcs cluster auth PRIMARY_VM_NAME SECONDARY_VM_NAMEQuando richiesto, inserisci il nome utente
hacluster
e la password impostata per l'utentehacluster
.Crea il cluster:
RHEL 8 e versioni successive
#
pcs cluster setup CLUSTER_NAME PRIMARY_VM_NAME SECONDARY_VM_NAMERHEL 7
#
pcs cluster setup --name CLUSTER_NAME PRIMARY_VM_NAME SECONDARY_VM_NAME
Aggiorna i file di configurazione di Corosync
I passaggi riportati di seguito impostano i valori consigliati per il cluster di Corosync.
Se il file di configurazione di Corosync, /etc/corosync/corosync.conf
,
non esiste ancora o è vuoto, puoi utilizzare il file di esempio nella directory
/etc/corosync/
come base per la configurazione.
Apri il file
corosync.conf
per la modifica:#
vi /etc/corosync/corosync.confNella sezione
totem
del filecorosync.conf
, imposta i parametri nell'esempio riportato di seguito sui valori visualizzati. Alcuni parametri potrebbero essere già impostati sui valori corretti:RHEL 8
totem { ... transport: knet token: 20000 token_retransmits_before_loss_const: 10 join: 60 max_messages: 20 ... }
RHEL 7
totem { ... transport: udpu token: 20000 token_retransmits_before_loss_const: 10 join: 60 max_messages: 20 ... }
Sincronizza la configurazione con il secondo server:
RHEL 8 e versioni successive
#
pcs cluster sync corosyncRHEL 7
#
pcs cluster syncDalla VM principale, abilita e avvia il cluster
#
pcs cluster enable --all#
pcs cluster start --allVerifica che le nuove impostazioni di corosync siano attive nel cluster utilizzando l'utilità corosync-cmapctl:
#
corosync-cmapctlControlla lo stato del cluster:
#
pcs statusDovresti vedere un output simile al seguente esempio:
Cluster name: nwha WARNINGS: No stonith devices and stonith-enabled is not false Cluster Summary: * Stack: corosync * Current DC: nw-ha-vm-2 (version 2.0.5-9.el8_4.3-ba59be7122) - partition with quorum * 2 nodes configured * 0 resource instances configured Node List: * Online: [ nw-ha-vm-1 nw-ha-vm-2 ] Full List of Resources: * No resources Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled
Configura le risorse del cluster per l'infrastruttura
Devi definire le risorse Pacemaker per la seguente infrastruttura del cluster:
- Il dispositivo di recinzione, che impedisce gli scenari di split brain
- Le directory ASCS ed ERS nel file system condiviso
- I controlli di integrità
- I VIP
- Componenti ASCS ed ERS
Devi prima definire le risorse per il dispositivo di recinzione, il file system condiviso, i controlli di integrità e i VIP. Poi installa SAP NetWeaver. Dopo aver installato SAP NetWeaver, definisci infine le risorse del cluster per i componenti ASCS ed ERS.
Configurare la recinzione
La configurazione del recinto virtuale avviene definendo una risorsa del cluster con l'agente fence_gce
per ogni VM host.
Per garantire la sequenza corretta degli 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
Per ogni VM del cluster, crea una risorsa cluster per il dispositivo di recinzione in modo che il cluster possa riavviare la VM. Il dispositivo di recinzione per una VM deve essere eseguito su una VM diversa, quindi configura la posizione della risorsa del cluster in modo che venga eseguita su qualsiasi VM tranne la VM che può riavviare.
Nell'host principale, come utente root, crea una risorsa cluster per un dispositivo di recinzione per la VM principale:
#
pcs stonith create FENCING_RESOURCE_PRIMARY_VM fence_gce \ port="PRIMARY_VM_NAME" \ zone="PRIMARY_ZONE" \ project="CLUSTER_PROJECT_ID" \ pcmk_reboot_timeout=300 pcmk_monitor_retries=4 pcmk_delay_max=30 \ op monitor interval="300s" timeout="120s" \ op start interval="0" timeout="60s"Configura la posizione del dispositivo di recinzione per la VM principale in modo che sia attivo solo sulla VM secondaria:
#
pcs constraint location FENCING_RESOURCE_PRIMARY_VM avoids PRIMARY_VM_NAMENell'host secondario, come utente root, crea una risorsa cluster per un dispositivo di recinzione per la VM secondaria:
#
pcs stonith create FENCING_RESOURCE_SECONDARY_VM fence_gce \ port="SECONDARY_VM_NAME" \ zone="SECONDARY_ZONE" \ project="CLUSTER_PROJECT_ID" \ pcmk_reboot_timeout=300 pcmk_monitor_retries=4 \ op monitor interval="300s" timeout="120s" \ op start interval="0" timeout="60s"Configura la posizione del dispositivo di recinzione per la VM secondaria in modo che sia attivo solo sulla VM principale:
#
pcs constraint location FENCING_RESOURCE_SECONDARY_VM avoids SECONDARY_VM_NAME
Imposta un ritardo per il riavvio di Corosync
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 con recinzione: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 del gestore systemd.
systemctl daemon-reload
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 le risorse del file system
Definisci le risorse del cluster per le directory ASCS ed ERS nel file system condiviso.
Configura una risorsa del file system per la directory ASCS.
#
pcs resource create ASCS_FILE_SYSTEM_RESOURCE Filesystem \ device="NFS_PATH/usrsapSIDASCSASCS_INSTANCE_NUMBER" \ directory="/usr/sap/SID/ASCSASCS_INSTANCE_NUMBER" \ fstype=nfs force_unmount=safe \ --group ASCS_RESOURCE_GROUP \ op start interval=0 timeout=60 \ op stop interval=0 timeout=120 \ op monitor interval=200 timeout=40Sostituisci quanto segue:
ASCS_FILE_SYSTEM_RESOURCE
: specifica un nome per la risorsa cluster per il file system ASCS.NFS_PATH
: specifica il percorso della directory del file system NFS.SID
: specifica l'ID sistema (SID). Utilizza le lettere maiuscole per tutte le lettere.ASCS_INSTANCE_NUMBER
: specifica il numero di istanza ASCS.ASCS_RESOURCE_GROUP
: specifica un nome di gruppo univoco per le risorse del cluster ASCS. Puoi garantire l'unicità utilizzando una convenzione come "SID_ASCSinstance_number_group". Ad esempio,nw8_ASCS00_group
.Poiché il gruppo non esiste ancora, Pacemaker lo crea ora. Man mano che crei altre risorse ASCS, le aggiungi a questo gruppo.
Configura una risorsa del file system per la directory ERS.
#
pcs resource create ERS_FILE_SYSTEM_RESOURCE Filesystem \ device="NFS_PATH/usrsapSIDERSERS_INSTANCE_NUMBER" \ directory="/usr/sap/SID/ERSERS_INSTANCE_NUMBER" \ fstype=nfs force_unmount=safe \ --group ERS_RESOURCE_GROUP \ op start interval=0 timeout=60 \ op stop interval=0 timeout=120 \ op monitor interval=200 timeout=40Sostituisci quanto segue:
ERS_FILE_SYSTEM_RESOURCE
: specifica un nome per la risorsa del file system.NFS_PATH
: specifica il percorso della directory del file system NFS.SID
: specifica l'ID sistema (SID). Utilizza le lettere maiuscole per tutte le lettere.ERS_INSTANCE_NUMBER
: specifica il numero di istanza ERS.ERS_RESOURCE_GROUP
: specifica un nome di gruppo univoco per le risorse del cluster ERS. Puoi garantire l'unicità utilizzando una convenzione come "SID_ERSinstance_number_group". Ad esempio,nw8_ERS10_group
.Poiché il gruppo non esiste ancora, Pacemaker lo crea ora. Man mano che crei altre risorse ERS, le aggiungi a questo gruppo.
Crea una risorsa indirizzo IP virtuale
Definisci le risorse del cluster per gli indirizzi VIP.
Se devi cercare l'indirizzo VIP, puoi utilizzare:
gcloud compute addresses describe ASCS_VIP_NAME
--region=CLUSTER_REGION --format="value(address)"gcloud compute addresses describe ERS_VIP_NAME
--region=CLUSTER_REGION --format="value(address)"
Crea le risorse del cluster per gli VIP ASCS ed ERS.
#
pcs resource create ASCS_VIP_RESOURCE IPaddr2 \ ip=ASCS_VIP_ADDRESS cidr_netmask=32 nic=eth0 \ op monitor interval=3600 timeout=60 \ --group ASCS_RESOURCE_GROUP#
pcs resource create ERS_VIP_RESOURCE IPaddr2 \ ip=ERS_VIP_ADDRESS cidr_netmask=32 nic=eth0 \ op monitor interval=3600 timeout=60 \ --group ERS_RESOURCE_GROUP
Crea le risorse di controllo di integrità
Configura la risorsa cluster per il controllo di integrità dell'ASCS:
#
pcs resource create _HEALTHCHECK_SCS service:haproxy@SIDascs \ op monitor interval=10s timeout=20s \ --group ASCS_RESOURCE_GROUPConfigura la risorsa del cluster per il controllo di integrità di ERS:
#
pcs resource create _HEALTHCHECK_ERS service:haproxy@SIDers \ op monitor interval=10s timeout=20s \ --group ERS_RESOURCE_GROUP
Impostare valori predefiniti aggiuntivi per il cluster
Imposta altre proprietà del cluster:
#
pcs resource defaults resource-stickiness=1#
pcs resource defaults migration-threshold=3
Visualizza le risorse definite
Visualizza le risorse del cluster che hai definito finora per assicurarti che siano corrette.
Visualizza lo stato del cluster:
#
pcs statusDovresti vedere un output simile al seguente esempio:
Cluster name: nwha Cluster Summary: * Stack: corosync * Current DC: nw-ha-vm-1 (version 2.0.5-9.el8_4.3-ba59be7122) - partition with quorum * 2 nodes configured * 8 resource instances configured Node List: * Online: [ nw-ha-vm-1 nw-ha-vm-2 ] Full List of Resources: * fence-nw-ha-vm-2 (stonith:fence_gce): Started nw-ha-vm-1 * fence-nw-ha-vm-1 (stonith:fence_gce): Started nw-ha-vm-2 * Resource Group: nw8_ascs00_group: * nw8_vip_ascs00 (ocf::heartbeat:IPaddr2): Started nw-ha-vm-1 * nw8_healthcheck_scs (service:haproxy@nw8scs): Started nw-ha-vm-1 * nw8_fs_ascs00 (ocf::heartbeat:Filesystem): Started nw-ha-vm-1 * Resource Group: nw8_ers10_group: * nw8_vip_ers10 (ocf::heartbeat:IPaddr2): Started nw-ha-vm-2 * nw8_healthcheck_ers (service:haproxy@nw8ers): Started nw-ha-vm-2 * nw8_fs_ers10 (ocf::heartbeat:Filesystem): Started nw-ha-vm-2 Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled
Installa ASCS ed ERS
La sezione seguente illustra solo i requisiti e i consigli specifici per l'installazione di SAP NetWeaver su Google Cloud.
Per istruzioni di installazione complete, consulta la documentazione di SAP NetWeaver.
Prepararsi all'installazione
Per garantire la coerenza nel cluster e semplificare l'installazione, prima di installare i componenti ASCS ed ERS di SAP NetWeaver, definisci gli utenti, i gruppi e le autorizzazioni e metti il server secondario in modalità standby.
Rimuovi il cluster dalla modalità di manutenzione:
#
sudo pcs property set maintenance-mode="false"Su entrambi i server, come utente root, inserisci i seguenti comandi, specificando gli ID utente e gruppo appropriati per il tuo ambiente:
#
groupadd -g GID_SAPINST sapinst#
groupadd -g GID_SAPSYS sapsys#
useradd -u UID_SIDADM SID_LCadm -g sapsys#
usermod -a -G sapinst SID_LCadm#
useradd -u UID_SAPADM sapadm -g sapinst#
chown SID_LCadm:sapsys /usr/sap/SID/SYS#
chown SID_LCadm:sapsys /sapmnt/SID -R#
chown SID_LCadm:sapsys /usr/sap/trans -R#
chown SID_LCadm:sapsys /usr/sap/SID/SYS -R#
chown SID_LCadm:sapsys /usr/sap/SID -RSe utilizzi una configurazione di montaggio semplice , esegui invece i seguenti comandi su entrambi i server come utente root. Specifica gli ID utente e gruppo appropriati per il tuo ambiente.
#
groupadd -g GID_SAPINST sapinst#
groupadd -g GID_SAPSYS sapsys#
useradd -u UID_SIDADM SID_LCadm -g sapsys#
usermod -a -G sapinst SID_LCadm#
useradd -u UID_SAPADM sapadm -g sapinst#
chown SID_LCadm:sapsys /usr/sap/SID#
chown SID_LCadm:sapsys /sapmnt/SID -R#
chown SID_LCadm:sapsys /usr/sap/trans -R#
chown SID_LCadm:sapsys /usr/sap/SID -R#
chown SID_LCadm:sapsys /usr/sap/SID/SYSSostituisci quanto segue:
GID_SAPINST
: specifica l'ID gruppo Linux per lo strumento di provisioning SAP.GID_SAPSYS
: specifica l'ID gruppo Linux per l'utente SAPSYS.UID_SIDADM
: specifica l'ID utente Linux per l'amministratore del sistema SAP (SID).SID_LC
: specifica l'ID sistema (SID). Utilizza le lettere minuscole.UID_SAPADM
: specifica l'ID utente per l'agente di hosting SAP.SID
: specifica l'ID sistema (SID). Utilizza le lettere maiuscole per tutte le lettere.
Ad esempio, di seguito è riportato uno schema di numerazione pratico per GID e UID:
Group sapinst 1001 Group sapsys 1002 Group dbhshm 1003 User en2adm 2001 User sapadm 2002 User dbhadm 2003
Installa il componente ASCS
Sul server secondario, inserisci il seguente comando per metterlo in modalità standby:
#
pcs node standbyLa modalità standby del server secondario consente di consolidare tutte le risorse del cluster sul server principale, semplificando l'installazione.
Verifica che il server secondario sia in modalità standby:
#
pcs statusL'output è simile al seguente esempio:
Cluster name: nwha Cluster Summary: * Stack: corosync * Current DC: nw-ha-vm-1 (version 2.0.5-9.el8_4.3-ba59be7122) - partition with quorum * 2 nodes configured * 8 resource instances configured Node List: * Online: [ nw-ha-vm-1 nw-ha-vm-2 ] Full List of Resources: * fence-nw-ha-vm-2 (stonith:fence_gce): Started nw-ha-vm-1 * fence-nw-ha-vm-1 (stonith:fence_gce): Stopped * Resource Group: nw8_ascs00_group: * nw8_vip_ascs00 (ocf::heartbeat:IPaddr2): Started nw-ha-vm-1 * nw8_healthcheck_scs (service:haproxy@nw8scs): Started nw-ha-vm-1 * nw8_fs_ascs00 (ocf::heartbeat:Filesystem): Started nw-ha-vm-1 * Resource Group: nw8_ers10_group: * nw8_vip_ers10 (ocf::heartbeat:IPaddr2): Started nw-ha-vm-1 * nw8_healthcheck_ers (service:haproxy@nw8ers): Started nw-ha-vm-1 * nw8_fs_ers10 (ocf::heartbeat:Filesystem): Started nw-ha-vm-1 Daemon Status: corosync: active/enabled
Sul server principale, come utente root, modifica la directory in una directory di installazione temporanea, ad esempio
/tmp
, per installare l'istanza ASCS eseguendo SAP Software Provisioning Manager (SWPM).Per accedere all'interfaccia web di SWPM, devi disporre della password per l'utente
root
. Se i tuoi criteri IT non consentono all'amministratore SAP di accedere alla password di root, puoi utilizzareSAPINST_REMOTE_ACCESS_USER
.Quando avvii SWPM, utilizza il parametro
SAPINST_USE_HOSTNAME
per specificare il nome host virtuale che hai definito per l'indirizzo VIP ASCS nel file/etc/hosts
.Ad esempio:
cd /tmp; /mnt/nfs/install/SWPM/sapinst SAPINST_USE_HOSTNAME=vh-aha-scs
Nella pagina di conferma finale del SWPM, assicurati che il nome dell'host virtuale sia corretto.
Al termine della configurazione, estrarre la VM secondaria dalla modalità standby:
#
pcs node unstandby
Installa il componente ERS
Sul server principale, come utente root o
SID_LCadm
, interrompi il servizio ASCS.#
su - SID_LCadm -c "sapcontrol -nr ASCS_INSTANCE_NUMBER -function Stop"#
su - SID_LCadm -c "sapcontrol -nr ASCS_INSTANCE_NUMBER -function StopService"Sul server principale, inserisci il seguente comando per metterlo in modalità standby:
#
pcs node standbyLa modalità standby del server principale consente di consolidare tutte le risorse del cluster sul server secondario, semplificando l'installazione.
Verifica che il server principale sia in modalità standby:
#
pcs statusSul server secondario, come utente root, modifica la directory in una directory di installazione temporanea, ad esempio
/tmp
, per installare l'istanza ERS eseguendo SAP Software Provisioning Manager (SWPM).Utilizza lo stesso utente e la stessa password per accedere a SWPM che hai utilizzato quando hai installato il componente ASCS.
Quando avvii SWPM, utilizza il parametro
SAPINST_USE_HOSTNAME
per specificare il nome host virtuale che hai definito per l'indirizzo VIP ERS nel file/etc/hosts
.Ad esempio:
cd /tmp; /mnt/nfs/install/SWPM/sapinst SAPINST_USE_HOSTNAME=vh-aha-ers
Nella pagina di conferma finale del SWPM, assicurati che il nome dell'host virtuale sia corretto.
Rimuovi la VM principale dallo stato di standby per attivarle entrambe:
#
pcs node unstandby
Configura i servizi SAP
Devi verificare che i servizi siano configurati correttamente, controllare le impostazioni nei profili ASCS ed ERS e aggiungere l'utente SID_LCadm
al gruppo di utenti haclient
.
Conferma le voci del servizio SAP
Su entrambi i server, verifica che il file
/usr/sap/sapservices
contenga voci sia per i servizi ASCS sia per ERS. Per farlo, puoi utilizzare l'integrazione disystemV
osystemd
.Puoi aggiungere le voci mancanti utilizzando il comando
sapstartsrv
con le opzionipf=PROFILE_OF_THE_SAP_INSTANCE
e-reg
.Per ulteriori informazioni su queste integrazioni, consulta le seguenti note SAP:
systemV
Di seguito è riportato un esempio di come vengono visualizzate le voci per i servizi ASCS ed ERS nel file
/usr/sap/sapservices
quando utilizzi l'integrazionesystemV
:#
LD_LIBRARY_PATH=/usr/sap/hostctrl/exe:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH /usr/sap/hostctrl/exe/sapstartsrv \ pf=/usr/sap/SID/SYS/profile/SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME \ -D -u SID_LCadm /usr/sap/hostctrl/exe/sapstartsrv \ pf=/usr/sap/SID/SYS/profile/SID_ASCSASCS_INSTANCE_NUMBER_ASCS_VIRTUAL_HOST_NAME \ -D -u SID_LCadmsystemd
Verifica che il file
/usr/sap/sapservices
contenga voci per i servizi ASCS ed ERS. Di seguito è riportato un esempio di come queste voci vengono visualizzate nel file/usr/sap/sapservices
quando utilizzi l'integrazionesystemd
:systemctl --no-ask-password start SAPSID_ASCS_INSTANCE_NUMBER # sapstartsrv pf=/usr/sap/SID/SYS/profile/SID_ASCSASCS_INSTANCE_NUMBER_SID_LCascs systemctl --no-ask-password start SAPSID_ERS_INSTANCE_NUMBER # sapstartsrv pf=/usr/sap/SID/SYS/profile/SID_ERSERS_INSTANCE_NUMBER_SID_LCers
Disattiva l'integrazione di
systemd
nelle istanze ASCS ed ERS:#
systemctl disable SAPSID_ASCS_INSTANCE_NUMBER.service#
systemctl stop SAPSID_ASCS_INSTANCE_NUMBER.service#
systemctl disable SAPSID_ERS_INSTANCE_NUMBER.service#
systemctl stop SAPSID_ERS_INSTANCE_NUMBER.serviceVerifica che l'integrazione di
systemd
sia disattivata:#
systemctl list-unit-files | grep sapUn output simile all'esempio seguente indica che l'integrazione di
systemd
è disattivata. Tieni presente che alcuni servizi, comesaphostagent
esaptune
, sono abilitati e alcuni sono disattivati.SAPSID_ASCS_INSTANCE_NUMBER.service disabled SAPSID_ERS_INSTANCE_NUMBER.service disabled saphostagent.service enabled sapinit.service generated saprouter.service disabled saptune.service enabled
Interrompi i servizi SAP
Sul server secondario, arresta il servizio ERS:
#
su - SID_LCadm -c "sapcontrol -nr ERS_INSTANCE_NUMBER -function Stop"#
su - SID_LCadm -c "sapcontrol -nr ERS_INSTANCE_NUMBER -function StopService"Su ogni server, verifica che tutti i servizi siano stati arrestati:
#
su - SID_LCadm -c "sapcontrol -nr ASCS_INSTANCE_NUMBER -function GetSystemInstanceList"#
su - SID_LCadm -c "sapcontrol -nr ERS_INSTANCE_NUMBER -function GetSystemInstanceList"Dovresti vedere un output simile al seguente esempio:
GetSystemInstanceList FAIL: NIECONN_REFUSED (Connection refused), NiRawConnect failed in plugin_fopen()
Disattivare il riavvio automatico del servizio in SAP
Poiché il software del cluster gestisce il riavvio dei servizi SAP durante un failover, per evitare conflitti, disattiva la possibilità del software SAP di riavviare automaticamente i servizi.
Su entrambi i nodi, modifica il file
/usr/sap/sapservices
per disattivare il riavvio automatico nel software SAP aggiungendo un carattere di commento,#
, all'inizio del comandosapstartsrv
sia per i componenti ASCS che per ERS.Ad esempio:
#!/bin/sh #LD_LIBRARY_PATH=/usr/sap/SID/ASCSASCS_INSTANCE_NUMBER/exe:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; /usr/sap/SID/ASCSASCS_INSTANCE_NUMBER/exe/sapstartsrv pf=/usr/sap/SID/SYS/profile/SID_ASCSASCS_INSTANCE_NUMBER_ASCS_VIRTUAL_HOST_NAME -D -u SID_LCadm #LD_LIBRARY_PATH=/usr/sap/SID/ERSERS_INSTANCE_NUMBER/exe:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; /usr/sap/SID/ERSERS_INSTANCE_NUMBER/exe/sapstartsrv pf=/usr/sap/SID/SYS/profile/SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME -D -u SID_LCadm
Modificare i profili ASCS ed ERS
Su entrambi i server, passa alla directory del profilo utilizzando uno dei seguenti comandi:
#
cd /usr/sap/SID/SYS/profile#
cd /sapmnt/SID/profileSe necessario, puoi trovare i nomi dei file dei profili ASCS e ERS elencando i file nella directory del profilo o utilizzando i seguenti formati:
SID_ASCSASCS_INSTANCE_NUMBER_ASCS_VIRTUAL_HOST_NAME
SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME
Se utilizzi ENSA1, attiva la funzione keepalive impostando quanto segue nel profilo ASCS:
enque/encni/set_so_keepalive = true
Per ulteriori informazioni, consulta la Nota SAP 1410736 - TCP/IP: impostazione dell'intervallo di keepalive.
Se necessario, modifica i profili ASCS ed ERS per modificare il comportamento di avvio del server di coda e del server di replica di coda.
ENSA1
Nella sezione "Avvia il server di coda SAP" del profilo ASCS, se visualizzi
Restart_Program_NN
, modifica "Restart
" in "Start
", come mostrato nell'esempio seguente.Start_Program_01 = local $(_EN) pf=$(_PF)
Nella sezione "Avvia il server di replica in coda" del profilo ERS, se visualizzi
Restart_Program_NN
, modifica "Restart
" in "Start
", come mostrato nell'esempio seguente.Start_Program_00 = local $(_ER) pf=$(_PFL) NR=$(SCSID)
ENSA2
Nella sezione "Avvia il server di coda SAP" del profilo ASCS, se visualizzi
Restart_Program_NN
, modifica "Restart
" in "Start
", come mostrato nell'esempio seguente.Start_Program_01 = local $(_ENQ) pf=$(_PF)
Nella sezione "Avvia replicatore in coda" del profilo ERS, se visualizzi
Restart_Program_NN
, modifica "Restart
" in "Start
", come mostrato nell'esempio seguente.Start_Program_00 = local $(_ENQR) pf=$(_PF) ...
Configura le risorse del cluster per ASCS ed ERS
Con accesso come utente root da uno dei server, imposta il cluster in modalità di manutenzione:
#
pcs property set maintenance-mode="true"Verifica che il cluster sia in modalità di manutenzione:
#
pcs statusCrea le risorse del cluster per i servizi ASCS ed ERS:
ENSA1
Crea la risorsa cluster per l'istanza ASCS. Il valore di
InstanceName
è il nome del profilo dell'istanza generato da SWPM quando hai installato ASCS.#
pcs resource create ASCS_INSTANCE_RESOURCE SAPInstance \ InstanceName=SID_ASCSASCS_INSTANCE_NUMBER_ASCS_VIRTUAL_HOST_NAME \ START_PROFILE=/sapmnt/SID/profile/SID_ASCSASCS_INSTANCE_NUMBER_ASCS_VIRTUAL_HOST_NAME \ AUTOMATIC_RECOVER=false meta resource-stickiness=5000 migration-threshold=1 \ failure-timeout=60 --group ASCS_RESOURCE_GROUP \ op monitor interval=20 on-fail=restart timeout=60 \ op start interval=0 timeout=600 \ op stop interval=0 timeout=600#
pcs resource meta ASCS_RESOURCE_GROUP resource-stickiness=3000Crea la risorsa cluster per l'istanza ERS. Il valore di
InstanceName
è il nome del profilo dell'istanza generato da SWPM quando hai installato ERS. Il parametroIS_ERS=true
indica a Pacemaker di impostare il flagrunsersSID
su1
sul nodo in cui è attivo il sistema ERS.#
pcs resource create ERS_INSTANCE_RESOURCE SAPInstance \ InstanceName=SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME \ START_PROFILE=/sapmnt/SID/profile/SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME \ AUTOMATIC_RECOVER=false IS_ERS=true --group ERS_RESOURCE_GROUP \ op monitor interval=20 on-fail=restart timeout=60 \ op start interval=0 timeout=600 \ op stop interval=0 timeout=600
ENSA2
Crea la risorsa cluster per l'istanza ASCS. Il valore di
InstanceName
è il nome del profilo dell'istanza generato da SWPM quando hai installato ASCS.#
pcs resource create ASCS_INSTANCE_RESOURCE SAPInstance \ InstanceName=SID_ASCSASCS_INSTANCE_NUMBER_ASCS_VIRTUAL_HOST_NAME \ START_PROFILE=/sapmnt/SID/profile/SID_ASCSASCS_INSTANCE_NUMBER_ASCS_VIRTUAL_HOST_NAME \ AUTOMATIC_RECOVER=false meta resource-stickiness=5000 \ --group ASCS_RESOURCE_GROUP \ op monitor interval=20 on-fail=restart timeout=60 \ op start interval=0 timeout=600 \ op stop interval=0 timeout=600#
pcs resource meta ASCS_RESOURCE_GROUP resource-stickiness=3000Crea la risorsa cluster per l'istanza ERS. Il valore di
InstanceName
è il nome del profilo dell'istanza generato da SWPM quando hai installato ERS.#
pcs resource create ERS_INSTANCE_RESOURCE SAPInstance \ InstanceName=SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME \ START_PROFILE=/sapmnt/SID/profile/SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME \ AUTOMATIC_RECOVER=false IS_ERS=true --group ERS_RESOURCE_GROUP \ op monitor interval=20 on-fail=restart timeout=60 \ op start interval=0 timeout=600 \ op stop interval=0 timeout=600
Configura i vincoli di posizione e di ordinamento
Creando vincoli, puoi definire quali servizi devono essere avviati per primi e quali devono essere eseguiti contemporaneamente sullo stesso host. Ad esempio, l'indirizzo IP deve trovarsi sullo stesso host dell'istanza SAP Central Services principale.
- Definisci la limitazione dell'ordine di inizio:
ENSA1
Crea un vincolo di co-locazione che impedisca alle risorse ASCS di funzionare sullo stesso server delle risorse ERS:
#
pcs constraint colocation add ERS_RESOURCE_GROUP with \ ASCS_RESOURCE_GROUP -5000Configura ASCS in modo che esegui il failover sul server su cui è in esecuzione ERS, come stabilito dal flag
runsersSID
uguale a1
:#
pcs constraint location ASCS_INSTANCE_RESOURCE \ rule score=2000 runs_ers_SID eq 1Configura ASCS in modo che venga avviato prima che ERS si trasferisca sull'altro server dopo un failover:
#
pcs constraint order start ASCS_RESOURCE_GROUP then \ stop ERS_RESOURCE_GROUP symmetrical=false kind=Optional
ENSA2
Crea un vincolo di co-locazione che impedisca alle risorse ASCS di funzionare sullo stesso server delle risorse ERS:
#
pcs constraint colocation add ERS_RESOURCE_GROUP with \ ASCS_RESOURCE_GROUP -5000Configura ASCS in modo che venga avviato prima che ERS si trasferisca sull'altro server dopo un failover:
#
pcs constraint order start ASCS_RESOURCE_GROUP then \ stop ERS_RESOURCE_GROUP symmetrical=false kind=Optional
Controlla i vincoli:
#
pcs constraintDovresti vedere un output simile al seguente:
Location Constraints: Resource: ascs-aha-instance Constraint: location-ascs-instance Rule: score=2000 Expression: runs_ers_HKN eq 1 Resource: fence-nw-ha-vm-1 Disabled on: nw-ha-vm-1 (score:-INFINITY) Resource: fence-nw-ha-vm-2 Disabled on: nw-ha-vm-2 (score:-INFINITY) Ordering Constraints: start ascs-group then stop ers-group (kind:Optional) (non-symmetrical) Colocation Constraints: ascs-group with ers-group (score:-5000) Ticket Constraints:
Con accesso come utente root da uno dei server, disattiva la modalità di manutenzione del cluster:
#
pcs property set maintenance-mode="false"
Configura il connettore del cluster Red Hat per SAP
Su ogni host del cluster, configura il servizio SAP Start sapstartsrv
per comunicare con il software del cluster pacemaker tramite l'interfaccia HA.
Aggiungi l'utente amministrativo SAP al gruppo
haclient
:usermod -a -G haclient SID_LCadm
Modifica i profili delle istanze SAP aggiungendo le seguenti righe alla fine di ogni profilo. I profili sono disponibili nella directory
/sapmnt/SID/profiles
.service/halib = $(DIR_CT_RUN)/saphascriptco.so service/halib_cluster_connector = /usr/bin/sap_cluster_connector
Se le risorse delle istanze ASCS ed ERS sono attualmente in esecuzione nel cluster, disattivale:
pcs resource disable ERS_INSTANCE_RESOURCE pcs resource disable ASCS_INSTANCE_RESOURCE
Arresta i servizi sull'host ASCS:
sapcontrol -nr ASCS_INSTANCE_NUMBER -function StopService
Interrompi i servizi sull'host ERS:
sapcontrol -nr ERS_INSTANCE_NUMBER -function StopService
Attiva le risorse:
pcs resource enable ERS_INSTANCE_RESOURCE pcs resource enable ASCS_INSTANCE_RESOURCE
Ripeti i passaggi precedenti su ogni host del cluster.
Per ulteriori informazioni di Red Hat, consulta Come configurare SAP halib
per le risorse SAPInstance
su RHEL 7 e 8.
Installa i server di database e di applicazioni su host esterni al cluster
In una configurazione ad alta disponibilità, ti consigliamo di installare i server database e di applicazioni su host diversi da quelli degli host ASCS ed ERS nel cluster.
Utilizzando host separati per ogni server, riduci la complessità, il rischio di un guasto che colpisce più server e puoi personalizzare le dimensioni di ogni Compute Engine in base a ogni tipo di server.
In questo modo puoi scegliere la dimensione della macchina certificata più appropriata, evitare errori e ridurre la complessità.
L'installazione dei server di database e di applicazioni non è trattata in questa guida.
Per informazioni sull'installazione dei server di database, consulta:
- SAP HANA su Google Cloud
- SAP ASE su Google Cloud
- SAP MaxDB su Google Cloud
- IBM Db2 per SAP su Google Cloud
Convalida e testa il cluster
Questa sezione mostra come eseguire i seguenti test:
- Verificare la presenza di errori di configurazione
- Verifica che le risorse ASCS ed ERS cambino server correttamente durante i failover
- Verifica che le serrature vengano conservate
- Simula un evento di manutenzione di Compute Engine per assicurarti che migrazione live non attivi un failover
Controlla la configurazione del cluster
Con accesso come utente root su uno dei server, controlla su quali nodi sono in esecuzione le risorse:
#
pcs statusNell'esempio seguente, le risorse ASCS vengono eseguite sul server
nw-ha-vm-2
e le risorse ERS vengono eseguite sul servernw-ha-vm-1
.Stack: corosync Current DC: nw-ha-vm-1 (version 1.1.23-1.el7_9.1-9acf116022) - partition with quorum Last updated: Wed Apr 13 05:21:21 2022 Last change: Wed Apr 13 05:21:18 2022 by hacluster via crmd on nw-ha-vm-2 2 nodes configured 10 resource instances configured Online: [ nw-ha-vm-1 nw-ha-vm-2 ] Full list of resources: fence-nw-ha-vm-1 (stonith:fence_gce): Started nw-ha-vm-2 fence-nw-ha-vm-2 (stonith:fence_gce): Started nw-ha-vm-1 Resource Group: ascs-group ascs-file-system (ocf::heartbeat:Filesystem): Started nw-ha-vm-2 ascs-vip (ocf::heartbeat:IPaddr2): Started nw-ha-vm-2 ascs-healthcheck (service:haproxy@AHAascs): Started nw-ha-vm-2 ascs-aha-instance (ocf::heartbeat:SAPInstance): Started nw-ha-vm-2 Resource Group: ers-group ers-file-system (ocf::heartbeat:Filesystem): Started nw-ha-vm-1 ers-vip (ocf::heartbeat:IPaddr2): Started nw-ha-vm-1 ers-healthcheck (service:haproxy@AHAers): Started nw-ha-vm-1 ers-aha-instance (ocf::heartbeat:SAPInstance): Started nw-ha-vm-1 Migration Summary: * Node nw-ha-vm-1: * Node nw-ha-vm-2:
Passa all'utente
SID_LCadm
:#
su - SID_LCadmControlla la configurazione del cluster. Per
INSTANCE_NUMBER
, specifica il numero di istanza dell'istanza ASCS o ERS attiva sul server in cui stai inserendo il comando:>
sapcontrol -nr INSTANCE_NUMBER -function HAGetFailoverConfigHAActive
deve essereTRUE
, come mostrato nell'esempio seguente:HAGetFailoverConfig 14.04.2022 17:25:45 HAGetFailoverConfig OK HAActive: TRUE HAProductVersion: Pacemaker HASAPInterfaceVersion: sap_cluster_connector HADocumentation: https://github.com/ClusterLabs/sap_cluster_connector HAActiveNode: HANodes:
Come
SID_LCadm
, controlla se sono presenti errori nella configurazione:>
sapcontrol -nr INSTANCE_NUMBER -function HACheckConfigDovresti vedere un output simile al seguente esempio:
14.04.2022 21:43:39 HACheckConfig OK state, category, description, comment SUCCESS, SAP CONFIGURATION, Redundant ABAP instance configuration, 0 ABAP instances detected SUCCESS, SAP CONFIGURATION, Enqueue separation, All Enqueue server separated from application server SUCCESS, SAP CONFIGURATION, MessageServer separation, All MessageServer separated from application server SUCCESS, SAP STATE, SCS instance running, SCS instance status ok SUCCESS, SAP CONFIGURATION, SAPInstance RA sufficient version (vip-ascs_NWT_00), SAPInstance includes is-ers patch SUCCESS, SAP CONFIGURATION, Enqueue replication (vip-ascs_NWT_00), Enqueue replication enabled SUCCESS, SAP STATE, Enqueue replication state (vip-ascs_NWT_00), Enqueue replication active SUCCESS, SAP CONFIGURATION, SAPInstance RA sufficient version (vip-ers_NWT_10), SAPInstance includes is-ers patch
Sul server in cui ASCS è attivo, come
SID_LCadm
, simula un failover:>
sapcontrol -nr ASCS_INSTANCE_NUMBER -function HAFailoverToNode ""Come utente root, se segui il failover utilizzando
crm_mon
, dovresti vedere ASCS spostarsi sull'altro server, ERS arrestarsi su quel server e poi ERS spostarsi sul server su cui era in esecuzione ASCS.
Simulare un 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.
Puoi simulare un errore in diversi modi, ad esempio:
shutdown -r
(sul nodo attivo)ip link set eth0 down
echo c > /proc/sysrq-trigger
Queste istruzioni utilizzano ip link set eth0 down
per mettere offline l'interfaccia di rete, in quanto convalidano sia il failover sia il fencing.
Esegui il backup del sistema.
Con accesso come utente root sull'host con l'istanza SCS attiva, metti offline l'interfaccia di rete:
$
ip link set eth0 downRiconnettiti a uno degli host utilizzando SSH e passa all'utente root.
Inserisci
pcs 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: nw-ha-vm-1 (version 1.1.23-1.el7_9.1-9acf116022) - partition with quorum Last updated: Wed Apr 13 05:21:21 2022 Last change: Wed Apr 13 05:21:18 2022 by hacluster via crmd on nw-ha-vm-2 2 nodes configured 10 resource instances configured Online: [ nw-ha-vm-1 nw-ha-vm-2 ] Full list of resources: fence-nw-ha-vm-1 (stonith:fence_gce): Started nw-ha-vm-2 fence-nw-ha-vm-2 (stonith:fence_gce): Started nw-ha-vm-1 Resource Group: ascs-group ascs-file-system (ocf::heartbeat:Filesystem): Started nw-ha-vm-1 ascs-vip (ocf::heartbeat:IPaddr2): Started nw-ha-vm-1 ascs-healthcheck (service:haproxy@AHAascs): Started nw-ha-vm-1 ascs-aha-instance (ocf::heartbeat:SAPInstance): Started nw-ha-vm-1 Resource Group: ers-group ers-file-system (ocf::heartbeat:Filesystem): Started nw-ha-vm-2 ers-vip (ocf::heartbeat:IPaddr2): Started nw-ha-vm-2 ers-healthcheck (service:haproxy@AHAers): Started nw-ha-vm-2 ers-aha-instance (ocf::heartbeat:SAPInstance): Started nw-ha-vm-2 Migration Summary: * Node nw-ha-vm-1: * Node nw-ha-vm-2:
Verificare che le voci di blocco vengano conservate
Per verificare che le voci di blocco vengano conservate durante un failover, seleziona prima la scheda relativa alla tua versione di Enqueue Server e segui la procedura per generare le voci di blocco, simula un failover e verifica che le voci di blocco vengano conservate dopo che ASCS è stato riattivato.
ENSA1
Come
SID_LCadm
, sul server in cui è attivo ERS, genera voci di blocco utilizzando il programmaenqt
:>
enqt pf=/PATH_TO_PROFILE/SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME 11 NUMBER_OF_LOCKSCome
SID_LCadm
, sul server in cui è attivo ASCS, verifica che le voci di blocco siano registrate:>
sapcontrol -nr ASCS_INSTANCE_NUMBER -function EnqGetStatistic | grep locks_nowSe hai creato 10 blocchi, dovresti vedere un output simile all'esempio riportato di seguito:
locks_now: 10
Come
SID_LCadm
, sul server in cui è attivo ERS, avvia la funzione di monitoraggioOpCode=20
del programmaenqt
:>
enqt pf=/PATH_TO_PROFILE/SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME 20 1 1 9999Ad esempio:
>
enqt pf=/sapmnt/AHA/profile/AHA_ERS10_vh-ers-aha 20 1 1 9999Se ASCS è attivo, riavvia il server.
Sul server di monitoraggio, quando Pacemaker interrompe ERS per spostarlo sull'altro server, dovresti vedere un output simile al seguente.
Number of selected entries: 10 Number of selected entries: 10 Number of selected entries: 10 Number of selected entries: 10 Number of selected entries: 10
Quando il monitoraggio di
enqt
si interrompe, esci dal monitoraggio inserendoCtrl + c
.Se vuoi, come utente root su uno dei server, monitora il failover del cluster:
#
crm_monIn qualità di
SID_LCadm
, dopo aver verificato che le serrature sono state trattene, rilasciale:>
enqt pf=/PATH_TO_PROFILE/SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME 12 NUMBER_OF_LOCKSCome
SID_LCadm
, sul server in cui è attivo ASCS, verifica che le voci di blocco siano state rimosse:>
sapcontrol -nr ASCS_INSTANCE_NUMBER -function EnqGetStatistic | grep locks_now
ENSA2
Come
SID_LCadm
, sul server in cui ASCS è attivo, genera voci di blocco utilizzando il programmaenq_adm
:>
enq_admin --set_locks=NUMBER_OF_LOCKS:X:DIAG::TAB:%u pf=/PATH_TO_PROFILE/SID_ASCSASCS_INSTANCE_NUMBER_ASCS_VIRTUAL_HOST_NAMECome
SID_LCadm
, sul server in cui è attivo ASCS, verifica che le voci di blocco siano registrate:>
sapcontrol -nr ASCS_INSTANCE_NUMBER -function EnqGetStatistic | grep locks_nowSe hai creato 10 blocchi, dovresti vedere un output simile all'esempio riportato di seguito:
locks_now: 10
Se ERS è attivo, verifica che le voci di blocco siano state replicate:
>
sapcontrol -nr ERS_INSTANCE_NUMBER -function EnqGetStatistic | grep locks_nowIl numero di blocchi restituiti deve essere lo stesso dell'istanza ASCS.
Se ASCS è attivo, riavvia il server.
Se vuoi, come utente root su uno dei server, monitora il failover del cluster:
#
crm_monCome
SID_LCadm
, sul server su cui è stato riavviato ASCS, verifica che le voci di blocco siano state conservate:>
sapcontrol -nr ASCS_INSTANCE_NUMBER -function EnqGetStatistic | grep locks_nowCome
SID_LCadm
, sul server in cui è attivo ERS, dopo aver verificato che le serrature sono state conservate, liberale:>
enq_admin --release_locks=NUMBER_OF_LOCKS:X:DIAG::TAB:%u pf=/PATH_TO_PROFILE/SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAMECome
SID_LCadm
, sul server in cui è attivo ASCS, verifica che le voci di blocco siano state rimosse:>
sapcontrol -nr ASCS_INSTANCE_NUMBER -function EnqGetStatistic | grep locks_nowDovresti vedere un output simile all'esempio riportato di seguito:
locks_now: 0
Simulare un evento di manutenzione Compute Engine
Simula un evento di manutenzione di Compute Engine per assicurarti che la migrazione live non attivi un failover.
I valori di timeout e intervallo utilizzati in queste istruzioni tengono conto della durata delle migrazioni in tempo reale. Se utilizzi valori più brevi nella configurazione del cluster, il rischio che migrazione live possa attivare un failover è maggiore.
Per testare la tolleranza del cluster per migrazione live:
Sul nodo principale, attiva un evento di manutenzione simulato utilizzando il seguente comando gcloud CLI:
$
gcloud compute instances simulate-maintenance-event PRIMARY_VM_NAMEVerifica che il nodo principale non cambi:
$
pcs status
Valutare il carico di lavoro SAP NetWeaver
Per automatizzare i controlli di convalida continua per i carichi di lavoro SAP NetWeaver con disponibilità elevata in esecuzione su Google Cloud, puoi utilizzare Workload Manager.
Workload Manager consente di eseguire automaticamente la scansione e la valutazione dei carichi di lavoro SAP NetWeaver con disponibilità elevata 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 NetWeaver con disponibilità elevata 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 NetWeaver, consulta la sezione Risoluzione dei problemi relativi alle configurazioni ad alta disponibilità per SAP.
Raccogliere informazioni diagnostiche per i cluster ad alta disponibilità di SAP NetWeaver
Se hai bisogno di aiuto per risolvere un problema con i cluster ad alta disponibilità per SAP NetWeaver, raccogli le informazioni di diagnostica necessarie e contatta l'assistenza clienti Google Cloud.
Per raccogliere le informazioni di diagnostica, consulta Informazioni di diagnostica sui cluster ad alta disponibilità su RHEL.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:
- Ricevere assistenza per SAP su Google Cloud
- Nota SAP 2456406 - SAP su Google Cloud Platform: prerequisiti per l'assistenza (è richiesto un account utente SAP)
Eseguire le attività di post-deployment
Prima di utilizzare il sistema SAP NetWeaver, ti consigliamo di eseguire il backup del nuovo sistema SAP NetWeaver HA.
Per ulteriori informazioni, consulta la Guida alle operazioni di SAP NetWeaver.
Passaggi successivi
Per ulteriori informazioni su disponibilità elevata, SAP NetWeaver e Google Cloud, consulta le seguenti risorse:
Guida alla pianificazione della disponibilità elevata per SAP NetWeaver su Google Cloud
Per ulteriori informazioni sull'amministrazione e sul monitoraggio delle VM, consulta la Guida alle operazioni di SAP NetWeaver.