Questa guida illustra come eseguire il deployment e configurare un cluster ad alta disponibilità (HA) SUSE Linux Enterprise Server (SLES) ottimizzato per le prestazioni per il sistema SAP NetWeaver.
Questa guida illustra i passaggi per:- Configurazione di un bilanciatore del carico di rete passthrough interno per reinstradare il traffico in caso di errore
- La configurazione di un cluster Pacemaker su SLES per gestire i sistemi SAP e altre risorse durante un failover
Questa guida include anche i passaggi per configurare il sistema SAP NetWeaver per l'alta disponibilità, ma fai riferimento alla documentazione SAP per le istruzioni definitive.
Per informazioni sul deployment delle VM di Compute Engine per SAP NetWeaver che non sono specifiche per l'alta disponibilità, consulta la guida al deployment di SAP NetWeaver specifica per il tuo sistema operativo.
Per configurare un cluster ad alta disponibilità per SAP HANA su Red Hat Enterprise Linux (RHEL), consulta la guida alla configurazione manuale dei cluster ad alta disponibilità per SAP NetWeaver su RHEL.
Questa guida è destinata agli utenti avanzati di SAP NetWeaver che hanno familiarità con le configurazioni Linux ad alta disponibilità per SAP NetWeaver.
Il sistema implementato da questa guida
Seguendo questa guida, eseguirai il deployment di due istanze SAP NetWeaver e configurerai un cluster ad alta disponibilità su SLES. Esegui il deployment di ogni istanza SAP NetWeaver su una VM di Compute Engine in una zona diversa all'interno della stessa regione. Un'installazione ad alta disponibilità del database sottostante non è trattata in questa guida.
Il cluster di cui è stato eseguito il deployment include le seguenti funzioni e caratteristiche:
- Due VM host, una per l'istanza ASCS attiva e una per l'istanza attiva del replicatore di accodamento ENSA2 o del server di replica di accodamento ENSA1 (ENSA1). Entrambe le istanze ENSA2 e ENSA1 sono chiamate ERS.
- Gestore delle risorse del cluster ad alta disponibilità Pacemaker.
- Un meccanismo di scherma STONITH.
- Riavvio automatico dell'istanza non riuscita come nuova istanza secondaria.
Per utilizzare Terraform per automatizzare il deployment di sistemi SAP NetWeaver ad alta disponibilità, consulta Terraform: guida alla configurazione dei cluster ad alta disponibilità per SAP NetWeaver su SLES.
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 dell'alta disponibilità 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 Creazione di un progetto nella Guida al deployment di SAP NetWeaver per Linux.
- Se richiedi l'esecuzione del carico di lavoro SAP in conformità con i requisiti di residenza dei dati, controllo dell'accesso, personale di assistenza o normativi, devi creare la cartella Assured Workloads richiesta. Per ulteriori informazioni, consulta la pagina Conformità e controlli di sovranità per SAP su Google Cloud.
Se utilizzi DNS interno VPC, il valore della variabile
vmDnsSetting
nei metadati di progetto deve essereGlobalOnly
oZonalPreferred
per abilitare la risoluzione dei nomi dei nodi tra le zone. L'impostazione predefinita divmDnsSetting
èZonalOnly
. Per ulteriori informazioni, consulta:Hai configurato una condivisione file utilizzando una soluzione di archiviazione file condivisa NFS, come Filestore Enterprise.
Se OS Login è abilitato nei metadati di progetto, devi disattivarlo temporaneamente fino al completamento del deployment. Ai fini del deployment, questa procedura configura le chiavi SSH nei metadati dell'istanza. Quando l'accesso al sistema operativo è abilitato, le configurazioni delle chiavi SSH basate su metadati vengono disabilitate e questo deployment non riesce. Al termine del deployment, puoi abilitare di nuovo OS Login.
Per ulteriori informazioni, consulta:
Informazioni correlate da SUSE
Ad eccezione di dove richiesto per l'ambiente Google Cloud, le informazioni contenute in questa guida sono coerenti con le seguenti guide correlate di SUSE:
- SAP NetWeaver Accodamento Replication 1 Cluster ad alta disponibilità - Guida alla configurazione di SAP NetWeaver 7.40 e 7.50 | SUSE Linux Enterprise Server per applicazioni SAP 12
- SAP NetWeaver Accodamento Replication 1 Cluster ad alta disponibilità - Guida alla configurazione di SAP NetWeaver 7.40 e 7.50 | SUSE Linux Enterprise Server per applicazioni SAP 15
- SAP S/4 HANA - Cluster ad alta disponibilità della replica in coda 2 - Guida alla configurazione | SUSE Linux Enterprise Server per applicazioni SAP 12
- SAP S/4 HANA - Cluster ad alta disponibilità della replica in coda 2 - Guida alla configurazione | SUSE Linux Enterprise Server per applicazioni SAP 15
Creare una rete
Per motivi di sicurezza, crea una nuova rete. Puoi controllare chi ha accesso aggiungendo regole firewall o utilizzando un altro metodo di controllo dell'accesso.
Se il progetto ha una rete VPC predefinita, non utilizzarla. Crea invece la tua rete VPC in modo che le uniche regole firewall in vigore siano quelle create in modo esplicito.
Durante il deployment, le istanze VM in genere richiedono l'accesso a internet per scaricare l'agente di Google Cloud per SAP. Se utilizzi una delle immagini Linux certificate SAP disponibili su Google Cloud, l'istanza VM richiede anche l'accesso a internet per registrare la licenza e accedere ai repository dei fornitori di sistemi operativi. Questo accesso è supportato da una configurazione con un gateway NAT e tag di rete VM, anche se le VM di destinazione non hanno IP esterni.
Per configurare il networking:
Console
- Nella console Google Cloud, vai alla pagina Reti VPC.
- Fai clic su Crea rete VPC.
- Inserisci un nome per la rete.
Il nome deve rispettare la convenzione di denominazione. Le reti VPC utilizzano la convenzione di denominazione di Compute Engine.
- In Modalità di creazione subnet, scegli Personalizzata.
- Nella sezione Nuova subnet, specifica i seguenti parametri di configurazione per una
subnet:
- Inserisci un nome per la subnet.
- In Regione, seleziona la regione di Compute Engine in cui vuoi creare la subnet.
- Per Tipo di stack IP, seleziona IPv4 (stack singolo) e inserisci un intervallo di indirizzi IP nel formato CIDR, ad esempio
10.1.0.0/24
.Questo è l'intervallo IPv4 principale per la subnet. Se prevedi di aggiungere più di una subnet, assegna intervalli IP CIDR non sovrapposti per ogni subnet nella rete. Tieni presente che ogni subnet e i relativi intervalli IP interni sono mappati a una singola regione.
- Fai clic su Fine.
- Per aggiungere altre subnet, fai clic su Aggiungi subnet e ripeti i passaggi precedenti. Puoi aggiungere altre subnet alla rete dopo aver creato la rete.
- Fai clic su Crea.
gcloud
- Vai a Cloud Shell.
- Per creare una nuova rete in modalità subnet personalizzate, esegui:
gcloud compute networks create NETWORK_NAME --subnet-mode custom
Sostituisci
NETWORK_NAME
con il nome della nuova rete. Il nome deve rispettare la convenzione di denominazione. Le reti VPC utilizzano la convenzione di denominazione di Compute Engine.Specifica
--subnet-mode custom
per evitare di utilizzare la modalità automatica predefinita, che crea automaticamente una subnet in ogni regione di Compute Engine. Per maggiori informazioni, vedi Modalità di creazione subnet. - Crea una subnet e specifica la regione e l'intervallo IP:
gcloud compute networks subnets create SUBNETWORK_NAME \ --network NETWORK_NAME --region REGION --range RANGE
Sostituisci quanto segue:
SUBNETWORK_NAME
: il nome della nuova subnetNETWORK_NAME
: il nome della rete che hai creato nel passaggio precedenteREGION
: la regione in cui vuoi la subnetRANGE
: l'intervallo di indirizzi IP, specificato in formato CIDR, ad esempio10.1.0.0/24
Se prevedi di aggiungere più di una subnet, assegna intervalli IP CIDR non sovrapposti per ogni subnet nella rete. Tieni presente che ogni subnet e i relativi intervalli IP interni sono mappati a una singola regione.
- Se vuoi, ripeti il passaggio precedente e aggiungi altre subnet.
Configurazione di un gateway NAT
Se devi creare una o più VM senza indirizzi IP pubblici, devi utilizzare Network Address Translation (NAT) per consentire alle VM di accedere a internet. Utilizza Cloud NAT, un servizio gestito distribuito e software-defined di Google Cloud, che consente alle VM di inviare pacchetti in uscita a internet e ricevere tutti i pacchetti di risposta in entrata stabiliti corrispondenti. In alternativa, puoi configurare una VM separata come gateway NAT.
Per creare un'istanza Cloud NAT per il tuo progetto, consulta Utilizzo di Cloud NAT.
Dopo aver configurato Cloud NAT per il tuo progetto, le istanze VM possono accedere in modo sicuro a internet senza un indirizzo IP pubblico.
aggiungi regole firewall
Per impostazione predefinita, le connessioni in entrata dall'esterno della rete Google Cloud sono bloccate. Per consentire le connessioni in entrata, configura una regola firewall per la VM. Le regole firewall regolano solo le nuove connessioni in entrata a una VM. Dopo aver stabilito una connessione con una VM, il traffico viene consentito in entrambe le direzioni su questa connessione.
Puoi creare una regola firewall per consentire l'accesso a porte specifiche o per consentire l'accesso tra VM nella stessa subnet.
Crea regole firewall per consentire l'accesso a:
- Le porte predefinite utilizzate da SAP NetWeaver, come documentato in Porte TCP/IP di tutti i prodotti SAP.
- Connessioni dal computer o dall'ambiente di rete aziendale alla tua istanza VM di Compute Engine. Se hai dubbi in merito all'indirizzo IP da usare, rivolgiti all'amministratore di rete della tua azienda.
- Comunicazione tra le VM in una configurazione a 3 livelli, con scale out o ad alta disponibilità. Ad esempio, se esegui il deployment di un sistema a 3 livelli, avrai almeno due VM nella tua subnet: la VM per SAP NetWeaver e un'altra VM per il server di database. Per abilitare la comunicazione tra le due VM, devi creare una regola firewall per consentire il traffico proveniente dalla subnet.
- Controlli di integrità di Cloud Load Balancing. Per maggiori informazioni, 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 di origine, seleziona una delle seguenti opzioni:
- Intervalli IP per consentire il traffico in entrata da indirizzi IP specifici. Specifica l'intervallo di indirizzi IP nel campo Intervalli IP di origine.
- Subnet per consentire il traffico in entrata da una determinata subnet. Specifica il nome della subnet nel seguente campo delle subnet. Puoi utilizzare questa opzione per consentire l'accesso tra le VM in una configurazione a 3 livelli o con scale out.
- Nella sezione Protocolli e porte, seleziona Protocolli e porte specificati e 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à, devi definire ed eseguire il deployment delle istanze VM che verranno utilizzate come nodi primari e secondari nel cluster ad alta disponibilità.
Per definire ed eseguire il deployment delle VM, utilizza lo stesso modello di Cloud Deployment Manager utilizzato 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 al file di configurazione la definizione della seconda VM copiandola e incollandola. Dopo aver creato la seconda definizione, devi modificare i nomi delle risorse e delle istanze nella seconda definizione. Per evitare un errore a livello di zona, specifica una zona diversa nella stessa regione. Tutti gli altri valori di proprietà nelle due definizioni rimangono invariati.
Una volta eseguito il deployment delle VM, devi installare SAP NetWeaver e definire e configurare il cluster ad alta disponibilità.
Le seguenti istruzioni utilizzano Cloud Shell, ma sono generalmente applicabili a Google Cloud CLI.
Apri Cloud Shell.
Scarica il modello del file di configurazione YAML,
template.yaml
, nella tua directory di lavoro:wget https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_nw/template.yaml
Facoltativamente, rinomina il file
template.yaml
per identificare la configurazione che definisce. Ad esempio,nw-ha-sles15sp3.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 Cloud Shell per avviare l'editor.
Nel modello del file di configurazione YAML, definisci la prima istanza VM. Definirai la seconda istanza VM nel passaggio successivo dopo la tabella seguente.
Specifica i valori delle proprietà sostituendo le parentesi e i relativi contenuti con i valori relativi alla tua installazione. Le proprietà sono descritte nella tabella seguente. Per un esempio di un file di configurazione completato, vedi Esempio di un file di configurazione YAML completo.
Proprietà Tipo di dati Descrizione name
String Un nome arbitrario che identifica la risorsa di deployment definita dal seguente insieme di proprietà. type
String Specifica la località, il tipo e la versione del modello di Deployment Manager da utilizzare durante il deployment.
Il file YAML include due specifiche
type
, una delle quali è commentata. La specificatype
attiva per impostazione predefinita specifica la versione del modello comelatest
. La specificatype
che viene commentata specifica una versione specifica del modello con un timestamp.Se vuoi che tutti i tuoi deployment utilizzino la stessa versione del modello, usa la specifica
type
che include il timestamp.instanceName
String Il nome dell'istanza VM che stai definendo. Specifica nomi diversi nelle definizioni della VM primaria e secondaria. Valuta la possibilità di utilizzare nomi che identificano le istanze come appartenenti allo stesso cluster ad alta disponibilità. I nomi delle istanze devono contenere al massimo 13 caratteri ed essere specificati in lettere minuscole, numeri o trattini. Utilizza un nome univoco all'interno del progetto.
instanceType
String Il tipo di VM di Compute Engine di cui hai bisogno. Specifica lo stesso tipo di istanza per la VM principale e quella secondaria. Se hai bisogno di un tipo di VM personalizzata, specifica un tipo di VM predefinito di piccole dimensioni e, al termine del deployment, personalizza la VM in base alle tue esigenze.
zone
String La zona Google Cloud in cui eseguire il deployment dell'istanza VM che stai definendo. Specifica zone diverse nella stessa regione per le definizioni della VM principale e secondaria. Le zone devono trovarsi nella stessa regione selezionata per la subnet. subnetwork
String Il nome della subnet che hai creato in un passaggio precedente. Se esegui il deployment in un VPC condiviso, specifica questo valore come SHAREDVPC_PROJECT/SUBNETWORK
. Ad esempio,myproject/network1
.linuxImage
String Il nome dell'immagine o della famiglia di immagini del sistema operativo Linux che utilizzi con SAP NetWeaver. Per specificare una famiglia di immagini, aggiungi il prefisso family/
al cognome. Ad esempio,family/sles-15-sp3-sap
. Per l'elenco delle famiglie di immagini disponibili, consulta la pagina Immagini nella console Google Cloud.linuxImageProject
String Il progetto Google Cloud che contiene l'immagine che utilizzerai. Questo progetto potrebbe essere tuo o il progetto immagine Google Cloud suse-sap-cloud
. Per un elenco dei progetti immagine di Google Cloud, consulta la pagina Immagini nella documentazione di Compute Engine.usrsapSize
Integer Le dimensioni del disco /usr/sap
. La dimensione minima è 8 GB.sapmntSize
Integer Le dimensioni del disco /sapmnt
. La dimensione minima è 8 GB.swapSize
Integer La dimensione del volume di scambio. La dimensione minima è 1 GB. networkTag
String Facoltativo. Uno o più tag di rete separati da virgole che rappresentano l'istanza VM ai fini del firewall o del 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à di 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
String 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 l'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 un indirizzo IP pubblico viene aggiunto alla tua istanza VM. Il valore predefinito è Yes
.sap_deployment_debug
Booleano Facoltativo. Se questo valore è impostato su Yes
, il deployment genera log di deployment dettagliati. Non attivare questa impostazione a meno che un tecnico del servizio di assistenza Google non ti chieda di abilitare il debug.Nel file di configurazione YAML, crea la definizione della seconda VM copiando la definizione della prima VM e incollandola dopo la prima. Per un esempio, consulta Esempio di file di configurazione YAML completo.
Nella definizione della seconda VM, specifica valori diversi per le proprietà seguenti 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 tuo 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 proprio stato in Cloud Logging.
Esempio di un 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 ad alta disponibilità per SAP NetWeaver utilizzando la versione più recente dei modelli di Deployment Manager. Nell'esempio vengono omessi i commenti contenuti nel modello quando viene scaricato per la prima volta.
Il file contiene le definizioni di due risorse di cui eseguire il deployment:
sap_nw_node_1
e sap_nw_node_2
. Ogni definizione di risorsa contiene
le definizioni di una VM.
La definizione della risorsa sap_nw_node_2
è stata creata copiando e incollando
la prima definizione, poi modificando i valori delle proprietà name
,
instanceName
e zone
. Tutti gli altri valori delle proprietà
nelle due definizioni della risorsa sono uguali.
Le proprietà networkTag
e serviceAccount
provengono dalla sezione Opzioni
avanzate del modello di 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/sles-15-sp3-sap linuxImageProject: suse-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/sles-15-sp3-sap linuxImageProject: suse-sap-cloud usrsapSize: 15 sapmntSize: 15 swapSize: 24 networkTag: cluster-ntwk-tag,allow-health-check serviceAccount: limited-roles@example-project-123456.iam.gserviceaccount.com
Crea regole firewall che consentano l'accesso alle VM host
Se non lo hai già fatto, crea regole firewall che consentano l'accesso a ogni VM host dalle seguenti origini:
- Ai fini della configurazione, la tua workstation locale, un bastion host o un jump server
- Per l'accesso tra i nodi del cluster, le altre VM host nel cluster ad alta disponibilità
- 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 definiti nel file di configurazione template.yaml
per designare le VM host come target della regola.
Per verificare il deployment, definisci una regola per consentire le connessioni SSH sulla porta 22 da un bastion host o dalla tua workstation locale.
Per l'accesso tra i nodi del cluster, aggiungi una regola firewall che consenta tutti i tipi di connessioni su qualsiasi porta da altre VM nella stessa subnet.
Assicurati che le regole firewall per la verifica del deployment e per la comunicazione intra-cluster vengano create prima di passare alla sezione successiva. Per le istruzioni, consulta Aggiungere regole firewall.
Verifica del deployment delle VM
Prima di installare SAP NetWeaver o di iniziare a configurare il cluster ad alta disponibilità, verifica che il deployment delle VM sia stato eseguito correttamente controllando i log e il mapping 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.
Nel menu a discesa Risorsa, seleziona Globale, quindi fai clic su Aggiungi.
Se non vedi l'opzione Globale, inserisci la query seguente nell'editor di query:
resource.type="global" "Deployment"
Fai clic su Esegui query.
Visualizzatore log legacy
- Nella pagina Visualizzatore log legacy, dal menu del selettore di base, seleziona Globale come risorsa di logging.
Analizza i log filtrati:
- Se viene visualizzato
"--- Finished"
, l'elaborazione del deployment è completa e puoi passare al passaggio successivo. Se visualizzi un errore di quota:
Nella pagina Quote di IAM e amministrazione, aumenta le quote che non soddisfano i requisiti 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 ciascuna istanza VM facendo clic sul pulsante SSH sulla voce di ogni istanza VM oppure puoi utilizzare il tuo metodo SSH preferito.
- Se non l'hai ancora fatto, crea una regola firewall per consentire una connessione SSH sulla porta
Visualizza il file system:
~>
df -hAssicurati che venga visualizzato 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/0
Verifica 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 pulire le VM e i dischi permanenti dall'installazione non riuscita.
- Esegui di nuovo il deployment.
Aggiorna Google Cloud CLI
Il modello Deployment Manager ha installato Google Cloud CLII sulle VM durante il deployment. Aggiorna gcloud CLI per assicurarti che includa tutti gli aggiornamenti più recenti.
Accedi tramite SSH alla VM principale.
Aggiorna gcloud CLI:
~>
sudo gcloud components updateSegui le istruzioni.
Ripeti i passaggi sulla VM secondaria.
Abilita la comunicazione back-end del bilanciatore del carico tra le VM
Dopo aver confermato che il deployment delle VM è stato eseguito correttamente, abilita la comunicazione backend tra le VM che verranno utilizzate come nodi nel cluster ad alta disponibilità.
Puoi abilitare la comunicazione backend tra le VM modificando la
configurazione dell'google-guest-agent
, che è incluso nell'ambiente guest Linux
per tutte le immagini pubbliche Linux fornite da Google Cloud.
Per abilitare le comunicazioni back-end del bilanciatore del carico, segui questi passaggi su ogni VM che fa parte del tuo cluster:
Interrompi l'agente:
sudo service google-guest-agent stop
Apri o crea il file
/etc/default/instance_configs.cfg
per la modifica. 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, creale. 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 di agente ospite:
sudo service google-guest-agent start
La configurazione del controllo di integrità del bilanciatore del carico richiede sia una porta di destinazione di ascolto per il controllo di integrità sia l'assegnazione dell'IP virtuale a un'interfaccia. Per saperne di più, consulta Testare la configurazione del bilanciatore del carico.
Configura le chiavi SSH sulla VM principale e su quella secondaria
Per consentire la copia dei file tra gli host nel cluster ad alta disponibilità, i passaggi di questa sezione creano connessioni SSH radice 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.
È probabile che la tua organizzazione abbia stabilito linee guida che disciplinano le comunicazioni di rete interne. 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 più piccoli attraverso la tua workstation locale utilizzando le opzioni dei menu Carica file e Scarica file di Cloud Shell. Vedi Gestire i file con Cloud Shell.
- Scambiare file utilizzando un bucket Cloud Storage. Vedi Caricamenti e download.
- Usa una soluzione di archiviazione file come Filestore o NetApp Cloud Volumes Service per creare una cartella condivisa. Vedi Soluzioni per la condivisione di file.
Per abilitare le connessioni SSH tra le istanze principali e secondarie, segui questi passaggi. I passaggi presuppongono che utilizzi la chiave SSH generata dai modelli di Deployment Manager per SAP.
Sulla VM host principale:
Connettiti alla VM tramite SSH.
Passa alla directory principale:
$
sudo su -Verifica che la chiave SSH esista:
#
ls -l /root/.ssh/Dovresti vedere i file 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 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
Sulla VM host secondaria:
Accedi tramite SSH alla VM.
Passa alla directory principale:
$
sudo su -Verifica che la chiave SSH esista:
#
ls -l /root/.ssh/Dovresti vedere i file 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 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
Imposta l'archiviazione condivisa dei file e configura le directory condivise
Devi configurare una soluzione di condivisione file NFS che fornisca spazio di archiviazione condiviso ad alta disponibilità a cui possono accedere entrambi i nodi del tuo cluster ad alta disponibilità. Quindi, puoi creare directory su entrambi i nodi che vengono mappate allo spazio di archiviazione dei file condiviso. Il software cluster garantisce che le directory appropriate siano montate solo sulle istanze corrette.
La configurazione di una soluzione di condivisione file non è trattata in questa guida. Per istruzioni su come configurare il sistema di condivisione 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 informazioni su come creare un'istanza Filestore, consulta Creazione di istanze.
Per informazioni sulle soluzioni di condivisione file disponibili su Google Cloud, vedi Opzioni di archiviazione condivisa per sistemi SAP ad alta disponibilità su Google Cloud.
Per configurare le directory condivise:
Se non hai già configurato una soluzione di archiviazione file condivisa NFS ad alta disponibilità, fallo ora.
Monta l'archiviazione condivisa 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 soluzione di condivisione file NFS. Ad esempio,10.49.153.26:/nfs_share_nw_ha
.Da entrambi i server, crea le directory per
sapmnt
, la directory centrale di trasporto e la directory specifica dell'istanza. Se utilizzi uno stack Java, sostituisci "ASCS" con "SCS" prima di utilizzare i seguenti e qualsiasi altro comando di esempio:~>
sudo mkdir /mnt/nfs/sapmntSID~>
sudo mkdir /mnt/nfs/usrsap{trans,SIDASCSASCS_INSTANCE_NUMBER,SIDERSERS_INSTANCE_NUMBER}Sostituisci quanto segue:
SID
: l'ID sistema SAP (SID). Utilizza 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_NUMBERConfigura
autofs
per montare le directory comuni dei file condivisi al primo accesso alle directory dei file. Il montaggio delle directoryASCSASCS_INSTANCE_NUMBER
eERSERS_INSTANCE_NUMBER
è gestito dal software del cluster, che configurerai in un passaggio successivo.Modifica le opzioni NFS nei comandi in base alle esigenze della tua soluzione di condivisione file.
Configura
autofs
su entrambi i server:~>
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 ulteriori informazioni su
autofs
, consulta l'articolo Autofs - Come funziona.Avvia il servizio
autofs
su entrambi i server:~>
sudo systemctl enable autofs~>
sudo systemctl restart autofs~>
sudo automount -vAttiva
autofs
per montare le directory condivise accedendo a ciascuna directory con il comandocd
. Ad esempio:~>
cd /sapmnt/SID~>
cd /usr/sap/transDopo 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 per la condivisione file NFS. Ad esempio,nfs_share_nw_ha
.Dovresti vedere punti di montaggio e directory simili a quanto segue:
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
Configurare il supporto per il failover di Cloud Load Balancing
Il servizio bilanciatore del carico di rete passthrough interno con supporto del failover instrada il traffico ASCS ed ERS alle istanze attive di ciascuna 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à, puoi creare due VIP, a volte chiamati indirizzi IP fluttuanti. Un VIP segue l'istanza di SAP Central Services (SCS) attiva e l'altro segue l'istanza ERS (Enqueue Replication Server). 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 il VIP dell'ERS. Per ASCS, l'indirizzo IP è l'indirizzo IP utilizzato dalle applicazioni per accedere a SAP NetWeaver. Per ERS, l'indirizzo IP è l'indirizzo IP utilizzato per la replica del server di coda. Se ometti il flag
--addresses
, verrà 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 cluster. Ad esempio,us-central1
CLUSTER_SUBNET
: specifica la subnet che utilizzi con il cluster. Ad esempio,example-sub-network-sap
.ASCS_VIP_ADDRESS
: facoltativamente, specifica un indirizzo IP per l'IP virtuale 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
: se vuoi, specifica un indirizzo IP per l'IP virtuale ERS in notazione CIDR. Ad esempio,10.1.0.4
.
Per ulteriori informazioni sulla prenotazione di un IP statico, vedi Prenotare un indirizzo IP interno statico.
Conferma prenotazione dell'indirizzo IP:
~
gcloud compute addresses describe VIP_NAME \ --region CLUSTER_REGIONDovresti vedere un output simile all'esempio seguente:
address: 10.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, quindi aggiungi gli indirizzi IP e i nomi host sia per le VM che per i VIP al file /etc/hosts
su ogni VM.
I nomi host VIP non sono noti all'esterno delle VM, a meno che non li aggiunga anche al
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 i controlli di integrità: uno per l'istanza ASCS attiva e uno per l'ERS attiva.
In Cloud Shell, crea i controlli di integrità. Per evitare conflitti con altri servizi, indica 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, in modo da aumentare la tolleranza di failover durante gli eventi di migrazione dal vivo 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 all'esempio seguente:
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 Creazione di 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
crea gruppi di istanze Compute Engine
Devi creare un gruppo di istanze in ogni zona che contiene una VM con nodo cluster e aggiungere la VM in quella zona al gruppo di istanze.
In Cloud Shell, crea il gruppo di istanze principali e aggiungi al suo interno 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 al suo interno 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 all'esempio seguente:
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 i gruppi di istanze a ogni servizio di backend, designando il gruppo opposto come gruppo di istanze di failover in ogni servizio di backend. Infine, crea le regole di forwarding 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 principali 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 secondarie 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 secondarie 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 principali 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
Facoltativamente, 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 seguente per il servizio di backend ASCS. Per ERS,
failover: true
verrebbe visualizzato nel gruppo di istanze principale: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 le regole di forwarding per i servizi di backend ASCS ed ERS:
Crea la regola di forwarding dal VIP 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 dal VIP 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 un momento successivo, puoi testare la configurazione del bilanciatore del carico impostando un listener che risponda ai controlli di integrità. Dopo aver impostato un listener, se il bilanciatore del carico è configurato correttamente, lo stato dei gruppi di istanza di backend diventa integro.
Le sezioni seguenti presentano diversi metodi che puoi utilizzare per testare la configurazione.
Test del bilanciatore del carico con l'utilità socat
Puoi utilizzare l'utilità socat
per ascoltare temporaneamente una porta del controllo di integrità. Devi comunque installare l'utilità socat
perché la userai in seguito durante la configurazione delle risorse del cluster.
Su entrambe le VM host come root, installa l'utilità
socat
:#
zypper install socatSulla VM principale, assegna temporaneamente il VIP alla scheda di rete eth0:
ip addr add VIP_ADDRESS dev eth0
Sulla VM principale, avvia un processo
socat
in ascolto per 60 secondi sulla porta per il controllo di integrità ASCS:#
timeout 60s socat - TCP-LISTEN:ASCS_HEALTHCHECK_PORT_NUM,forkIn Cloud Shell, dopo aver atteso alcuni secondi che il controllo di integrità rilevasse 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 il VIP dall'interfaccia eth0:
ip addr del VIP_ADDRESS dev eth0
Ripeti i passaggi per l'ERS, sostituendo i valori delle variabili ASCS con i valori 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 da utilizzare la porta 22
, che dispone di un listener
in grado di 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 minuto o due.
In Cloud Shell, dopo aver atteso alcuni secondi che il controllo di integrità rilevasse il listener, controlla l'integrità dei gruppi di istanza di backend:
~
gcloud compute backend-services get-health BACKEND_SERVICE_NAME \ --region CLUSTER_REGIONDovresti vedere un output simile al seguente:
backend: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-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, reimposta il numero di porta del controllo di integrità originale.
Configura Pacemaker
La seguente procedura configura l'implementazione SUSE di un cluster Pacemaker sulle VM di Compute Engine per SAP NetWeaver.
Per ulteriori informazioni sulla configurazione di cluster ad alta disponibilità su SLES, consulta la documentazione dell'estensione SUSE Linux Enterprise ad alta disponibilità per la tua versione di SLES.
Installa i pacchetti di cluster richiesti
Come root sia sull'host primario che su quello secondario, scarica i seguenti pacchetti di cluster richiesti:
Lo schema
ha_sles
:#
zypper install -t pattern ha_slesIl pacchetto
sap-suse-cluster-connector
:#
zypper install -y sap-suse-cluster-connectorSe non l'hai già installata, l'utilità
socat
:#
zypper install -y socat
Verifica che siano stati caricati gli agenti ad alta disponibilità più recenti:
#
zypper se -t patch SUSE-SLE-HA
Inizializza, configura e avvia il cluster sulla VM principale
Inizializza il cluster utilizzando lo script SUSE ha-cluster-init
. Devi quindi modificare il file di configurazione Corosync e sincronizzarlo con il nodo secondario. Dopo aver avviato il cluster, puoi impostare ulteriori proprietà e valori predefiniti del cluster utilizzando i comandi crm
.
Crea i file di configurazione di Corosync
Crea un file di configurazione Corosync sull'host principale:
Utilizzando il tuo editor di testo preferito, crea il seguente file:
/etc/corosync/corosync.conf
Nel file
corosync.conf
dell'host principale, aggiungi la seguente configurazione, sostituendo il testo della variabile corsivo con i tuoi valori:totem { version: 2 secauth: off crypto_hash: sha1 crypto_cipher: aes256 cluster_name: hacluster clear_node_high_bit: yes token: 20000 token_retransmits_before_loss_const: 10 join: 60 max_messages: 20 transport: udpu interface { ringnumber: 0 Bindnetaddr: STATIC_IP_OF_THIS_HOST mcastport: 5405 ttl: 1 } } logging { fileline: off to_stderr: no to_logfile: no logfile: /var/log/cluster/corosync.log to_syslog: yes debug: off timestamp: on logger_subsys { subsys: QUORUM debug: off } } nodelist { node { ring0_addr: THIS_HOST_NAME nodeid: 1 } node { ring0_addr: OTHER_HOST_NAME nodeid: 2 } } quorum { provider: corosync_votequorum expected_votes: 2 two_node: 1 }
Sostituisci quanto segue:
STATIC_IP_OF_THIS_HOST
: specifica l'indirizzo IP interno primario statico di questa VM, come mostrato in Interfacce di rete nella console Google Cloud o come visualizzato dagcloud compute instances describe VM_NAME
.THIS_HOST_NAME
: specifica il nome host di questa VM.OTHER_HOST_NAME
: specifica il nome host dell'altra VM nel cluster.
Crea un file di configurazione Corosync sull'host secondario ripetendo gli stessi passaggi utilizzati per l'host principale. Ad eccezione dell'IP statico dell'HDB nella proprietà
Bindnetaddr
e dell'ordine dei nomi host innodelist
, i valori della proprietà del file di configurazione sono gli stessi per ogni host.
Inizializza il cluster
Per inizializzare il cluster:
Nell'host principale come root, inizializza il cluster utilizzando lo script SUSE
ha-cluster-init
. I comandi seguenti assegnano un nome al cluster e creano il file di configurazionecorosync.conf
:configure it, e configura la sincronizzazione tra i nodi del cluster.#
ha-cluster-init --name CLUSTER_NAME --yes --interface eth0 csync2#
ha-cluster-init --name CLUSTER_NAME --yes --interface eth0 corosyncAvvia Pacemaker sull'host principale:
#
systemctl enable pacemaker#
systemctl start pacemaker
Imposta le proprietà aggiuntive del cluster
Imposta le proprietà generali del cluster:
#
crm configure property stonith-timeout="300s"#
crm configure property stonith-enabled="true"#
crm configure rsc_defaults resource-stickiness="1"#
crm configure rsc_defaults migration-threshold="3"#
crm configure op_defaults timeout="600"Quando definisci le singole risorse del cluster, i valori impostati per
resource-stickiness
emigration-threshold
sostituiscono i valori predefiniti impostati qui.Puoi visualizzare i valori predefiniti delle risorse e i valori delle risorse definite inserendo
crm config show
.
Unisci la VM secondaria al cluster
Dal terminale aperto sulla VM principale, avvia e unisci il cluster sulla VM secondaria tramite SSH.
Dalla VM principale, esegui le seguenti opzioni dello script
ha-cluster-join
sulla VM secondaria tramite SSH. Se hai configurato il cluster ad alta disponibilità come descritto in queste istruzioni, puoi ignorare gli avvisi relativi al dispositivo watchdog.Esegui l'opzione
--interface eth0 csync2
:#
ssh SECONDARY_VM_NAME 'ha-cluster-join --cluster-node PRIMARY_VM_NAME --yes --interface eth0 csync2'Esegui l'opzione
ssh_merge
:#
ssh SECONDARY_VM_NAME 'ha-cluster-join --cluster-node PRIMARY_VM_NAME --yes ssh_merge'Esegui l'opzione
cluster
:#
ssh SECONDARY_VM_NAME 'ha-cluster-join --cluster-node PRIMARY_VM_NAME --yes cluster'
Avvia Pacemaker sull'host secondario:
Attiva Pacemaker:
#
ssh SECONDARY_VM_NAME systemctl enable pacemakerAvvia Pacemaker:
#
ssh SECONDARY_VM_NAME systemctl start pacemaker
Su entrambi gli host come root, verifica che il cluster mostri entrambi i nodi:
#
crm_mon -sDovresti vedere un output simile al seguente:
CLUSTER OK: 2 nodes online, 0 resource instances configured
Configura le risorse del cluster per l'infrastruttura
Sei tu a definire le risorse gestite da Pacemaker in un cluster ad alta disponibilità. Devi definire le risorse per i seguenti componenti del cluster:
- Il dispositivo di recinzione, che previene gli scenari di tipo "cervello spaccato"
- Directory ASCS ed ERS nel file system condiviso
- I controlli di integrità
- VIP
- Componenti ASCS ed ERS
Le risorse per i componenti ASCS ed ERS verranno definite in un secondo momento rispetto alle altre risorse, poiché devi prima installare SAP NetWeaver.
Abilita modalità di manutenzione
Su uno dei due host come root, metti il cluster in modalità di manutenzione:
#
crm configure property maintenance-mode="true"Conferma la modalità di manutenzione:
#
crm statusL'output dovrebbe indicare che la gestione delle risorse è disabilitata, come mostrato nell'esempio seguente:
Cluster Summary: * Stack: corosync * Current DC: nw-ha-vm-1 (version 2.0.4+20200616.2deceaa3a-3.3.1-2.0.4+20200616.2deceaa3a) - partition with quorum * Last updated: Fri May 14 15:26:08 2021 * Last change: Thu May 13 19:02:33 2021 by root via cibadmin on nw-ha-vm-1 * 2 nodes configured * 0 resource instances configured *** Resource management is DISABLED *** The cluster will not attempt to start, stop or recover services Node List: * Online: [ nw-ha-vm-1 nw-ha-vm-2 ] Full List of Resources: * No resources
Allestisci recinzioni
Per configurare la fencing devi definire una risorsa cluster con l'agente fence_gce
per ogni VM host.
Per garantire la corretta sequenza di eventi dopo un'azione di fencing, devi anche configurare il sistema operativo in modo da ritardare il riavvio di Corosync dopo il recinto di una VM. Puoi anche regolare il timeout del pacemaker per i riavvii in base al ritardo.
Crea le risorse del dispositivo di recinzione
Per ogni VM nel cluster, crei una risorsa cluster per il dispositivo di scherma che può riavviare la VM. Il dispositivo di fencing per una VM deve essere eseguito su una VM diversa, quindi configuri la località della risorsa del cluster in modo che venga eseguita su qualsiasi VM, ad eccezione della VM in cui può riavviarsi.
Nell'host principale come root, crea una risorsa cluster per un dispositivo di scherma per la VM principale:
#
crm configure primitive FENCING_RESOURCE_PRIMARY_VM stonith:fence_gce \ op monitor interval="300s" timeout="120s" \ op start interval="0" timeout="60s" \ params port="PRIMARY_VM_NAME" zone="PRIMARY_ZONE" \ project="CLUSTER_PROJECT_ID" \ pcmk_reboot_timeout=300 pcmk_monitor_retries=4 pcmk_delay_max=30Configura la località del dispositivo di scherma per la VM principale in modo che sia attivo solo sulla VM secondaria:
#
crm configure location FENCING_LOCATION_NAME_PRIMARY_VM \ FENCING_RESOURCE_PRIMARY_VM -inf: "PRIMARY_VM_NAME"Conferma la configurazione appena creata:
#
crm config show related:FENCING_RESOURCE_PRIMARY_VMDovresti vedere un output simile all'esempio seguente:
primitive FENCING_RESOURCE_PRIMARY_VM stonith:fence_gce \ op monitor interval=300s timeout=120s \ op start interval=0 timeout=60s \ params PRIMARY_VM_NAME zone=PRIMARY_ZONE project=CLUSTER_PROJECT_ID pcmk_reboot_timeout=300 pcmk_monitor_retries=4 pcmk_delay_max=30 location FENCING_RESOURCE_PRIMARY_VM FENCING_RESOURCE_PRIMARY_VM -inf: PRIMARY_VM_NAME
Nell'host principale come root, crea una risorsa cluster per un dispositivo di recinzione per la VM secondaria:
#
crm configure primitive FENCING_RESOURCE_SECONDARY_VM stonith:fence_gce \ op monitor interval="300s" timeout="120s" \ op start interval="0" timeout="60s" \ params port="SECONDARY_VM_NAME" zone="SECONDARY_VM_ZONE" \ project="CLUSTER_PROJECT_ID" \ pcmk_reboot_timeout=300 pcmk_monitor_retries=4Configura la località del dispositivo di scherma per la VM secondaria in modo che sia attivo solo sulla VM principale:
#
crm configure location FENCING_LOCATION_NAME_SECONDARY_VM \ FENCING_RESOURCE_SECONDARY_VM -inf: "SECONDARY_VM_NAME"Conferma la configurazione appena creata:
#
crm config show related:FENCING_RESOURCE_SECONDARY_VMDovresti vedere un output simile all'esempio seguente:
primitive FENCING_RESOURCE_SECONDARY_VM stonith:fence_gce \ op monitor interval=300s timeout=120s \ op start interval=0 timeout=60s \ params SECONDARY_VM_NAME zone=SECONDARY_ZONE project=CLUSTER_PROJECT_ID pcmk_reboot_timeout=300 pcmk_monitor_retries=4 pcmk_delay_max=30 location FENCING_RESOURCE_SECONDARY_VM FENCING_RESOURCE_SECONDARY_VM -inf: SECONDARY_VM_NAME
Imposta un ritardo per il riavvio di Corosync
Su entrambi gli host come root, crea un file drop-in
systemd
che ritarda l'avvio di Corosync per garantire la sequenza corretta degli eventi dopo il riavvio di una VM protetta:systemctl edit corosync.service
Aggiungi le seguenti righe al file:
[Service] ExecStartPre=/bin/sleep 60
Salva il file ed esci dall'editor.
Ricarica la configurazione dell'amministratore di sistema.
systemctl daemon-reload
Verifica che il file di inserimento sia stato creato:
service corosync status
Dovresti vedere una riga per il file di inserimento, come mostrato nell'esempio seguente:
● corosync.service - Corosync Cluster Engine Loaded: loaded (/usr/lib/systemd/system/corosync.service; disabled; vendor preset: disabled) Drop-In: /etc/systemd/system/corosync.service.d └─override.conf Active: active (running) since Tue 2021-07-20 23:45:52 UTC; 2 days ago
crea le risorse del file system
Ora che hai creato le directory del file system condivise, puoi definire le risorse del cluster.
Configura le risorse del file system per le directory specifiche dell'istanza.
#
crm configure primitive ASCS_FILE_SYSTEM_RESOURCE Filesystem \ device="NFS_PATH/usrsapSIDASCSASCS_INSTANCE_NUMBER" \ directory="/usr/sap/SID/ASCSASCS_INSTANCE_NUMBER" fstype="nfs" \ op start timeout=60s interval=0 \ op stop timeout=60s interval=0 \ op monitor interval=20s timeout=40sSostituisci quanto segue:
ASCS_FILE_SYSTEM_RESOURCE
: specifica un nome per la risorsa cluster del file system ASCS.NFS_PATH
: specifica il percorso del file system NFS per ASCS.SID
: specifica l'ID di sistema (SID). Utilizza le maiuscole per tutte le lettere.ASCS_INSTANCE_NUMBER
: specifica il numero dell'istanza ASCS.
#
crm configure primitive ERS_FILE_SYSTEM_RESOURCE Filesystem \ device="NFS_PATH/usrsapSIDERSERS_INSTANCE_NUMBER" \ directory="/usr/sap/SID/ERSERS_INSTANCE_NUMBER" fstype="nfs" \ op start timeout=60s interval=0 \ op stop timeout=60s interval=0 \ op monitor interval=20s timeout=40sSostituisci quanto segue:
ERS_FILE_SYSTEM_RESOURCE
: specifica un nome per la risorsa cluster del file system ERS.NFS_PATH
: specifica il percorso del file system NFS per ERS.SID
: specifica l'ID di sistema (SID). Utilizza le maiuscole per tutte le lettere.ERS_INSTANCE_NUMBER
: specifica il numero dell'istanza ASCS.
Conferma la configurazione appena creata:
#
crm configure show ASCS_FILE_SYSTEM_RESOURCE ERS_FILE_SYSTEM_RESOURCEDovresti vedere un output simile all'esempio seguente:
primitive ASCS_FILE_SYSTEM_RESOURCE Filesystem \ params device="NFS_PATH/usrsapSIDASCSASCS_INSTANCE_NUMBER" directory="/usr/sap/SID/ASCSASCS_INSTANCE_NUMBER" fstype=nfs \ op start timeout=60s interval=0 \ op stop timeout=60s interval=0 \ op monitor interval=20s timeout=40s primitive ERS_FILE_SYSTEM_RESOURCE Filesystem \ params device="NFS_PATH/usrsapSIDERSERS_INSTANCE_NUMBER" directory="/usr/sap/SID/ERSERS_INSTANCE_NUMBER" fstype=nfs \ op start timeout=60s interval=0 \ op stop timeout=60s interval=0 \ op monitor interval=20s timeout=40s
crea le risorse per il controllo di integrità
Configura le risorse del cluster per i controlli di integrità ASCS ed ERS:
#
crm configure primitive ASCS_HEALTH_CHECK_RESOURCE anything \ params binfile="/usr/bin/socat" \ cmdline_options="-U TCP-LISTEN:ASCS_HEALTHCHECK_PORT_NUM,backlog=10,fork,reuseaddr /dev/null" \ op monitor timeout=20s interval=10s \ op_params depth=0#
crm configure primitive ERS_HEALTH_CHECK_RESOURCE anything \ params binfile="/usr/bin/socat" \ cmdline_options="-U TCP-LISTEN:ERS_HEALTHCHECK_PORT_NUM,backlog=10,fork,reuseaddr /dev/null" \ op monitor timeout=20s interval=10s \ op_params depth=0Conferma la configurazione appena creata:
#
crm configure show ERS_HEALTH_CHECK_RESOURCE ASCS_HEALTH_CHECK_RESOURCEDovresti vedere un output simile all'esempio seguente:
primitive ERS_HEALTH_CHECK_RESOURCE anything \ params binfile="/usr/bin/socat" cmdline_options="-U TCP-LISTEN:ASCS_HEALTHCHECK_PORT_NUM,backlog=10,fork,reuseaddr /dev/null" \ op monitor timeout=20s interval=10s \ op_params depth=0 primitive ASCS_HEALTH_CHECK_RESOURCE anything \ params binfile="/usr/bin/socat" cmdline_options="-U TCP-LISTEN:ERS_HEALTHCHECK_PORT_NUM,backlog=10,fork,reuseaddr /dev/null" \ op monitor timeout=20s interval=10s \ op_params depth=0
crea le risorse VIP
Definisci le risorse del cluster per gli indirizzi VIP.
Per cercare l'indirizzo VIP numerico, 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 i VIP ASCS ed ERS.
#
crm configure primitive ASCS_VIP_RESOURCE IPaddr2 \ params ip=ASCS_VIP_ADDRESS cidr_netmask=32 nic="eth0" \ op monitor interval=3600s timeout=60s#
crm configure primitive ERS_VIP_RESOURCE IPaddr2 \ params ip=ERS_VIP_ADDRESS cidr_netmask=32 nic="eth0" \ op monitor interval=3600s timeout=60sConferma la configurazione appena creata:
#
crm configure show ASCS_VIP_RESOURCE ERS_VIP_RESOURCEDovresti vedere un output simile all'esempio seguente:
primitive ASCS_VIP_RESOURCE IPaddr2 \ params ip=ASCS_VIP_ADDRESS cidr_netmask=32 nic=eth0 \ op monitor interval=3600s timeout=60s primitive ERS_VIP_RESOURCE IPaddr2 \ params ip=ERS_VIP_RESOURCE cidr_netmask=32 nic=eth0 \ op monitor interval=3600s timeout=60s
Visualizza le risorse definite
Per visualizzare tutte le risorse che hai definito finora, inserisci questo comando:
#
crm statusDovresti vedere un output simile all'esempio seguente:
Stack: corosync Current DC: nw-ha-vm-1 (version 1.1.24+20201209.8f22be2ae-3.12.1-1.1.24+20201209.8f22be2ae) - partition with quorum Last updated: Wed May 26 19:10:10 2021 Last change: Tue May 25 23:48:35 2021 by root via cibadmin on nw-ha-vm-1 2 nodes configured 8 resource instances configured *** Resource management is DISABLED *** The cluster will not attempt to start, stop or recover services Online: [ nw-ha-vm-1 nw-ha-vm-2 ] Full list of resources: fencing-rsc-nw-aha-vm-1 (stonith:fence_gce): Stopped (unmanaged) fencing-rsc-nw-aha-vm-2 (stonith:fence_gce): Stopped (unmanaged) filesystem-rsc-nw-aha-ascs (ocf::heartbeat:Filesystem): Stopped (unmanaged) filesystem-rsc-nw-aha-ers (ocf::heartbeat:Filesystem): Stopped (unmanaged) health-check-rsc-nw-ha-ascs (ocf::heartbeat:anything): Stopped (unmanaged) health-check-rsc-nw-ha-ers (ocf::heartbeat:anything): Stopped (unmanaged) vip-rsc-nw-aha-ascs (ocf::heartbeat:IPaddr2): Stopped (unmanaged) vip-rsc-nw-aha-ers (ocf::heartbeat:IPaddr2): Stopped (unmanaged)
Installare ASCS ed ERS
La seguente sezione copre solo i requisiti e i suggerimenti specifici per l'installazione di SAP NetWeaver su Google Cloud.
Per le istruzioni di installazione complete, consulta la documentazione di SAP NetWeaver.
Prepararsi all'installazione
Per garantire coerenza in tutto il cluster e semplificare l'installazione, prima di installare i componenti SAP NetWeaver ASCS ed ERS, definisci gli utenti, i gruppi e le autorizzazioni e metti il server secondario in modalità standby.
Disattiva la modalità di manutenzione del cluster:
#
crm configure property maintenance-mode="false"Su entrambi i server come root, inserisci i comandi seguenti, specificando gli ID utente e gruppo appropriati per il tuo ambiente:
#
groupadd -g GID_SAPINST sapinst#
groupadd -g GID_SAPSYS sapsys#
useradd -u UID_SIDADM SID_LCadm -g sapsys#
usermod -a -G sapinst SID_LCadm#
useradd -u UID_SAPADM sapadm -g sapinst#
chown SID_LCadm:sapsys /usr/sap/SID/SYS#
chown SID_LCadm:sapsys /sapmnt/SID -R#
chown SID_LCadm:sapsys /usr/sap/trans -R#
chown SID_LCadm:sapsys /usr/sap/SID/SYS -R#
chown SID_LCadm:sapsys /usr/sap/SID -RSostituisci quanto segue:
GID_SAPINST
: specifica l'ID gruppo Linux per lo strumento di provisioning SAP.GID_SAPSYS
: specifica l'ID gruppo Linux per l'utente SAPSYS.UID_SIDADM
: specifica l'ID utente Linux per l'amministratore del sistema SAP (SID).SID_LC
: specifica l'ID di sistema (SID). Utilizza il minuscolo per ogni lettera.UID_SAPADM
: specifica l'ID utente per l'agente host SAP.SID
: specifica l'ID di sistema (SID). Utilizza le maiuscole per tutte le lettere.
Ad esempio, quanto segue mostra uno schema di numerazione GID e UID pratico:
Group sapinst 1001 Group sapsys 1002 Group dbhshm 1003 User en2adm 2001 User sapadm 2002 User dbhadm 2003
Installazione del componente ASCS
Sul server secondario, inserisci questo comando per mettere il server secondario in modalità standby:
#
crm_standby -v on -N ${HOSTNAME};Se metti il server secondario in modalità standby, tutte le risorse cluster vengono consolidate sul server principale, semplificando l'installazione.
Verifica che il server secondario sia in modalità standby:
#
crm statusDovresti vedere un output simile all'esempio seguente:
Stack: corosync Current DC: nw-ha-vm-1 (version 1.1.24+20201209.8f22be2ae-3.12.1-1.1.24+20201209.8f22be2ae) - partition with quorum Last updated: Thu May 27 17:45:16 2021 Last change: Thu May 27 17:45:09 2021 by root via crm_attribute on nw-ha-vm-2 2 nodes configured 8 resource instances configured Node nw-ha-vm-2: standby Online: [ nw-ha-vm-1 ] Full list of resources: fencing-rsc-nw-aha-vm-1 (stonith:fence_gce): Stopped fencing-rsc-nw-aha-vm-2 (stonith:fence_gce): Started nw-ha-vm-1 filesystem-rsc-nw-aha-scs (ocf::heartbeat:Filesystem): Started nw-ha-vm-1 filesystem-rsc-nw-aha-ers (ocf::heartbeat:Filesystem): Started nw-ha-vm-1 health-check-rsc-nw-ha-scs (ocf::heartbeat:anything): Started nw-ha-vm-1 health-check-rsc-nw-ha-ers (ocf::heartbeat:anything): Started nw-ha-vm-1 vip-rsc-nw-aha-scs (ocf::heartbeat:IPaddr2): Started nw-ha-vm-1 vip-rsc-nw-aha-ers (ocf::heartbeat:IPaddr2): Started nw-ha-vm-1
Sul server principale come utente root, modifica la directory in una directory di installazione temporanea, ad esempio
/tmp
, per installare l'istanza ASCS eseguendo SAP Software Provisioning Manager (SWPM).Per accedere all'interfaccia web di SWPM, è necessaria la password dell'utente
root
. Se il tuo criterio IT non consente all'amministratore SAP di avere accesso alla password root, puoi utilizzareSAPINST_REMOTE_ACCESS_USER
.Quando avvii SWPM, utilizza il parametro
SAPINST_USE_HOSTNAME
per specificare il nome dell'host virtuale definito per l'indirizzo VIP ASCS nel file/etc/hosts
.Ad esempio:
cd /tmp; /mnt/nfs/install/SWPM/sapinst SAPINST_USE_HOSTNAME=vh-aha-scs
Nella pagina di conferma finale di SWPM, assicurati che il nome host virtuale sia corretto.
Al termine della configurazione, disattiva la modalità standby della VM secondaria:
#
crm_standby -v off -N ${HOSTNAME}; # On SECONDARY
Installazione del componente ERS
Sul server principale come root o
SID_LCadm
, interrompi il servizio ASCS.#
su - SID_LCadm -c "sapcontrol -nr ASCS_INSTANCE_NUMBER -function Stop"#
su - SID_LCadm -c "sapcontrol -nr ASCS_INSTANCE_NUMBER -function StopService"Sul server principale, inserisci questo comando per mettere il server principale in modalità standby:
#
crm_standby -v on -N ${HOSTNAME};Se metti il server principale in modalità standby, tutte le risorse cluster vengono consolidate sul server secondario, semplificando l'installazione.
Verifica che il server principale sia in modalità standby:
#
crm 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).Per accedere a SWPM, utilizza lo stesso utente e la stessa password che hai utilizzato per l'installazione del componente ASCS.
Quando avvii SWPM, utilizza il parametro
SAPINST_USE_HOSTNAME
per specificare il nome dell'host virtuale definito per l'indirizzo VIP ERS nel file/etc/hosts
.Ad esempio:
cd /tmp; /mnt/nfs/install/SWPM/sapinst SAPINST_USE_HOSTNAME=vh-aha-ers
Nella pagina di conferma finale di SWPM, assicurati che il nome host virtuale sia corretto.
Disattiva la VM principale per avere entrambe attive:
#
crm_standby -v off -N ${HOSTNAME};
Configura i servizi SAP
Devi verificare che i servizi siano configurati correttamente, controllare le impostazioni nei profili ASCS ed ERS e aggiungere l'utente SID_LCadm
al gruppo di utenti haclient
.
Conferma le voci di servizio SAP
Su entrambi i server, verifica che il file
/usr/sap/sapservices
contenga le voci dei servizi ASCS ed ERS. Per farlo, puoi utilizzare l'integrazionesystemV
osystemd
.Puoi aggiungere eventuali 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 delle voci per i servizi ASCS ed ERS nel file
/usr/sap/sapservices
se 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 le voci per i servizi ASCS ed ERS. Di seguito è riportato un esempio di come queste voci vengono visualizzate nel file/usr/sap/sapservices
quando utilizzi l'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
Disabilita l'integrazione
systemd
nelle istanze ASCS e ERS:#
systemctl disable SAPSID_ASCS_INSTANCE_NUMBER.service#
systemctl stop SAPSID_ASCS_INSTANCE_NUMBER.service#
systemctl disable SAPSID_ERS_INSTANCE_NUMBER.service#
systemctl stop SAPSID_ERS_INSTANCE_NUMBER.serviceVerifica che l'integrazione di
systemd
sia disabilitata:#
systemctl list-unit-files | grep sapUn output simile all'esempio seguente indica che l'integrazione
systemd
è disabilitata. Tieni presente che alcuni servizi, comesaphostagent
esaptune
, sono abilitati, mentre altri sono disabilitati.SAPSID_ASCS_INSTANCE_NUMBER.service disabled SAPSID_ERS_INSTANCE_NUMBER.service disabled saphostagent.service enabled sapinit.service generated saprouter.service disabled saptune.service enabled
Per ulteriori informazioni, consulta il documento su SUSE Disabilitazione dei servizi
systemd
delle istanze ASCS e SAP ERS.
Arresta i servizi SAP
Sul server secondario, interrompi il servizio ERS:
#
su - SID_LCadm -c "sapcontrol -nr ERS_INSTANCE_NUMBER -function Stop"#
su - SID_LCadm -c "sapcontrol -nr ERS_INSTANCE_NUMBER -function StopService"Su ciascun server, verifica che tutti i servizi siano arrestati:
#
su - SID_LCadm -c "sapcontrol -nr ASCS_INSTANCE_NUMBER -function GetSystemInstanceList"#
su - SID_LCadm -c "sapcontrol -nr ERS_INSTANCE_NUMBER -function GetSystemInstanceList"Dovresti vedere un output simile all'esempio seguente:
GetSystemInstanceList FAIL: NIECONN_REFUSED (Connection refused), NiRawConnect failed in plugin_fopen()
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 ed ERS elencarli nella directory del profilo oppure utilizzare i seguenti formati:
SID_ASCSASCS_INSTANCE_NUMBER_ASCS_VIRTUAL_HOST_NAME
SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME
Abilita il pacchetto
sap-suse-cluster-connector
aggiungendo le seguenti righe ai profili di istanze ASCS ed ERS dei profili:#----------------------------------------------------------------------- # SUSE HA library #----------------------------------------------------------------------- service/halib = $(DIR_CT_RUN)/saphascriptco.so service/halib_cluster_connector = /usr/bin/sap_suse_cluster_connector
Se utilizzi ENSA1, abilita la funzione keepalive impostando quanto segue nel profilo ASCS:
enque/encni/set_so_keepalive = true
Per ulteriori informazioni, consulta la Nota SAP 1410736 - TCP/IP: impostazione dell'intervallo keepalive.
Se necessario, modifica i profili ASCS ed ERS per cambiare il comportamento di avvio del server di accodamento e del server di replica di accodamento.
ENSA1
Nella sezione "Avvia server di accodamento SAP" del profilo ASCS, se vedi
Restart_Program_NN
, cambia "Restart
" in "Start
", come mostrato nell'esempio seguente.Start_Program_01 = local $(_EN) pf=$(_PF)
Nella sezione "Avvia accodamento del server di replica" del profilo ERS, se vedi
Restart_Program_NN
, cambia "Restart
" in "Start
", come mostrato nell'esempio seguente.Start_Program_00 = local $(_ER) pf=$(_PFL) NR=$(SCSID)
ENSA2
Nella sezione "Avvia server di accodamento SAP" del profilo ASCS, se vedi
Restart_Program_NN
, cambia "Restart
" in "Start
", come mostrato nell'esempio seguente.Start_Program_01 = local $(_ENQ) pf=$(_PF)
Nella sezione "Avvia accodamento del replicatore" del profilo ERS, se vedi
Restart_Program_NN
, cambia "Restart
" in "Start
", come mostrato nell'esempio seguente.Start_Program_00 = local $(_ENQR) pf=$(_PF) ...
Aggiungi l'utente sidadm
al gruppo di utenti haclient
Durante l'installazione di sap-suse-cluster-connector
è stato creato
un gruppo di utenti haclient
. Per consentire all'utente SID_LCadm
di lavorare con il cluster, aggiungilo al gruppo di utenti haclient
.
Su entrambi i server, aggiungi l'utente
SID_LCadm
al gruppo di utentihaclient
:#
usermod -aG haclient SID_LCadm
Configura le risorse del cluster per ASCS ed ERS
Come root di entrambi i server, imposta il cluster in modalità di manutenzione:
#
crm configure property maintenance-mode="true"Verifica che il cluster sia in modalità di manutenzione:
#
crm statusSe il cluster è in modalità di manutenzione, lo stato include le seguenti righe:
*** Resource management is DISABLED *** The cluster will not attempt to start, stop or recover services
Crea le risorse del cluster per i servizi ASCS ed ERS:
ENSA1
Crea la risorsa cluster per l'istanza ASCS. Il valore di
InstanceName
è il nome del profilo dell'istanza che SWPM ha generato quando hai installato ASCS.#
crm configure primitive ASCS_INSTANCE_RESOURCE SAPInstance \ operations \$id=ASCS_INSTANCE_RSC_OPERATIONS_NAME \ op monitor interval=11 timeout=60 on-fail=restart \ params InstanceName=SID_ASCSASCS_INSTANCE_NUMBER_ASCS_VIRTUAL_HOST_NAME \ START_PROFILE="/PATH_TO_PROFILE/SID_ASCSASCS_INSTANCE_NUMBER_ASCS_VIRTUAL_HOST_NAME" \ AUTOMATIC_RECOVER=false \ meta resource-stickiness=5000 failure-timeout=60 \ migration-threshold=1 priority=10Crea la risorsa cluster per l'istanza ERS. Il valore di
InstanceName
è il nome del profilo dell'istanza che SWPM ha generato quando hai installato ERS. Il parametroIS_ERS=true
indica a Pacemaker di impostare il flagrunsersSID
su1
sul nodo in cui è attivo l'ERS.#
crm configure primitive ERS_INSTANCE_RESOURCE SAPInstance \ operations \$id=ERS_INSTANCE_RSC_OPERATIONS_NAME \ op monitor interval=11 timeout=60 on-fail=restart \ params InstanceName=SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME \ START_PROFILE="/PATH_TO_PROFILE/SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME" \ AUTOMATIC_RECOVER=false IS_ERS=true \ meta priority=1000Conferma la configurazione appena creata:
#
crm configure show ASCS_INSTANCE_RESOURCE ERS_INSTANCE_RESOURCEDovresti vedere un output simile all'esempio seguente:
primitive ASCS_INSTANCE_RESOURCE SAPInstance \ operations $id=ASCS_INSTANCE_RSC_OPERATIONS_NAME \ op monitor interval=11 timeout=60 on-fail=restart \ params InstanceName=SID_ASCSASCS_INSTANCE_NUMBER_ASCS_VIRTUAL_HOST_NAME START_PROFILE="/PATH_TO_PROFILE/SID_ASCSASCS_INSTANCE_NUMBER_ASCS_VIRTUAL_HOST_NAME" AUTOMATIC_RECOVER=false \ meta resource-stickiness=5000 failure-timeout=60 migration-threshold=1 priority=10 
 primitive ERS_INSTANCE_RESOURCE SAPInstance \ operations $id=ERS_INSTANCE_RSC_OPERATIONS_NAME \ op monitor interval=11 timeout=60 on-fail=restart \ params InstanceName=SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME START_PROFILE="/PATH_TO_PROFILE/SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME" AUTOMATIC_RECOVER=false IS_ERS=true \ meta priority=1000
ENSA2
Crea la risorsa cluster per l'istanza ASCS. Il valore di
InstanceName
è il nome del profilo dell'istanza che SWPM ha generato quando hai installato ASCS.#
crm configure primitive ASCS_INSTANCE_RESOURCE SAPInstance \ operations \$id=ASCS_INSTANCE_RSC_OPERATIONS_NAME \ op monitor interval=11 timeout=60 on-fail=restart \ params InstanceName=SID_ASCSASCS_INSTANCE_NUMBER_ASCS_VIRTUAL_HOST_NAME \ START_PROFILE="/PATH_TO_PROFILE/SID_ASCSASCS_INSTANCE_NUMBER_ASCS_VIRTUAL_HOST_NAME" \ AUTOMATIC_RECOVER=false \ meta resource-stickiness=5000 failure-timeout=60Crea la risorsa cluster per l'istanza ERS. Il valore di
InstanceName
è il nome del profilo dell'istanza che SWPM ha generato quando hai installato ERS.#
crm configure primitive ERS_INSTANCE_RESOURCE SAPInstance \ operations \$id=ERS_INSTANCE_RSC_OPERATIONS_NAME \ op monitor interval=11 timeout=60 on-fail=restart \ params InstanceName=SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME \ START_PROFILE="/PATH_TO_PROFILE/SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME" \ AUTOMATIC_RECOVER=false IS_ERS=trueConferma la configurazione appena creata:
#
crm configure show ASCS_INSTANCE_RESOURCE ERS_INSTANCE_RESOURCEDovresti vedere un output simile all'esempio seguente:
primitive ASCS_INSTANCE_RESOURCE SAPInstance \ operations $id=ASCS_INSTANCE_RSC_OPERATIONS_NAME \ op monitor interval=11 timeout=60 on-fail=restart \ params InstanceName=SID_ASCSASCS_INSTANCE_NUMBER_ASCS_VIRTUAL_HOST_NAME START_PROFILE="/PATH_TO_PROFILE/SID_ASCSASCS_INSTANCE_NUMBER_ASCS_VIRTUAL_HOST_NAME" AUTOMATIC_RECOVER=false \ meta resource-stickiness=5000 failure-timeout=60 
 primitive ERS_INSTANCE_RESOURCE SAPInstance \ operations $id=ERS_INSTANCE_RSC_OPERATIONS_NAME \ op monitor interval=11 timeout=60 on-fail=restart \ params InstanceName=SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME START_PROFILE="/PATH_TO_PROFILE/SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME" AUTOMATIC_RECOVER=false IS_ERS=true \
configura i gruppi di risorse e i vincoli di località
Raggruppa le risorse ASCS ed ERS. Puoi visualizzare i nomi di tutte le risorse definite in precedenza inserendo il comando
crm resource status
:#
crm configure group ASCS_RESOURCE_GROUP ASCS_FILE_SYSTEM_RESOURCE \ ASCS_HEALTH_CHECK_RESOURCE ASCS_VIP_RESOURCE \ ASCS_INSTANCE_RESOURCE \ meta resource-stickiness=3000Sostituisci quanto segue:
ASCS_RESOURCE_GROUP
: specifica un nome univoco del gruppo per le risorse del cluster ASCS. Puoi garantire l'univocità utilizzando una convenzione come "SID_ASCSistanza number_group". Ad esempio,nw1_ASCS00_group
.ASCS_FILE_SYSTEM_RESOURCE
: specifica il nome della risorsa cluster che hai definito in precedenza per il file system ASCS.ASCS_HEALTH_CHECK_RESOURCE
: specifica il nome della risorsa cluster che hai definito in precedenza per il controllo di integrità ASCS.ASCS_VIP_RESOURCE
: specifica il nome della risorsa cluster che hai definito in precedenza per il VIP ASCS.ASCS_INSTANCE_RESOURCE
: specifica il nome della risorsa cluster che hai definito in precedenza per l'istanza ASCS.
#
crm configure group ERS_RESOURCE_GROUP ERS_FILE_SYSTEM_RESOURCE \ ERS_HEALTH_CHECK_RESOURCE ERS_VIP_RESOURCE \ ERS_INSTANCE_RESOURCESostituisci quanto segue:
ERS_RESOURCE_GROUP
: specifica un nome di gruppo univoco per le risorse del cluster ERS. Puoi garantire l'univocità utilizzando una convenzione come "SID_ERSinstance number_group". Ad esempio,nw1_ERS10_group
.ERS_FILE_SYSTEM_RESOURCE
: specifica il nome della risorsa cluster che hai definito in precedenza per il file system ERS.ERS_HEALTH_CHECK_RESOURCE
: specifica il nome della risorsa cluster definita in precedenza per il controllo di integrità ERS.ERS_VIP_RESOURCE
: specifica il nome della risorsa cluster che hai definito in precedenza per il VIP ERS.ERS_INSTANCE_RESOURCE
: specifica il nome della risorsa cluster che hai definito in precedenza per l'istanza ERS.
Conferma la configurazione appena creata:
#
crm configure show type:groupDovresti vedere un output simile all'esempio seguente:
group ERS_RESOURCE_GROUP ERS_FILE_SYSTEM_RESOURCE ERS_HEALTH_CHECK_RESOURCE ERS_VIP_RESOURCE ERS_INSTANCE_RESOURCE group ASCS_RESOURCE_GROUP ASCS_FILE_SYSTEM_RESOURCE ASCS_HEALTH_CHECK_RESOURCE ASCS_VIP_RESOURCE ASCS_INSTANCE_RESOURCE \ meta resource-stickiness=3000
Crea i vincoli di colocation:
ENSA1
Crea un vincolo di colocation che impedisce alle risorse ASCS di essere eseguite sullo stesso server delle risorse ERS:
#
crm configure colocation PREVENT_SCS_ERS_COLOC -5000: ERS_RESOURCE_GROUP ASCS_RESOURCE_GROUPConfigura ASCS per il failover al server su cui è in esecuzione l'ERS, come determinato dal flag
runsersSID
uguale a1
:#
crm configure location LOC_SCS_SID_FAILOVER_TO_ERS ASCS_INSTANCE_RESOURCE \ rule 2000: runs_ers_SID eq 1Configura ASCS in modo che inizi prima che l'ERS venga trasferito all'altro server dopo un failover:
#
crm configure order ORD_SAP_SID_FIRST_START_ASCS \ Optional: ASCS_INSTANCE_RESOURCE:start \ ERS_INSTANCE_RESOURCE:stop symmetrical=falseConferma la configurazione appena creata:
#
crm configure show type:colocation type:location type:orderDovresti vedere un output simile all'esempio seguente:
order ORD_SAP_SID_FIRST_START_ASCS Optional: ASCS_INSTANCE_RESOURCE:start ERS_INSTANCE_RESOURCE:stop symmetrical=false colocation PREVENT_SCS_ERS_COLOC -5000: ERS_RESOURCE_GROUP ASCS_RESOURCE_GROUP location LOC_SCS_SID_FAILOVER_TO_ERS ASCS_INSTANCE_RESOURCE \ rule 2000: runs_ers_SID eq 1
ENSA2
Crea un vincolo di colocation che impedisce alle risorse ASCS di essere eseguite sullo stesso server delle risorse ERS:
#
crm configure colocation PREVENT_SCS_ERS_COLOC -5000: ERS_RESOURCE_GROUP ASCS_RESOURCE_GROUPConfigura ASCS in modo che inizi prima che l'ERS venga trasferito all'altro server dopo un failover:
#
crm configure order ORD_SAP_SID_FIRST_START_ASCS \ Optional: ASCS_INSTANCE_RESOURCE:start \ ERS_INSTANCE_RESOURCE:stop symmetrical=falseConferma la configurazione appena creata:
#
crm configure show type:colocation type:orderDovresti vedere un output simile all'esempio seguente:
colocation PREVENT_SCS_ERS_COLOC -5000: ERS_RESOURCE_GROUP ASCS_RESOURCE_GROUP order ORD_SAP_SID_FIRST_START_ASCS Optional: ASCS_INSTANCE_RESOURCE:start ERS_INSTANCE_RESOURCE:stop symmetrical=false
Disattiva la modalità di manutenzione.
#
crm configure property maintenance-mode="false"
Convalida e testa il cluster
Questa sezione mostra come eseguire i seguenti test:
- Verificare la presenza di errori di configurazione
- Verifica che le risorse ASCS ed ERS cambino server correttamente durante i failover
- Verificare che le serrature vengano mantenute
- Simula un evento di manutenzione di Compute Engine per assicurarti che la migrazione live non attivi
Controlla la configurazione del cluster
Come root su entrambi i server, controlla su quali nodi sono in esecuzione le tue risorse:
#
crm statusNell'esempio seguente, le risorse ASCS sono in esecuzione sul server
nw-ha-vm-1
, mentre le risorse ERS sono in esecuzione sul servernw-ha-vm-2
.Cluster Summary: * Stack: corosync * Current DC: nw-ha-vm-2 (version 2.0.4+20200616.2deceaa3a-3.3.1-2.0.4+20200616.2deceaa3a) - partition with quorum * Last updated: Thu May 20 16:58:46 2021 * Last change: Thu May 20 16:57:31 2021 by ahaadm via crm_resource on nw-ha-vm-2 * 2 nodes configured * 10 resource instances configured Node List: * Online: [ nw-ha-vm-1 nw-ha-vm-2 ] Active Resources: * fencing-rsc-nw-aha-vm-1 (stonith:fence_gce): Started nw-ha-vm-2 * fencing-rsc-nw-aha-vm-2 (stonith:fence_gce): Started nw-ha-vm-1 * Resource Group: ascs-aha-rsc-group-name: * filesystem-rsc-nw-aha-ascs (ocf::heartbeat:Filesystem): Started nw-ha-vm-1 * health-check-rsc-nw-ha-ascs (ocf::heartbeat:anything): Started nw-ha-vm-1 * vip-rsc-nw-aha-ascs (ocf::heartbeat:IPaddr2): Started nw-ha-vm-1 * ascs-aha-instance-rsc-name (ocf::heartbeat:SAPInstance): Started nw-ha-vm-1 * Resource Group: ers-aha-rsc-group-name: * filesystem-rsc-nw-aha-ers (ocf::heartbeat:Filesystem): Started nw-ha-vm-2 * health-check-rsc-nw-ha-ers (ocf::heartbeat:anything): Started nw-ha-vm-2 * vip-rsc-nw-aha-ers (ocf::heartbeat:IPaddr2): Started nw-ha-vm-2 * ers-aha-instance-rsc-name (ocf::heartbeat:SAPInstance): Started 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:20.05.2021 01:33:25 HAGetFailoverConfig OK HAActive: TRUE HAProductVersion: SUSE Linux Enterprise Server for SAP Applications 15 SP2 HASAPInterfaceVersion: SUSE Linux Enterprise Server for SAP Applications 15 SP2 (sap_suse_cluster_connector 3.1.2) HADocumentation: https://www.suse.com/products/sles-for-sap/resource-library/sap-best-practices/ HAActiveNode: nw-ha-vm-1 HANodes: nw-ha-vm-1, nw-ha-vm-2
Come
SID_LCadm
, verifica la presenza di errori nella configurazione:>
sapcontrol -nr INSTANCE_NUMBER -function HACheckConfigDovresti vedere un output simile all'esempio seguente:
20.05.2021 01:37:19 HACheckConfig OK state, category, description, comment SUCCESS, SAP CONFIGURATION, Redundant ABAP instance configuration, 0 ABAP instances detected SUCCESS, SAP CONFIGURATION, Redundant Java instance configuration, 0 Java 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 (vh-ascs-aha_AHA_00), SAPInstance includes is-ers patch SUCCESS, SAP CONFIGURATION, Enqueue replication (vh-ascs-aha_AHA_00), Enqueue replication enabled SUCCESS, SAP STATE, Enqueue replication state (vh-ascs-aha_AHA_00), Enqueue replication active
Sul server in cui è attivo ASCS, come
SID_LCadm
, simula un failover:>
sapcontrol -nr ASCS_INSTANCE_NUMBER -function HAFailoverToNode ""Come root, se segui il failover utilizzando
crm_mon
, dovresti vedere che l'ASCS viene spostato sull'altro server, l'ERS si arresta su quel server e quindi l'ERS viene spostato sul server su cui era in esecuzione l'ASCS.
Simula un failover
Testa il cluster simulando un errore sull'host principale. Utilizza un sistema di test o esegui il test sul tuo sistema di produzione prima di rilasciare il sistema per l'uso.
Puoi simulare un errore in diversi modi, tra cui:
shutdown -r
(sul nodo attivo)ip link set eth0 down
echo c > /proc/sysrq-trigger
Queste istruzioni utilizzano ip link set eth0 down
per rendere offline l'interfaccia di rete, poiché convalida sia il failover sia la fencing.
Esegui il backup del sistema.
Come root sull'host con l'istanza SCS attiva, metti offline l'interfaccia di rete:
#
ip link set eth0 downRiconnettiti a uno dei due host tramite SSH e passa all'utente root.
Inserisci
crm status
per confermare che ora l'host principale è attivo sulla VM che conteneva l'host secondario. Il riavvio automatico è abilitato nel cluster, quindi l'host interrotto si riavvierà e assumerà il ruolo di host secondario, come mostrato nell'esempio seguente.Cluster Summary: * Stack: corosync * Current DC: nw-ha-vm-2 (version 2.0.4+20200616.2deceaa3a-3.3.1-2.0.4+20200616.2deceaa3a) - partition with quorum * Last updated: Fri May 21 22:31:32 2021 * Last change: Thu May 20 20:36:36 2021 by ahaadm via crm_resource on nw-ha-vm-1 * 2 nodes configured * 10 resource instances configured Node List: * Online: [ nw-ha-vm-1 nw-ha-vm-2 ] Full List of Resources: * fencing-rsc-nw-aha-vm-1 (stonith:fence_gce): Started nw-ha-vm-2 * fencing-rsc-nw-aha-vm-2 (stonith:fence_gce): Started nw-ha-vm-1 * Resource Group: scs-aha-rsc-group-name: * filesystem-rsc-nw-aha-scs (ocf::heartbeat:Filesystem): Started nw-ha-vm-2 * health-check-rsc-nw-ha-scs (ocf::heartbeat:anything): Started nw-ha-vm-2 * vip-rsc-nw-aha-scs (ocf::heartbeat:IPaddr2): Started nw-ha-vm-2 * scs-aha-instance-rsc-name (ocf::heartbeat:SAPInstance): Started nw-ha-vm-2 * Resource Group: ers-aha-rsc-group-name: * filesystem-rsc-nw-aha-ers (ocf::heartbeat:Filesystem): Started nw-ha-vm-1 * health-check-rsc-nw-ha-ers (ocf::heartbeat:anything): Started nw-ha-vm-1 * vip-rsc-nw-aha-ers (ocf::heartbeat:IPaddr2): Started nw-ha-vm-1 * ers-aha-instance-rsc-name (ocf::heartbeat:SAPInstance): Started nw-ha-vm-1
Conferma che le voci di blocco vengono conservate
Per verificare che le voci di blocco vengano mantenute durante un failover, seleziona prima la scheda relativa alla tua versione del server di accodamento e segui la procedura per generare voci di blocco, simulare un failover e confermare che le voci di blocco vengano conservate dopo la nuova attivazione di ASCS.
ENSA1
Come
SID_LCadm
, sul server in cui è attiva l'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 al seguente esempio:
locks_now: 10
Come
SID_LCadm
, sul server in cui l'ERS è attiva, avvia la funzione di monitoraggio,OpCode=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 l'ERS per spostarlo sull'altro server, dovresti vedere un output simile al seguente.
Number of selected entries: 10 Number of selected entries: 10 Number of selected entries: 10 Number of selected entries: 10 Number of selected entries: 10
Quando il monitor
enqt
si arresta, esci dal monitor inserendoCtrl + c
.Facoltativamente, come root su uno dei due server, monitora il failover del cluster:
#
crm_monCome
SID_LCadm
, dopo aver confermato che i blocchi sono stati mantenuti, rilasciali:>
enqt pf=/PATH_TO_PROFILE/SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME 12 NUMBER_OF_LOCKSCome
SID_LCadm
, sul server in cui è attivo ASCS, verifica che le voci di blocco vengano rimosse:>
sapcontrol -nr ASCS_INSTANCE_NUMBER -function EnqGetStatistic | grep locks_now
ENSA2
Come
SID_LCadm
, sul server in cui è attivo ASCS, 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 al seguente esempio:
locks_now: 10
Quando l'ERS è attiva, 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 uguale a quello dell'istanza ASCS.
Se ASCS è attivo, riavvia il server.
Facoltativamente, come root su uno dei due server, monitora il failover del cluster:
#
crm_monCome
SID_LCadm
, sul server in cui è stato riavviato ASCS, verifica che le voci di blocco siano state conservate:>
sapcontrol -nr ASCS_INSTANCE_NUMBER -function EnqGetStatistic | grep locks_nowCome
SID_LCadm
, sul server su cui è attivo l'ERS, dopo aver confermato che i blocchi sono stati mantenuti, rilasciali:>
enq_admin --release_locks=NUMBER_OF_LOCKS:X:DIAG::TAB:%u pf=/PATH_TO_PROFILE/SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAMECome
SID_LCadm
, sul server in cui è attivo ASCS, verifica che le voci di blocco vengano rimosse:>
sapcontrol -nr ASCS_INSTANCE_NUMBER -function EnqGetStatistic | grep locks_nowDovresti vedere un output simile al seguente esempio:
locks_now: 0
Simula un evento di manutenzione di Compute Engine
Simula un evento di manutenzione di Compute Engine per assicurarti che la migrazione live non attivi un failover.
I valori di timeout e di intervallo utilizzati in queste istruzioni tengono conto della durata delle migrazioni live. Se utilizzi valori più brevi nella configurazione del cluster, il rischio che la migrazione live attivi un failover è maggiore.
Per testare la tolleranza del tuo cluster per la migrazione live:
Sul nodo primario, attiva un evento di manutenzione simulato utilizzando il seguente comando gcloud CLI:
#
gcloud compute instances simulate-maintenance-event PRIMARY_VM_NAMEVerifica che il nodo primario non cambi:
#
crm status
Valuta il carico di lavoro SAP NetWeaver
Per automatizzare i controlli di convalida continui per i carichi di lavoro ad alta disponibilità di SAP NetWeaver in esecuzione su Google Cloud, puoi utilizzare Workload Manager.
Workload Manager consente di analizzare e valutare automaticamente i carichi di lavoro ad alta disponibilità di SAP NetWeaver rispetto alle best practice dei fornitori SAP, Google Cloud e sistemi operativi. Ciò consente di migliorare la qualità, le prestazioni e l'affidabilità dei carichi di lavoro.
Per informazioni sulle best practice supportate da Workload Manager per la valutazione dei carichi di lavoro ad alta disponibilità di SAP NetWeaver in esecuzione su Google Cloud, consulta Best practice di Workload Manager per SAP. Per informazioni su come creare ed eseguire una valutazione utilizzando Gestore carichi di lavoro, consulta Creare ed eseguire una valutazione.
Risoluzione dei problemi
Per risolvere i problemi relativi alle configurazioni ad alta disponibilità per SAP NetWeaver, consulta Risoluzione dei problemi relativi alle configurazioni ad alta disponibilità per SAP.
Raccogli informazioni diagnostiche per i cluster SAP NetWeaver ad alta disponibilità
Se hai bisogno di aiuto per risolvere un problema con i cluster ad alta disponibilità per SAP NetWeaver, raccogli le informazioni diagnostiche richieste e contatta l'assistenza clienti Google Cloud.
Per raccogliere informazioni diagnostiche, vedi Cluster ad alta disponibilità con informazioni diagnostiche SLES.Assistenza
In caso di problemi con l'infrastruttura o i servizi Google Cloud, contatta l'assistenza clienti. Puoi trovare le informazioni di contatto nella pagina Panoramica dell'assistenza della console Google Cloud. Se l'assistenza clienti determina che un problema si verifica nei tuoi sistemi SAP, viene indirizzato al supporto SAP.
Per problemi relativi ai prodotti SAP, registra la richiesta di assistenza con
l'assistenza SAP.
SAP valuta il ticket di assistenza e, se risulta che si tratti di un problema di infrastruttura Google Cloud, SAP trasferisce il ticket al componente Google Cloud appropriato nel suo sistema: BC-OP-LNX-GOOGLE
o BC-OP-NT-GOOGLE
.
Requisiti di assistenza
Prima di poter ricevere assistenza per sistemi SAP e per l'infrastruttura e i servizi Google Cloud che utilizzano, devi soddisfare i requisiti minimi del piano di assistenza.
Per ulteriori informazioni sui requisiti minimi di assistenza per SAP su Google Cloud, consulta:
- Ricevi assistenza per SAP su Google Cloud
- SAP Note 2456406 - SAP on Google Cloud Platform: Support Prerequisiti (È richiesto un account utente SAP)
Esecuzione di attività post-deployment
Prima di utilizzare il sistema SAP NetWeaver, ti consigliamo di eseguire il backup del nuovo sistema SAP NetWeaver HA.
Per ulteriori informazioni, consulta la guida alle operazioni di SAP NetWeaver.
Passaggi successivi
Per ulteriori informazioni sull'alta disponibilità, su SAP NetWeaver e Google Cloud, consulta le seguenti risorse:
Guida alla pianificazione dell'alta disponibilità per SAP NetWeaver su Google Cloud
Per ulteriori informazioni sull'amministrazione e sul monitoraggio delle VM, consulta la Guida operativa di SAP NetWeaver