Ce guide explique comment déployer et configurer un cluster SUSE Linux Enterprise Server (SLES) à haute disponibilité (HA) et aux performances optimisées dans un système SAP NetWeaver.
Ce guide comprend les étapes suivantes :- Configurer un équilibreur de charge réseau interne à stratégie directe pour rediriger le trafic en cas de défaillance
- Configurer un cluster Pacemaker sur SLES pour gérer les systèmes SAP et d'autres ressources lors d'un basculement
Ce guide comprend également les étapes de configuration du système SAP NetWeaver pour la haute disponibilité, mais reportez-vous à la documentation SAP pour obtenir les instructions définitives.
Pour en savoir plus sur le déploiement de VM Compute Engine pour SAP NetWeaver non spécifiques à la haute disponibilité, consultez le guide de déploiement de SAP NetWeaver spécifique à votre système d'exploitation.
Pour configurer un cluster à haute disponibilité pour SAP HANA sur Red Hat Enterprise Linux (RHEL), consultez le guide de configuration d'un cluster à haute disponibilité pour un système SAP NetWeaver sur RHEL.
Ce guide est destiné aux utilisateurs avancés de SAP NetWeaver qui connaissent bien les configurations Linux à haute disponibilité pour SAP NetWeaver.
Système déployé dans ce guide
En suivant ce guide, vous allez déployer deux instances SAP NetWeaver et configurer un cluster à haute disponibilité sur SLES. Chacune de ces instances SAP NetWeaver va être déployée sur des VM Compute Engine situées dans des zones différentes, mais au sein de la même région. Ce guide ne traite pas de l'installation à haute disponibilité de la base de données sous-jacente.
Le cluster déployé inclut les fonctions et fonctionnalités suivantes :
- Deux VM hôtes, l'une pour l'instance ASCS active et l'autre pour l'instance active d'un serveur de réplication de mise en file d'attente ENSA2 ou ENSA1. Les instances ENSA2 et ENSA1 sont appelées ERS.
- Le gestionnaire de ressources de cluster à haute disponibilité Pacemaker
- Un mécanisme de cloisonnement STONITH
- Le redémarrage automatique de l'instance ayant échoué en tant que nouvelle instance secondaire
Pour automatiser le déploiement d'un système SAP NetWeaver à haute disponibilité, utilisez Terraform : guide de configuration d'un cluster à haute disponibilité pour SAP NetWeaver sur SLES.
Prérequis
Avant de créer le cluster à haute disponibilité SAP NetWeaver, assurez-vous que les conditions préalables suivantes sont remplies :
- Vous avez lu le guide de planification SAP NetWeaver et le guide de planification de la haute disponibilité pour SAP NetWeaver sur Google Cloud.
- Vous ou votre organisation disposez d'un compte Google Cloud et avez créé un projet pour le déploiement de SAP NetWeaver. Pour en savoir plus sur la création de comptes et de projets Google Cloud, consultez la section Créer un projet dans le guide de déploiement de SAP NetWeaver pour Linux.
- Si vous souhaitez que votre charge de travail SAP s'exécute conformément aux exigences liées à la résidence des données, au contrôle des accès, au personnel d'assistance ou à la réglementation, vous devez créer le dossier Assured Workloads requis. Pour en savoir plus, consultez la page Contrôles de conformité et de souveraineté pour SAP sur Google Cloud.
Si vous utilisez un DNS interne de VPC, la valeur de la variable
vmDnsSetting
dans les métadonnées de votre projet doit êtreGlobalOnly
ouZonalPreferred
afin de permettre la résolution des noms de nœuds entre zones. La valeur par défaut devmDnsSetting
estZonalOnly
. Pour en savoir plus, consultez les pages suivantes :Vous avez configuré un partage de fichiers à l'aide d'une solution de stockage de fichiers partagée NFS, telle que Filestore Enterprise.
Si OS Login est activé dans les métadonnées de votre projet, vous devrez le désactiver temporairement jusqu'à la fin du déploiement. Pour le déploiement, cette procédure configure les clés SSH dans les métadonnées d'instance. Lorsque OS Login est activé, les configurations de clé SSH basées sur les métadonnées sont désactivées et le déploiement échoue. Une fois le déploiement terminé, vous pouvez réactiver OS Login.
Pour en savoir plus, consultez les pages suivantes :
Informations connexes sur SUSE
Sauf indication contraire pour l'environnement Google Cloud, les informations de ce guide sont cohérentes avec les guides associés SUSE suivants :
- Cluster haute disponibilité 1 de réplication de mise en file d'attente SAP NetWeaver – Guide de configuration pour SAP NetWeaver 7.40 et 7.50 | SUSE Linux Enterprise Server for SAP Applications 12
- Cluster haute disponibilité 1 de réplication de mise en file d'attente SAP NetWeaver – Guide de configuration pour SAP NetWeaver 7.40 et 7.50 | SUSE Linux Enterprise Server pour SAP Applications 15
- Cluster haute disponibilité 2 de réplication de mise en file d'attente SAP S/4 HANA – Guide de configuration | SUSE Linux Enterprise Server for SAP Applications 12
- Cluster haute disponibilité 2 de réplication de mise en file d'attente SAP S/4 HANA – Guide de configuration | SUSE Linux Enterprise Server for SAP Applications 15
Créer un réseau
Pour des raisons de sécurité, nous vous recommandons de créer un réseau, dont vous contrôlez les accès en ajoutant des règles de pare-feu ou toute autre méthode.
Si votre projet dispose d'un réseau VPC par défaut, ne l'utilisez pas. À la place, créez votre propre réseau VPC afin que les seules règles de pare-feu appliquées soient celles que vous créez explicitement.
Lors du déploiement, les instances de VM nécessitent généralement un accès à Internet pour télécharger l'agent Google Cloud pour SAP. Si vous utilisez l'une des images Linux certifiées SAP disponibles dans Google Cloud, l'instance de VM requiert également l'accès à Internet pour enregistrer la licence et accéder aux dépôts des fournisseurs d'OS. Une configuration comprenant une passerelle NAT et des tags réseau de VM permet aux VM cibles d'accéder à Internet même si elles ne possèdent pas d'adresses IP externes.
Pour configurer la mise en réseau, procédez comme suit :
Console
- Dans Google Cloud Console, accédez à la page Réseaux VPC.
- Cliquez sur Créer un réseau VPC.
- Saisissez un Nom pour le réseau.
Le nom doit respecter la convention d'attribution de noms. Les réseaux VPC utilisent la convention d'attribution de noms de Compute Engine.
- Dans le champ Mode de création du sous-réseau, sélectionnez Custom.
- Dans la section Nouveau sous-réseau, spécifiez les paramètres de configuration de sous-réseau suivants :
- Saisissez un nom pour le sous-réseau.
- Dans le champ Région, sélectionnez la région Compute Engine dans laquelle vous souhaitez créer le sous-réseau.
- Pour Type de pile IP, sélectionnez IPv4 (pile unique), puis saisissez une plage d'adresses IP au format CIDR, telle que
10.1.0.0/24
.Il s'agit de la plage IPv4 principale du sous-réseau. Si vous envisagez d'ajouter plusieurs sous-réseaux, attribuez à chacun d'eux des plages d'adresses IP CIDR qui ne se chevauchent pas dans le réseau. Notez que chaque sous-réseau et ses plages d'adresses IP internes sont mappés sur une seule région.
- Cliquez sur OK.
- Pour ajouter d'autres sous-réseaux, cliquez sur Ajouter un sous-réseau et répétez les étapes ci-dessus. Vous pouvez ajouter d'autres sous-réseaux au réseau après sa création.
- Cliquez sur Create (Créer).
gcloud
- Accédez à Cloud Shell.
- Pour créer un réseau en mode de sous-réseau personnalisé, exécutez la commande suivante :
gcloud compute networks create NETWORK_NAME --subnet-mode custom
Remplacez
NETWORK_NAME
par le nom du nouveau réseau. Le nom doit respecter la convention d'attribution de noms. Les réseaux VPC utilisent la convention de dénomination de Compute Engine.Spécifiez
--subnet-mode custom
pour éviter d'utiliser le mode automatique par défaut, qui crée automatiquement un sous-réseau dans chaque région Compute Engine. Pour en savoir plus, consultez la section Mode de création du sous-réseau. - Créez un sous-réseau, et spécifiez la région et la plage d'adresses IP :
gcloud compute networks subnets create SUBNETWORK_NAME \ --network NETWORK_NAME --region REGION --range RANGE
Remplacez les éléments suivants :
SUBNETWORK_NAME
: nom du nouveau sous-réseauNETWORK_NAME
: nom du réseau que vous avez créé à l'étape précédenteREGION
: région dans laquelle vous souhaitez créer le sous-réseauRANGE
: plage d'adresses IP spécifiée au format CIDR (par exemple,10.1.0.0/24
)Si vous envisagez d'ajouter plusieurs sous-réseaux, attribuez à chacun d'eux des plages d'adresses IP CIDR qui ne se chevauchent pas. Notez que chaque sous-réseau et ses plages d'adresses IP internes sont mappés sur une seule région.
- Si vous le souhaitez, répétez l'étape précédente et ajoutez des sous-réseaux.
Configurer une passerelle NAT
Si vous avez besoin de créer une ou plusieurs VM sans adresse IP publique, vous devez utiliser la traduction d'adresse réseau (NAT) pour permettre aux VM d'accéder à Internet. Utilisez Cloud NAT, un service géré distribué et défini par logiciel de Google Cloud, qui permet aux VM d'envoyer des paquets sortants vers Internet et de recevoir tous les paquets de réponses entrants établis correspondants. Vous pouvez également configurer une VM distincte en tant que passerelle NAT.
Pour créer une instance Cloud NAT pour votre projet, consultez la page Utiliser Cloud NAT.
Une fois que vous avez configuré Cloud NAT pour votre projet, vos instances de VM peuvent accéder en toute sécurité à Internet sans adresse IP publique.
Ajouter des règles de pare-feu
Par défaut, les connexions entrantes extérieures au réseau Google Cloud sont bloquées. Pour autoriser les connexions entrantes, configurez une règle de pare-feu pour votre VM. Les règles de pare-feu ne régulent que les nouvelles connexions entrantes vers une VM. Une fois la connexion avec une VM établie, le trafic est autorisé dans les deux directions via cette connexion.
Vous pouvez créer une règle de pare-feu qui autorise l'accès à des ports spécifiés ou pour autoriser l'accès entre plusieurs VM d'un même sous-réseau.
Créez des règles de pare-feu pour autoriser l'accès à des éléments tels que :
- Les ports par défaut utilisés par SAP NetWeaver, comme indiqué dans le document Ports TCP/IP de tous les produits SAP.
- Les connexions de votre ordinateur ou votre environnement de réseau d'entreprise vers votre instance de VM Compute Engine. Si vous ne savez pas quelle adresse IP utiliser, contactez l'administrateur réseau de votre entreprise.
- Communication entre VM dans une configuration à trois niveaux, évolutive ou à haute disponibilité. Par exemple, si vous déployez un système à trois niveaux, votre sous-réseau comprend au moins deux VM : une VM pour SAP NetWeaver et une autre pour le serveur de base de données. Pour activer la communication entre deux VM, vous devez créer une règle de pare-feu autorisant le trafic provenant du sous-réseau.
- Vérifications d'état de Cloud Load Balancing. Pour en savoir plus, consultez la section Créer une règle de pare-feu pour les vérifications d'état.
Pour créer une règle de pare-feu, procédez comme suit :
Dans la console Google Cloud, accédez à la page Pare-feu du réseau VPC.
En haut de la page, cliquez sur Créer une règle de pare-feu.
- Dans le champ Réseau, sélectionnez le réseau sur lequel se trouve votre machine virtuelle.
- Dans le champ Cibles, sélectionnez Toutes les instances du réseau.
- Dans le champ Filtre source, sélectionnez l'une des options suivantes :
- Plages d'adresses IP pour autoriser le trafic entrant provenant d'adresses IP spécifiques. Indiquez la plage d'adresses IP dans le champ Plages d'adresses IP sources.
- Sous-réseaux pour autoriser le trafic entrant provenant d'un sous-réseau spécifique. Spécifiez le nom du sous-réseau dans le champ du sous-réseau suivant. Vous pouvez utiliser cette option pour autoriser l'accès entre plusieurs VM dans une organisation évolutive ou à trois niveaux.
- Dans la section Protocoles et ports, sélectionnez Protocoles et ports spécifiés et spécifiez
tcp:PORT_NUMBER;
.
Cliquez sur Créer pour créer la règle de pare-feu.
Déployer les VM pour SAP NetWeaver
Avant de commencer à configurer le cluster à haute disponibilité, vous devez définir et déployer les instances de VM qui serviront de nœuds principal et secondaire dans le cluster à haute disponibilité.
Pour définir et déployer les VM, utilisez le même modèle Cloud Deployment Manager que celui qui a servi à déployer une VM pour un système SAP NetWeaver dans le déploiement automatisé de VM pour SAP NetWeaver sous Linux.
Toutefois, pour déployer deux VM au lieu d'une, vous devez ajouter la définition de la seconde VM au fichier de configuration en copiant et en collant la définition de la première VM. Après avoir créé la seconde définition, vous devez modifier les noms des ressources et des instances dans celle-ci. Pour vous protéger contre une défaillance de zone, spécifiez une zone différente de la même région. Toutes les autres propriétés des deux définitions conservent la même valeur.
Une fois les VM déployées, vous installez SAP NetWeaver avant de définir et de configurer le cluster à haute disponibilité.
Les instructions suivantes utilisent Cloud Shell, mais sont généralement applicables à Google Cloud CLI.
Ouvrez Cloud Shell.
Téléchargez le modèle de fichier de configuration
template.yaml
dans votre répertoire de travail :wget https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_nw/template.yaml
Renommez éventuellement le fichier
template.yaml
pour identifier la configuration qu'il définit. Exemple :nw-ha-sles15sp3.yaml
Pour ouvrir le fichier de configuration YAML dans l'éditeur de code Cloud Shell, cliquez sur l'icône en forme de crayon (edit) située en haut à droite de la fenêtre du terminal Cloud Shell pour lancer l'éditeur.
Dans le modèle de fichier de configuration YAML, définissez la première instance de VM. Vous définissez la seconde instance de VM à l'étape suivante après le tableau ci-dessous.
Spécifiez les valeurs des propriétés en remplaçant les crochets et leur contenu par les valeurs de votre installation. Ces propriétés sont décrites dans le tableau ci-dessous. Pour obtenir un exemple de fichier de configuration complet, consultez la section Exemple de fichier de configuration YAML complet.
Valeur Type de données Description name
String Nom arbitraire qui identifie la ressource de déploiement définie par l'ensemble de propriétés suivant. type
String Spécifie l'emplacement, le type et la version du modèle Deployment Manager à utiliser lors du déploiement.
Le fichier YAML comprend deux spécifications
type
, dont l'une est laissée en commentaire. La spécificationtype
qui est active par défaut spécifie la version du modèle en tant quelatest
. La spécificationtype
qui est laissée en commentaire spécifie une version de modèle spécifique avec un horodatage.Si tous vos déploiements doivent utiliser la même version de modèle, utilisez la spécification
type
qui inclut l'horodatage.instanceName
String Nom de l'instance de VM que vous définissez. Spécifiez des noms différents dans les définitions des VM principale et secondaire. Pensez à utiliser des noms qui identifient les instances comme appartenant au même cluster à haute disponibilité. Les noms d'instances ne doivent pas comporter plus de 13 caractères et doivent être composés de minuscules, de chiffres ou de traits d'union. Choisissez un nom unique dans votre projet.
instanceType
String Type de VM Compute Engine dont vous avez besoin Spécifiez le même type d'instance pour les VM principale et secondaire. Si vous avez besoin d'un type de VM personnalisé, spécifiez un petit type de VM prédéfini et, une fois le déploiement terminé, personnalisez la VM selon les besoins.
zone
String Zone Google Cloud dans laquelle déployer l'instance de VM que vous définissez. Spécifiez des zones différentes de la même région pour les définitions des VM principale et secondaire. Ces zones doivent se trouver dans la même région que celle que vous avez sélectionnée pour votre sous-réseau. subnetwork
String Nom du sous-réseau que vous avez créé à une étape précédente. Si vous procédez au déploiement sur un VPC partagé, spécifiez cette valeur en tant que SHAREDVPC_PROJECT/SUBNETWORK
. Exemple :myproject/network1
linuxImage
String Nom de l'image du système d'exploitation Linux ou de la famille d'images que vous utilisez avec SAP NetWeaver. Pour spécifier une famille d'images, ajoutez le préfixe family/
au nom de la famille. Par exemple,family/sles-15-sp3-sap
. Pour obtenir la liste des familles d'images disponibles, consultez la page Images dans la console Google Cloud.linuxImageProject
String Le projet Google Cloud qui contient l'image que vous allez utiliser. Ce projet peut être votre propre projet ou le projet d'image Google Cloud suse-sap-cloud
. Pour obtenir la liste des projets d'image Google Cloud, consultez la page Images dans la documentation Compute Engine.usrsapSize
Entier Taille du disque /usr/sap
. La taille minimale est de 8 Go.sapmntSize
Entier Taille du disque /sapmnt
. La taille minimale est de 8 Go.swapSize
Entier Taille du volume d'échange. La taille minimale est de 1 Go. networkTag
String Facultatif. Un ou plusieurs tags réseau séparés par une virgule représentant votre instance de VM à des fins de routage ou de pare-feu.
Pour les configurations à haute disponibilité, spécifiez un tag réseau à utiliser pour une règle de pare-feu qui autorise la communication entre les nœuds du cluster et un tag réseau à utiliser dans une règle de pare-feu autorisant les vérifications d'état de Cloud Load Balancing à accéder aux nœuds du cluster.
Si vous spécifiez
publicIP: No
et ne spécifiez pas de tag réseau, veillez à fournir un autre moyen d'accès à Internet.serviceAccount
String Facultatif. Spécifie un compte de service personnalisé à utiliser pour la VM déployée. Le compte de service doit bénéficier des autorisations requises pour configurer la VM pour SAP lors du déploiement.
Si
serviceAccount
n'est pas spécifié, le compte de service Compute Engine par défaut est utilisé.Spécifiez l'adresse complète du compte de service. Exemple :
sap-ha-example@example-project-123456.iam.gserviceaccount.com
publicIP
Booléen Facultatif. Détermine si une adresse IP publique est ajoutée à votre instance de VM. La valeur par défaut est Yes
.sap_deployment_debug
Booléen Facultatif. Si cette valeur est définie sur Yes
, le déploiement génère des journaux de déploiement détaillés. Vous ne devez activer ce paramètre que si un ingénieur de l'assistance Google vous demande d'activer le débogage.Dans le fichier de configuration YAML, créez la définition de la deuxième VM en faisant un copier-coller de la définition de la première VM après la première définition. Pour obtenir un exemple, consultez Exemple de fichier de configuration YAML complet.
Dans la définition de la deuxiène VM, spécifiez des valeurs différentes de celles spécifiées dans la première définition pour les propriétés suivantes :
name
instanceName
zone
Créez les instances de VM :
gcloud deployment-manager deployments create DEPLOYMENT_NAME --config TEMPLATE_NAME.yaml
où :
DEPLOYMENT_NAME
représente le nom de votre déploiement.TEMPLATE_NAME
représente le nom de votre fichier de configuration YAML.
La commande précédente appelle Deployment Manager qui déploie les VM conformément aux spécifications du fichier de configuration YAML.
Le processus de déploiement comprend deux étapes. Tout d'abord, Deployment Manager écrit son état dans la console. Ensuite, les scripts de déploiement écrivent leur état dans Cloud Logging.
Exemple de fichier de configuration YAML complet
L'exemple suivant est un fichier de configuration YAML complet qui déploie deux instances de VM pour une configuration à haute disponibilité pour SAP NetWeaver à l'aide de la dernière version des modèles Deployment Manager. L'exemple omet les commentaires insérés dans le modèle lorsque vous le téléchargez pour la première fois.
Le fichier contient les définitions des deux ressources à déployer : sap_nw_node_1
et sap_nw_node_2
. Chaque définition de ressource contient les définitions d'une VM.
La définition de la ressource sap_nw_node_2
a été créée en copiant et en collant la première définition, puis en modifiant les valeurs des propriétés name
, instanceName
et zone
. Les valeurs de toutes les autres propriétés dans les deux définitions de ressources sont identiques.
Les propriétés networkTag
et serviceAccount
proviennent de la section "Options avancées" du modèle de fichier de configuration.
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
Créer des règles de pare-feu autorisant l'accès aux VM hôtes
Si vous ne l'avez pas déjà fait, créez des règles de pare-feu autorisant l'accès à chaque VM hôte à partir des sources suivantes :
- À des fins de configuration, votre poste de travail local, un hôte bastion ou un serveur de saut
- Pour l'accès entre les nœuds du cluster, les autres VM hôtes dans le cluster à haute disponibilité
- Vérifications d'état utilisées par Cloud Load Balancing, comme décrit dans l'étape ultérieure Créer une règle de pare-feu pour les vérifications d'état.
Lorsque vous créez des règles de pare-feu VPC, vous spécifiez les tags réseau que vous avez définis dans le fichier de configuration template.yaml
pour désigner vos VM hôtes comme cibles de la règle.
Pour vérifier le déploiement, définissez une règle autorisant les connexions SSH sur le port 22 à partir d'un hôte bastion ou de votre poste de travail local.
Pour l'accès entre les nœuds du cluster, ajoutez une règle de pare-feu qui autorise tous les types de connexion sur n'importe quel port d'autres VM du même sous-réseau.
Assurez-vous que les règles de pare-feu pour la vérification du déploiement et la communication au sein du cluster sont créées avant de passer à la section suivante. Pour obtenir des instructions, consultez la section Ajouter des règles de pare-feu.
Vérifier le déploiement des VM
Avant d'installer SAP NetWeaver ou de commencer à configurer le cluster à haute disponibilité, vérifiez que les VM ont été déployées correctement en vérifiant les journaux et le mappage de stockage du système d'exploitation.
Vérifier les journaux
Dans la console Google Cloud, ouvrez Cloud Logging pour surveiller la progression de l'installation et rechercher les erreurs.
Filtrez les journaux :
Logs Explorer
Sur la page Explorateur de journaux, accédez au volet Requête.
Dans le menu déroulant Ressource, sélectionnez Global, puis cliquez sur Ajouter.
Si l'option Global n'apparaît pas, saisissez la requête suivante dans l'éditeur de requête :
resource.type="global" "Deployment"
Cliquez sur Exécuter la requête.
Ancienne visionneuse de journaux
- Sur la page Ancienne visionneuse de journaux, dans le menu de sélection de base, sélectionnez Global comme ressource de journalisation.
Analysez les journaux filtrés :
- Si
"--- Finished"
s'affiche, le traitement du déploiement est terminé, et vous pouvez passer à l'étape suivante. Si vous rencontrez une erreur de quota :
Sur la page Quotas de IAM & Admin, augmentez les quotas qui ne répondent pas aux exigences de SAP NetWeaver décrites dans le guide de planification SAP NetWeaver.
Sur la page Déploiements de Deployment Manager, supprimez le déploiement pour nettoyer les VM et les disques persistants de l'installation ayant échoué.
Réexécutez le déploiement.
- Si
Vérifier la configuration des VM
Une fois les instances de VM déployées, connectez-vous aux VM à l'aide de
ssh
.- Si ce n'est pas déjà fait, créez une règle de pare-feu pour autoriser une connexion SSH sur le port
22
. Accédez à la page Instances de VM.
Connectez-vous à chaque instance de VM en cliquant sur le bouton SSH figurant sur la ligne correspondant à chaque instance de VM, ou utilisez votre méthode SSH favorite.
- Si ce n'est pas déjà fait, créez une règle de pare-feu pour autoriser une connexion SSH sur le port
Affichez le système de fichiers :
~>
df -hAssurez-vous d'obtenir un résultat semblable à celui-ci :
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
Vérifiez que l'espace d'échange a bien été créé :
~>
cat /proc/meminfo | grep SwapUn résultat semblable à l'exemple suivant doit s'afficher :
SwapCached: 0 kB SwapTotal: 25161724 kB SwapFree: 25161724 kB
Si l'une des étapes de validation indique que l'installation a échoué, procédez comme suit :
- Corrigez l'erreur.
- Sur la page Déploiements, supprimez le déploiement pour nettoyer les VM et les disques persistants de l'installation défaillante.
- Réexécutez le déploiement.
Mettre à jour Google Cloud CLI
Le modèle Deployment Manager a installé Google Cloud CLI sur les VM lors du déploiement. Mettez à jour la CLI gcloud pour vous assurer qu'elle inclut toutes les dernières mises à jour.
Connectez-vous en SSH à la VM principale.
Mettre à jour la CLI gcloud
~>
sudo gcloud components updateSuivez les invites.
Répétez ces étapes sur la VM secondaire.
Activer la communication backend de l'équilibreur de charge entre les VM
Une fois que vous avez confirmé que les VM ont bien été déployées, activez la communication backend entre les VM qui serviront de nœuds dans votre cluster à haute disponibilité.
Vous activez la communication backend entre les VM en modifiant la configuration de google-guest-agent
, qui est incluse dans l'environnement invité Linux pour toutes les images publiques Linux fournies par Google Cloud.
Pour activer les communications backend de l'équilibreur de charge, procédez comme suit sur chaque VM de votre cluster :
Arrêtez l'agent :
sudo service google-guest-agent stop
Ouvrez ou créez le fichier
/etc/default/instance_configs.cfg
pour le modifier. Exemple :sudo vi /etc/default/instance_configs.cfg
Dans le fichier
/etc/default/instance_configs.cfg
, spécifiez les propriétés de configuration suivantes comme indiqué. Si les sections n'existent pas, créez-les. Assurez-vous tout particulièrement que les propriétéstarget_instance_ips
etip_forwarding
sont définies surfalse
:[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
Démarrez le service de l'agent invité :
sudo service google-guest-agent start
Pour configurer la vérification d'état de l'équilibreur de charge, vous devez disposer d'un port cible d'écoute et attribuer l'adresse IP virtuelle à une interface. Pour en savoir plus, consultez la section Tester la configuration de l'équilibreur de charge.
Configurer les clés SSH sur les VM principale et secondaire
Pour permettre la copie de fichiers entre les hôtes du cluster à haute disponibilité, les étapes de cette section créent des connexions SSH racine entre les deux hôtes.
Les modèles Deployment Manager fournis par Google Cloud génèrent une clé pour vous, mais vous pouvez la remplacer par une clé que vous générez si nécessaire.
Votre organisation dispose probablement de consignes régissant les communications réseau internes. Si nécessaire, une fois le déploiement terminé, vous pouvez supprimer les métadonnées des VM et les clés du répertoire authorized_keys
.
Si la configuration de connexions SSH directes ne respecte pas les consignes de votre organisation, vous pouvez transférer des fichiers à l'aide d'autres méthodes, par exemple :
- Transférez des fichiers plus petits via votre poste de travail local à l'aide des options de menu Importer un fichier et Télécharger un fichier de Cloud Shell. Consultez la page Gérer des fichiers avec Cloud Shell.
- Échangez des fichiers à l'aide d'un bucket Cloud Storage. Consultez la section Importations et téléchargements.
- Utilisez une solution de stockage de fichiers telle que Filestore ou NetApp Cloud Volumes Service pour créer un dossier partagé. Consultez la page Solutions de partage de fichiers.
Pour activer les connexions SSH entre les instances principale et secondaire, procédez comme indiqué ci-dessous. Les étapes supposent que vous utilisez la clé SSH générée par les modèles Deployment Manager pour SAP.
Sur la VM hôte principale :
Connectez-vous à la VM via SSH
Passez en mode root :
$
sudo su -Vérifiez que la clé SSH existe :
#
ls -l /root/.ssh/Vous devez voir les fichiers de clé id_rsa comme dans l'exemple suivant :
-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
Mettez à jour les métadonnées de la VM principale avec les informations sur la clé SSH de la VM secondaire.
#
gcloud compute instances add-metadata SECONDARY_VM_NAME \ --metadata "ssh-keys=$(whoami):$(cat ~/.ssh/id_rsa.pub)" \ --zone SECONDARY_VM_ZONEAfin de vérifier que les clés SSH sont configurées correctement, ouvrez une connexion SSH depuis le système secondaire vers le système principal.
#
ssh SECONDARY_VM_NAME
Sur la VM hôte secondaire :
Connectez-vous en SSH à la VM.
Passez en mode root :
$
sudo su -Vérifiez que la clé SSH existe :
#
ls -l /root/.ssh/Vous devez voir les fichiers de clé id_rsa comme dans l'exemple suivant :
-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
Mettez à jour les métadonnées de la VM secondaire avec les informations sur la clé SSH de 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_keysAfin de vérifier que les clés SSH sont configurées correctement, ouvrez une connexion SSH du système secondaire au système principal.
#
ssh PRIMARY_VM_NAME
Configurer le stockage de fichiers partagés et les répertoires partagés
Vous devez configurer une solution de partage de fichiers NFS fournissant un stockage de fichiers partagé à haute disponibilité auquel les deux nœuds de votre cluster HA peuvent accéder. Vous créez ensuite des répertoires sur les deux nœuds qui correspondent au stockage de fichiers partagé. Le logiciel de cluster garantit que les répertoires appropriés sont installés uniquement sur les instances correctes.
La configuration d'une solution de partage de fichiers n'est pas abordée dans ce guide. Pour obtenir des instructions sur la configuration du système de partage de fichiers, consultez les instructions fournies par le fournisseur de la solution de votre choix. Si vous choisissez d'utiliser Filestore pour votre solution de partage de fichiers, nous vous recommandons d'utiliser le niveau Enterprise de Filestore. Pour savoir comment créer une instance Filestore, consultez la section Créer des instances.
Pour en savoir plus sur les solutions de partage de fichiers disponibles sur Google Cloud, consultez la section Options de stockage partagé pour les systèmes SAP à haute disponibilité sur Google Cloud.
Pour configurer les répertoires partagés, procédez comme suit :
Si vous n'avez pas encore configuré de solution de stockage de fichiers NFS partagés à haute disponibilité, faites-le maintenant.
Installez le stockage partagé NFS sur les deux serveurs pour la configuration initiale.
~>
sudo mkdir /mnt/nfs~>
sudo mount -t nfs NFS_PATH /mnt/nfsRemplacez
NFS_PATH
par le chemin d'accès à votre solution de partage de fichiers NFS. Par exemple,10.49.153.26:/nfs_share_nw_ha
.Depuis l'un ou l'autre serveur, créez des répertoires pour
sapmnt
, le répertoire de transport central et le répertoire spécifique à l'instance. Si vous utilisez une pile Java, remplacez "ASCS" par "SCS" avant d'utiliser les commandes suivantes et d'autres exemples de commandes :~>
sudo mkdir /mnt/nfs/sapmntSID~>
sudo mkdir /mnt/nfs/usrsap{trans,SIDASCSASCS_INSTANCE_NUMBER,SIDERSERS_INSTANCE_NUMBER}Remplacez les éléments suivants :
SID
: ID du système SAP (SID). Utilisez des majuscules pour toutes les lettres. Par exemple,AHA
.ASCS_INSTANCE_NUMBER
: numéro d'instance du système ASCS. Exemple :00
ERS_INSTANCE_NUMBER
: numéro d'instance du système ERS. Exemple :10
Sur les deux serveurs, créez les points d'installation nécessaires :
~>
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_NUMBERConfigurez
autofs
pour installer les répertoires de fichiers partagés communs lors du premier accès aux répertoires de fichiers. L'installation des répertoiresASCSASCS_INSTANCE_NUMBER
etERSERS_INSTANCE_NUMBER
est gérée par le logiciel du cluster que vous configurerez ultérieurement.Ajustez les options NFS dans les commandes en fonction des besoins liés à votre solution de partage de fichiers.
Sur les deux serveurs, configurez
autofs
:~>
echo "/- /etc/auto.sap" | sudo tee -a /etc/auto.master~>
NFS_OPTS="-rw,relatime,vers=3,hard,proto=tcp,timeo=600,retrans=2,mountvers=3,mountport=2050,mountproto=tcp"~>
echo "/sapmnt/SID ${NFS_OPTS} NFS_PATH/sapmntSID" | sudo tee -a /etc/auto.sap~>
echo "/usr/sap/trans ${NFS_OPTS} NFS_PATH/usrsaptrans" | sudo tee -a /etc/auto.sapPour en savoir plus sur
autofs
, consultez autofs : fonctionnement.Sur les deux serveurs, démarrez le service
autofs
:~>
sudo systemctl enable autofs~>
sudo systemctl restart autofs~>
sudo automount -vDéclenchez
autofs
afin d'installer les répertoires partagés en accédant à chaque répertoire à l'aide de la commandecd
. Exemple :~>
cd /sapmnt/SID~>
cd /usr/sap/transUne fois que vous avez accédé à tous les répertoires, exécutez la commande
df -Th
pour vérifier que les répertoires sont installés.~>
df -Th | grep FILE_SHARE_NAMERemplacez
FILE_SHARE_NAME
par le nom de votre solution de partage de fichiers NFS. Exemple :nfs_share_nw_ha
Vous devriez voir des points d'installation et des répertoires semblables à ce qui suit :
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
Configurer la prise en charge du basculement Cloud Load Balancing
Le service de l'équilibreur de charge réseau interne à stratégie directe compatible avec le basculement achemine le trafic ASCS et ERS vers les instances actives respectives dans un cluster SAP NetWeaver. Les équilibreurs de charge réseau internes à stratégie directe utilisent des adresses IP virtuelles, des services de backend, des groupes d'instances et des vérifications d'état pour acheminer le trafic de manière appropriée.
Réserver des adresses IP pour les adresses IP virtuelles
Pour un cluster SAP NetWeaver à haute disponibilité, vous créez deux adresses IP virtuelles, parfois appelées adresses IP flottantes. Une adresse IP virtuelle suit l'instance active des services centraux SAP (SCS) et l'autre suit l'instance du serveur de réplication de mise en file d'attente (Enqueue Replication Server, ERS). L'équilibreur de charge achemine le trafic envoyé à chaque adresse IP virtuelle vers la VM qui héberge actuellement l'instance active du composant ASCS ou ERS de cette adresse IP virtuelle.
Ouvrez Cloud Shell.
Réservez une adresse IP pour l'adresse IP virtuelle du composant ASCS et pour l'adresse IP virtuelle du composant ERS. Pour ASCS, l'adresse IP est celle utilisée par les applications pour accéder à SAP NetWeaver. Pour ERS, l'adresse IP est celle utilisée pour la réplication du serveur de mise en file d'attente. Si vous omettez l'option
--addresses
, une adresse IP du sous-réseau spécifié est choisie pour vous :~
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_ADDRESSRemplacez les éléments suivants :
ASCS_VIP_NAME
: spécifiez un nom pour l'adresse IP virtuelle de l'instance ASCS. Par exemple,ascs-aha-vip
.CLUSTER_REGION
: spécifiez la région Google Cloud dans laquelle se trouve votre cluster. Par exemple,us-central1
.CLUSTER_SUBNET
: spécifiez le sous-réseau que vous utilisez avec le cluster. Par exemple,example-sub-network-sap
.ASCS_VIP_ADDRESS
: vous pouvez éventuellement spécifier une adresse IP pour l'adresse IP virtuelle ASCS au format CIDR. Par exemple,10.1.0.2
.ERS_VIP_NAME
: nom de l'adresse IP virtuelle de l'instance ERS. Par exemple,ers-aha-vip
.ERS_VIP_ADDRESS
: vous pouvez éventuellement spécifier une adresse IP pour l'adresse IP virtuelle ERS au format CIDR. Par exemple,10.1.0.4
.
Pour en savoir plus sur la réservation d'une adresse IP statique, consultez la page Réserver une adresse IP interne statique.
Confirmez la réservation d'adresse IP :
~
gcloud compute addresses describe VIP_NAME \ --region CLUSTER_REGIONUn résultat semblable aux lignes suivantes doit s'afficher :
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
Définir les noms d'hôte pour l'adresse IP virtuelle dans /etc/hosts
Définissez un nom d'hôte pour chaque adresse IP virtuelle, puis ajoutez les adresses IP et les noms d'hôte des VM et des adresses IP virtuelles au fichier /etc/hosts
sur chaque VM.
Les noms d'hôte VIP ne sont pas connus en dehors des VM, sauf si vous les ajoutez également à votre service DNS. L'ajout de ces entrées au fichier /etc/hosts
local protège votre cluster contre toute interruption de votre service DNS.
Vos mises à jour du fichier /etc/hosts
doivent ressembler à l'exemple suivant :
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
Créer les vérifications d'état de Cloud Load Balancing
Créez des vérifications d'état : une pour l'instance ASCS active et une pour l'instance ERS active.
Dans Cloud Shell, créez les vérifications d'état. Pour éviter tout conflit avec d'autres services, indiquez les numéros de port des instances ASCS et ERS dans la plage privée (49152-65535). Les valeurs de l'intervalle entre deux vérifications et du délai avant expiration dans les commandes suivantes sont légèrement supérieures aux valeurs par défaut afin d'augmenter la tolérance au basculement lors des événements de migration à chaud de Compute Engine. Vous pouvez ajuster les valeurs, si nécessaire :
~
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
Confirmez la création de chaque vérification d'état :
~
gcloud compute health-checks describe HEALTH_CHECK_NAMEUn résultat semblable aux lignes suivantes doit s'afficher :
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
Créer une règle de pare-feu pour les vérifications d'état
Si ce n'est pas déjà fait, définissez une règle de pare-feu pour un port situé dans la plage privée qui permet d'accéder à vos VM hôtes à partir des plages d'adresses IP utilisées par les vérifications d'état de Cloud Load Balancing, 35.191.0.0/16
et 130.211.0.0/22
. Pour en savoir plus sur les règles de pare-feu pour les équilibreurs de charge, consultez la section Créer des règles de pare-feu pour les vérifications d'état.
Si ce n'est pas déjà fait, ajoutez un tag réseau à vos VM hôtes. Ce tag réseau est utilisé par la règle de pare-feu pour les vérifications d'état.
~
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
Créez une règle de pare-feu qui utilise le tag réseau pour autoriser les vérifications d'état :
~
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_NUMExemple :
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
Créer des groupes d'instances Compute Engine
Vous devez créer un groupe d'instances dans chaque zone qui contient une VM de nœud de cluster, puis ajouter la VM de cette zone au groupe d'instances.
Dans Cloud Shell, créez le groupe d'instances principal et ajoutez-y 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
Dans Cloud Shell, créez le groupe d'instances secondaire et ajoutez-y la VM secondaire :
~
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
Confirmez la création des groupes d'instances :
~
gcloud compute instance-groups unmanaged listUn résultat semblable aux lignes suivantes doit s'afficher :
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
Configurer les services de backend
Créez deux services de backend, un pour ASCS et l'autre pour ERS. Ajoutez les deux groupes d'instances à chaque service de backend, en spécifiant l'autre groupe d'instances comme groupe d'instances de basculement dans chaque service de backend. Enfin, créez des règles de transfert entre les adresses IP virtuelles et les services de backend.
Dans Cloud Shell, créez le service de backend et le groupe de basculement pour ASCS :
Créez le service de backend pour 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-checksAjoutez le groupe d'instances principal au service de backend ASCS :
~
gcloud compute backend-services add-backend ASCS_BACKEND_SERVICE_NAME \ --instance-group PRIMARY_IG_NAME \ --instance-group-zone PRIMARY_ZONE \ --region CLUSTER_REGIONAjoutez le groupe d'instances secondaire en tant que groupe d'instances de basculement pour le service de 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
Dans Cloud Shell, créez le service de backend et le groupe de basculement pour ERS :
Créez le service de backend pour le service 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-checksAjoutez le groupe d'instances secondaire au service de backend ERS :
~
gcloud compute backend-services add-backend ERS_BACKEND_SERVICE_NAME \ --instance-group SECONDARY_IG_NAME \ --instance-group-zone SECONDARY_ZONE \ --region CLUSTER_REGIONAjoutez le groupe d'instances principal en tant que groupe d'instances de basculement pour le service de 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
Si vous le souhaitez, vérifiez que les services de backend contiennent les groupes d'instances comme prévu :
~
gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --region=CLUSTER_REGIONUn résultat semblable à l'exemple suivant doit s'afficher pour le service de backend ASCS. Pour ERS,
failover: true
s'affiche sur le groupe d'instances principal :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
Dans Cloud Shell, créez des règles de transfert pour les services de backend ASCS et ERS :
Créez la règle de transfert de l'adresse IP virtuelle ASCS vers le service de 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 ALLCréez la règle de transfert depuis l'adresse IP virtuelle ERS vers le service de 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
Tester la configuration de l'équilibreur de charge
Même si vos groupes d'instances backend ne seront considérés comme opérationnels que plus tard, vous pouvez tester la configuration de l'équilibreur de charge en configurant un écouteur pour répondre aux vérifications d'état. Une fois un écouteur configuré, si l'équilibreur de charge est correctement configuré, les groupes d'instances backend deviennent opérationnels.
Les sections suivantes présentent différentes méthodes que vous pouvez utiliser pour tester la configuration.
Tester l'équilibreur de charge avec l'utilitaire socat
Vous pouvez utiliser l'utilitaire socat
pour écouter temporairement un port de vérification de l'état. Vous devez tout de même installer l'utilitaire socat
, car vous l'utiliserez plus tard lors de la configuration des ressources du cluster.
En tant qu'utilisateur racine, installez sur les deux VM hôtes l'utilitaire
socat
:#
zypper install socatSur la VM principale, attribuez temporairement l'adresse IP virtuelle à la carte réseau eth0 :
ip addr add VIP_ADDRESS dev eth0
Sur la VM principale, démarrez un processus
socat
pour écouter le port de vérification d'état ASCS pendant 60 secondes :#
timeout 60s socat - TCP-LISTEN:ASCS_HEALTHCHECK_PORT_NUM,forkDans Cloud Shell, après avoir attendu quelques secondes pour que la vérification de l'état détecte l'écouteur, vérifiez l'état de votre groupe d'instances backend ASCS :
~
gcloud compute backend-services get-health ASCS_BACKEND_SERVICE_NAME \ --region CLUSTER_REGIONUn résultat semblable à l'exemple suivant doit s'afficher pour 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
Supprimez l'adresse IP virtuelle de l'interface eth0 :
ip addr del VIP_ADDRESS dev eth0
Répétez les étapes pour ERS, en remplaçant les valeurs des variables ASCS par celles d'ERS.
Tester l'équilibreur de charge à l'aide du port 22
Si le port 22
est ouvert pour les connexions SSH sur vos VM hôtes, vous pouvez modifier temporairement le vérificateur de l'état afin d'utiliser ce port 22
, qui dispose d'un écouteur capable de lui répondre.
Pour utiliser temporairement le port 22
, procédez comme suit :
Dans la console Google Cloud, accédez à la page Vérifications d'état de Compute Engine :
Cliquez sur le nom de votre vérification d'état.
Cliquez sur Modifier.
Dans le champ Port, remplacez le numéro de port par 22.
Cliquez sur Enregistrer, puis patientez une minute ou deux.
Dans Cloud Shell, après avoir attendu quelques secondes pour que la vérification de l'état détecte l'écouteur, vérifiez l'état de vos groupes d'instances backend :
~
gcloud compute backend-services get-health BACKEND_SERVICE_NAME \ --region CLUSTER_REGIONLa sortie obtenue doit ressembler à ceci :
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
Lorsque vous avez terminé, rétablissez le numéro de port d'origine de la vérification de l'état.
Configurer Pacemaker
La procédure suivante configure l'implémentation SUSE d'un cluster Pacemaker sur des VM Compute Engine pour SAP NetWeaver.
Pour en savoir plus sur la configuration des clusters à haute disponibilité sur SLES, consultez la documentation de l'extension SUSE Linux Enterprise High Availability Extension correspondant à votre version de SLES.
Installer les packages de cluster requis
En tant qu'utilisateur racine, sur les hôtes principal et secondaire, téléchargez les packages de cluster requis suivants :
Le modèle
ha_sles
:#
zypper install -t pattern ha_slesLe package
sap-suse-cluster-connector
:#
zypper install -y sap-suse-cluster-connectorSi ce n'est pas déjà fait, installez l'utilitaire
socat
:#
zypper install -y socat
Vérifiez que les derniers agents à haute disponibilité sont chargés :
#
zypper se -t patch SUSE-SLE-HA
Initialiser, configurer et démarrer le cluster sur la VM principale
Vous initialisez le cluster à l'aide du script SUSE ha-cluster-init
. Vous devez ensuite modifier le fichier de configuration Corosync et le synchroniser avec le nœud secondaire. Après avoir démarré le cluster, vous pouvez définir d'autres propriétés et valeurs par défaut du cluster à l'aide des commandes crm
.
Créer les fichiers de configuration Corosync
Créez un fichier de configuration Corosync sur l'hôte principal :
À l'aide de l'éditeur de texte de votre choix, créez le fichier suivant :
/etc/corosync/corosync.conf
Dans le fichier
corosync.conf
de l'hôte principal, ajoutez la configuration suivante en remplaçant le texte de variable en italique par vos valeurs :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 }
Remplacez les éléments suivants :
STATIC_IP_OF_THIS_HOST
: spécifiez l'adresse IP interne statique principale de cette VM, comme indiqué sous "Interfaces réseau" dans la console Google Cloud ou affiché pargcloud compute instances describe VM_NAME
.THIS_HOST_NAME
: spécifiez le nom d'hôte de cette VM.OTHER_HOST_NAME
: spécifiez le nom d'hôte de l'autre VM du cluster.
Créez un fichier de configuration Corosync sur l'hôte secondaire en répétant les étapes que vous avez utilisées pour l'hôte principal. À l'exception de l'adresse IP statique du HDB sur la propriété
Bindnetaddr
et de l'ordre des noms d'hôte dansnodelist
, les valeurs de propriété du fichier de configuration sont identiques pour chaque hôte.
Initialiser le cluster
Pour initialiser le cluster, procédez comme suit :
Sur l'hôte principal, en tant qu'utilisateur racine, initialisez le cluster à l'aide du script SUSE
ha-cluster-init
. Les commandes suivantes nomment le cluster et créent le fichier de configurationcorosync.conf
: configurez-le ainsi que la synchronisation entre les nœuds du cluster.#
ha-cluster-init --name CLUSTER_NAME --yes --interface eth0 csync2#
ha-cluster-init --name CLUSTER_NAME --yes --interface eth0 corosyncDémarrez Pacemaker sur l'hôte principal :
#
systemctl enable pacemaker#
systemctl start pacemaker
Définir les propriétés supplémentaires du cluster
Définissez les propriétés générales du 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"Lorsque vous définissez les ressources de cluster individuelles, les valeurs que vous définissez pour
resource-stickiness
etmigration-threshold
remplacent les valeurs par défaut que vous définissez ici.Vous pouvez afficher les valeurs par défaut de la ressource ainsi que les valeurs de toutes les ressources définies en saisissant
crm config show
.
Associer la VM secondaire au cluster
Depuis le terminal ouvert de la VM principale, associez et démarrez le cluster sur la VM secondaire via SSH.
À partir de la VM principale, exécutez les options de script
ha-cluster-join
suivantes sur la VM secondaire via SSH. Si vous avez configuré votre cluster HA comme décrit dans les présentes instructions, vous pouvez ignorer les avertissements relatifs au watchdog.Exécutez l'option
--interface eth0 csync2
:#
ssh SECONDARY_VM_NAME 'ha-cluster-join --cluster-node PRIMARY_VM_NAME --yes --interface eth0 csync2'Exécutez l'option
ssh_merge
:#
ssh SECONDARY_VM_NAME 'ha-cluster-join --cluster-node PRIMARY_VM_NAME --yes ssh_merge'Exécutez l'option
cluster
:#
ssh SECONDARY_VM_NAME 'ha-cluster-join --cluster-node PRIMARY_VM_NAME --yes cluster'
Démarrez Pacemaker sur l'hôte secondaire :
Activez Pacemaker :
#
ssh SECONDARY_VM_NAME systemctl enable pacemakerDémarrez Pacemaker :
#
ssh SECONDARY_VM_NAME systemctl start pacemaker
Sur l'un de ces hôtes, en mode root, vérifiez que le cluster affiche les deux nœuds :
#
crm_mon -sLa sortie obtenue doit ressembler à ceci :
CLUSTER OK: 2 nodes online, 0 resource instances configured
Configurer les ressources du cluster pour l'infrastructure
Vous définissez les ressources gérées par Pacemaker dans un cluster à haute disponibilité. Vous devez définir des ressources pour les composants de cluster suivants :
- Le dispositif de cloisonnement, qui empêche les scénarios de split-brain
- Les répertoires ASCS et ERS dans le système de fichiers partagé
- Les vérifications d'état
- Les adresses IP virtuelles
- Les composants ASCS et ERS
Vous définissez les ressources des composants ASCS et ERS après le reste des ressources car vous devez d'abord installer SAP NetWeaver.
Activer le mode de maintenance
Sur l'un des hôtes, en mode root, passez le cluster en mode de maintenance :
#
crm configure property maintenance-mode="true"Confirmez le mode de maintenance :
#
crm statusLe résultat doit indiquer que la gestion des ressources est désactivée, comme illustré dans l'exemple suivant :
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
Configurer le cloisonnement
Pour configurer le cloisonnement, vous devez définir une ressource de cluster avec l'agent fence_gce
pour chaque VM hôte.
Pour garantir la séquence correcte d'événements après une action de cloisonnement, vous devez également configurer le système d'exploitation pour retarder le redémarrage de Corosync après la fermeture d'une VM. Vous pouvez également ajuster le délai avant expiration de Pacemaker pour les redémarrages afin de tenir compte de ce délai.
Créer les ressources de l'appareil de cloisonnement
Pour chaque VM du cluster, vous créez pour l'appareil de cloisonnement une ressource de cluster qui peut redémarrer la VM. L'appareil de cloisonnement d'une VM doit s'exécuter sur une autre VM. Vous devez donc configurer l'emplacement de la ressource de cluster pour qu'elle s'exécute sur n'importe quelle VM, à l'exception de la VM qu'elle peut redémarrer.
Sur l'hôte principal, en tant qu'utilisateur racine, créez une ressource de cluster pour un appareil de cloisonnement associé à 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=30Configurez l'emplacement de l'appareil de cloisonnement de la VM principale afin qu'il ne soit actif que sur la VM secondaire :
#
crm configure location FENCING_LOCATION_NAME_PRIMARY_VM \ FENCING_RESOURCE_PRIMARY_VM -inf: "PRIMARY_VM_NAME"Confirmez la configuration nouvellement créée :
#
crm config show related:FENCING_RESOURCE_PRIMARY_VMUn résultat semblable aux lignes suivantes doit s'afficher :
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
Sur l'hôte principal, en tant qu'utilisateur racine, créez une ressource de cluster pour un appareil de cloisonnement associé à la VM secondaire :
#
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=4Configurez l'emplacement de l'appareil de cloisonnement de la VM secondaire afin qu'il ne soit actif que sur la VM principale :
#
crm configure location FENCING_LOCATION_NAME_SECONDARY_VM \ FENCING_RESOURCE_SECONDARY_VM -inf: "SECONDARY_VM_NAME"Confirmez la configuration nouvellement créée :
#
crm config show related:FENCING_RESOURCE_SECONDARY_VMUn résultat semblable aux lignes suivantes doit s'afficher :
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
Définir un délai pour le redémarrage de Corosync
Sur les deux hôtes, en tant qu'utilisateur racine, créez un fichier de dépôt
systemd
qui retarde le démarrage de Corosync pour garantir le bon déroulement de la séquence d'événements après le redémarrage d'une VM cloisonnée :systemctl edit corosync.service
Ajoutez les lignes suivantes au fichier :
[Service] ExecStartPre=/bin/sleep 60
Enregistrez le fichier et quittez l'éditeur.
Rechargez la configuration du gestionnaire systemd.
systemctl daemon-reload
Vérifiez que le fichier de dépôt a été créé :
service corosync status
Une ligne correspondant au fichier de dépôt doit s'afficher, comme illustré dans l'exemple suivant :
● 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
Créer les ressources du système de fichiers
Maintenant que vous avez créé les répertoires du système de fichiers partagé, vous pouvez définir les ressources du cluster.
Configurez les ressources du système de fichiers pour les répertoires spécifiques de l'instance.
#
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=40sRemplacez les éléments suivants :
ASCS_FILE_SYSTEM_RESOURCE
: spécifiez le nom de la ressource de cluster pour le système de fichiers ASCS.NFS_PATH
: spécifiez le chemin d'accès au système de fichiers NFS pour ASCS.SID
: spécifiez l'ID système (SID). Utilisez des majuscules pour toutes les lettres.ASCS_INSTANCE_NUMBER
: spécifiez le numéro d'instance 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=40sRemplacez les éléments suivants :
ERS_FILE_SYSTEM_RESOURCE
: spécifiez le nom de la ressource de cluster pour le système de fichiers ERS.NFS_PATH
: spécifiez le chemin d'accès au système de fichiers NFS pour ERS.SID
: spécifiez l'ID système (SID). Utilisez des majuscules pour toutes les lettres.ERS_INSTANCE_NUMBER
: spécifiez le numéro d'instance ASCS.
Confirmez la configuration nouvellement créée :
#
crm configure show ASCS_FILE_SYSTEM_RESOURCE ERS_FILE_SYSTEM_RESOURCEUn résultat semblable aux lignes suivantes doit s'afficher :
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
Créer les ressources des vérifications d'état
Configurez les ressources du cluster pour les vérifications d'état ASCS et 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=0Confirmez la configuration nouvellement créée :
#
crm configure show ERS_HEALTH_CHECK_RESOURCE ASCS_HEALTH_CHECK_RESOURCEUn résultat semblable aux lignes suivantes doit s'afficher :
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
Créer les ressources des adresses IP virtuelles
Définissez les ressources du cluster pour les adresses IP virtuelles.
Si vous avez besoin de rechercher l'adresse IP virtuelle numérique, vous pouvez utiliser :
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)"
Créez les ressources de cluster pour les adresses IP virtuelles ASCS et 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=60sConfirmez la configuration nouvellement créée :
#
crm configure show ASCS_VIP_RESOURCE ERS_VIP_RESOURCEUn résultat semblable aux lignes suivantes doit s'afficher :
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
Afficher les ressources définies
Pour afficher toutes les ressources que vous avez définies jusqu'à présent, saisissez la commande suivante :
#
crm statusUn résultat semblable aux lignes suivantes doit s'afficher :
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)
Installer ASCS et ERS
La section suivante n'aborde que les exigences et les recommandations spécifiques à l'installation de SAP NetWeaver sur Google Cloud.
Pour obtenir des instructions d'installation complètes, consultez la documentation de SAP NetWeaver.
Préparer l'installation
Pour assurer la cohérence entre les clusters et simplifier l'installation, définissez les utilisateurs, les groupes et les autorisations puis mettez le serveur secondaire en mode veille avant d'installer les composants SAP NetWeaver ASCS et ERS.
Désactivez le mode de maintenance pour le cluster :
#
crm configure property maintenance-mode="false"Sur les deux serveurs, en tant qu'utilisateur racine, saisissez les commandes suivantes en spécifiant les ID d'utilisateur et de groupe adaptés à votre environnement :
#
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 -RRemplacez les éléments suivants :
GID_SAPINST
: spécifiez l'ID de groupe Linux pour l'outil de provisionnement SAP.GID_SAPSYS
: spécifiez l'ID de groupe Linux pour l'utilisateur SAPSYS.UID_SIDADM
: spécifiez l'ID utilisateur Linux pour l'administrateur du système SAP (SID).SID_LC
: spécifiez l'ID système (SID). Utilisez des minuscules pour toutes les lettres.UID_SAPADM
: spécifiez l'ID utilisateur de l'agent hôte SAP.SID
: spécifiez l'ID système (SID). Utilisez des majuscules pour toutes les lettres.
Par exemple, voici un schéma pratique de numérotation GID et UID :
Group sapinst 1001 Group sapsys 1002 Group dbhshm 1003 User en2adm 2001 User sapadm 2002 User dbhadm 2003
Installer le composant ASCS
Sur le serveur secondaire, entrez la commande suivante pour mettre le serveur secondaire en mode veille :
#
crm_standby -v on -N ${HOSTNAME};Le fait de placer le serveur secondaire en mode veille consolide toutes les ressources de cluster sur le serveur principal, ce qui simplifie l'installation.
Vérifiez que le serveur secondaire est en mode veille :
#
crm statusUn résultat semblable aux lignes suivantes doit s'afficher :
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
Sur le serveur principal, en tant qu'utilisateur racine, accédez à un répertoire d'installation temporaire, tel que
/tmp
, pour installer l'instance ASCS en exécutant l'outil Software Provisioning Manager (SWPM) de SAP.Pour accéder à l'interface Web de SWPM, vous devez disposer du mot de passe de l'utilisateur
root
. Si votre politique informatique n'autorise pas l'administrateur SAP à avoir accès au mot de passe racine, vous pouvez utiliserSAPINST_REMOTE_ACCESS_USER
.Lorsque vous démarrez SWPM, utilisez le paramètre
SAPINST_USE_HOSTNAME
pour spécifier le nom d'hôte virtuel que vous avez défini pour l'adresse IP virtuelle ASCS dans le fichier/etc/hosts
.Exemple :
cd /tmp; /mnt/nfs/install/SWPM/sapinst SAPINST_USE_HOSTNAME=vh-aha-scs
Sur la dernière page de confirmation SWPM, assurez-vous que le nom d'hôte virtuel est correct.
Une fois la configuration terminée, retirez la VM secondaire du mode veille :
#
crm_standby -v off -N ${HOSTNAME}; # On SECONDARY
Installer le composant ERS
Sur le serveur principal, en tant qu'utilisateur racine ou
SID_LCadm
, arrêtez le service ASCS.#
su - SID_LCadm -c "sapcontrol -nr ASCS_INSTANCE_NUMBER -function Stop"#
su - SID_LCadm -c "sapcontrol -nr ASCS_INSTANCE_NUMBER -function StopService"Sur le serveur principal, saisissez la commande suivante pour mettre le serveur principal en mode veille :
#
crm_standby -v on -N ${HOSTNAME};Le fait de placer le serveur principal en mode veille consolide toutes les ressources de cluster sur le serveur secondaire, ce qui simplifie l'installation.
Vérifiez que le serveur principal est en mode veille :
#
crm statusSur le serveur secondaire, en tant qu'utilisateur racine, accédez à un répertoire d'installation temporaire, tel que
/tmp
, pour installer l'instance ERS en exécutant l'outil Software Provisioning Manager (SWPM) de SAP.Utilisez les mêmes nom d'utilisateur et mot de passe que lorsque vous avez installé le composant ASCS pour accéder à SWPM.
Lorsque vous démarrez SWPM, utilisez le paramètre
SAPINST_USE_HOSTNAME
pour spécifier le nom d'hôte virtuel que vous avez défini pour l'adresse IP virtuelle ERS dans le fichier/etc/hosts
.Exemple :
cd /tmp; /mnt/nfs/install/SWPM/sapinst SAPINST_USE_HOSTNAME=vh-aha-ers
Sur la dernière page de confirmation SWPM, assurez-vous que le nom d'hôte virtuel est correct.
Retirez la VM principale du mode veille pour que les deux instances soient actives :
#
crm_standby -v off -N ${HOSTNAME};
Configurer les services SAP
Vous devez vérifier que les services sont correctement configurés, vérifier les paramètres des profils ASCS et ERS, et ajouter l'utilisateur SID_LCadm
au groupe d'utilisateurs haclient
.
Vérifier les entrées de service SAP
Sur les deux serveurs, vérifiez que votre fichier
/usr/sap/sapservices
contient bien des entrées pour les services ASCS et ERS. Pour ce faire, vous pouvez utiliser l'intégrationsystemV
ousystemd
.Vous pouvez ajouter toutes les entrées manquantes à l'aide de la commande
sapstartsrv
avec les optionspf=PROFILE_OF_THE_SAP_INSTANCE
et-reg
.Pour en savoir plus sur ces intégrations, consultez les notes SAP suivantes :
- 3139184 - Linux : intégration de
systemd
poursapstartsrv
et l'agent hôte SAP 3115048 -
sapstartsrv
avec compatibilitésystemd
Linux native
systemV
Voici un exemple de la façon dont les entrées des services ASCS et ERS se présentent dans le fichier
/usr/sap/sapservices
lorsque vous utilisez l'intégrationsystemV
:#
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
Vérifiez que votre fichier
/usr/sap/sapservices
contient des entrées pour les services ASCS et ERS. Voici un exemple de la façon dont ces entrées apparaissent dans le fichier/usr/sap/sapservices
lorsque vous utilisez l'intégrationsystemd
: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
Désactivez l'intégration
systemd
sur les instances ASCS et 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.serviceVérifiez que l'intégration
systemd
est désactivée :#
systemctl list-unit-files | grep sapUn résultat semblable à l'exemple suivant signifie que l'intégration
systemd
est désactivée. Notez que certains services, tels quesaphostagent
etsaptune
, sont activés, et que d'autres sont désactivés.SAPSID_ASCS_INSTANCE_NUMBER.service disabled SAPSID_ERS_INSTANCE_NUMBER.service disabled saphostagent.service enabled sapinit.service generated saprouter.service disabled saptune.service enabled
Pour plus d'informations, consultez le document SUSE Désactiver les services
systemd
des instances SAP ASCS et ERS.
- 3139184 - Linux : intégration de
Arrêter les services SAP
Sur le serveur secondaire, arrêtez le service ERS :
#
su - SID_LCadm -c "sapcontrol -nr ERS_INSTANCE_NUMBER -function Stop"#
su - SID_LCadm -c "sapcontrol -nr ERS_INSTANCE_NUMBER -function StopService"Sur chaque serveur, vérifiez que tous les services sont arrêtés :
#
su - SID_LCadm -c "sapcontrol -nr ASCS_INSTANCE_NUMBER -function GetSystemInstanceList"#
su - SID_LCadm -c "sapcontrol -nr ERS_INSTANCE_NUMBER -function GetSystemInstanceList"Un résultat semblable aux lignes suivantes doit s'afficher :
GetSystemInstanceList FAIL: NIECONN_REFUSED (Connection refused), NiRawConnect failed in plugin_fopen()
Modifier les profils ASCS et ERS
Sur l'un ou l'autre des serveurs, basculez vers le répertoire du profil en utilisant l'une des commandes suivantes :
#
cd /usr/sap/SID/SYS/profile#
cd /sapmnt/SID/profileSi nécessaire, vous pouvez rechercher les noms de vos profils ASCS et ERS en répertoriant les fichiers dans le répertoire de profil ou en utilisant les formats suivants :
SID_ASCSASCS_INSTANCE_NUMBER_ASCS_VIRTUAL_HOST_NAME
SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME
Activez le package
sap-suse-cluster-connector
en ajoutant les lignes suivantes aux profils d'instances ASCS et ERS :#----------------------------------------------------------------------- # SUSE HA library #----------------------------------------------------------------------- service/halib = $(DIR_CT_RUN)/saphascriptco.so service/halib_cluster_connector = /usr/bin/sap_suse_cluster_connector
Si vous utilisez ENSA1, activez la fonction keepalive en définissant les éléments suivants dans le profil ASCS :
enque/encni/set_so_keepalive = true
Pour plus d'informations, consultez la Note SAP 1410736 - TCP/IP : définition de l'intervalle keepalive.
Si nécessaire, modifiez les profils ASCS et ERS pour modifier le comportement de démarrage du serveur de mise en file d'attente et du serveur de réplication de mise en file d'attente.
ENSA1
Dans la section Start SAP enqueue server du profil ASCS, si
Restart_Program_NN
s'affiche, remplacezRestart
parStart
, comme illustré dans l'exemple suivant.Start_Program_01 = local $(_EN) pf=$(_PF)
Dans la section Start enqueue replication server (Démarrer le serveur de réplication de mise en file d'attente) du profil ERS, si vous voyez
Restart_Program_NN
, remplacez "Restart
" par "Start
", comme illustré dans l'exemple suivant.Start_Program_00 = local $(_ER) pf=$(_PFL) NR=$(SCSID)
ENSA2
Dans la section Start SAP enqueue server du profil ASCS, si
Restart_Program_NN
s'affiche, remplacezRestart
parStart
, comme illustré dans l'exemple suivant.Start_Program_01 = local $(_ENQ) pf=$(_PF)
Dans la section Start enqueue replicator du profil ERS, si vous voyez
Restart_Program_NN
, remplacez "Restart
" par "Start
", comme illustré dans l'exemple suivant.Start_Program_00 = local $(_ENQR) pf=$(_PF) ...
Ajouter l'utilisateur sidadm
au groupe d'utilisateurs haclient
Lorsque vous avez installé le sap-suse-cluster-connector
, le processus d'installation a créé un groupe d'utilisateurs haclient
. Pour permettre à l'utilisateur SID_LCadm
de travailler avec le cluster, ajoutez-le au groupe d'utilisateurs haclient
.
Sur les deux serveurs, ajoutez l'utilisateur
SID_LCadm
au groupe d'utilisateurshaclient
:#
usermod -aG haclient SID_LCadm
Configurer les ressources de cluster pour ASCS et ERS
En mode root depuis l'un ou l'autre des serveurs, placez le cluster en mode de maintenance :
#
crm configure property maintenance-mode="true"Vérifiez que le cluster est en mode de maintenance :
#
crm statusSi le cluster est en mode de maintenance, l'état inclut les lignes suivantes :
*** Resource management is DISABLED *** The cluster will not attempt to start, stop or recover services
Créez les ressources de cluster pour les services ASCS et ERS :
ENSA1
Créez la ressource de cluster pour l'instance ASCS. La valeur de
InstanceName
est le nom du profil d'instance généré par SWPM lors de l'installation d'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=10Créez la ressource de cluster pour l'instance ERS. La valeur de
InstanceName
est le nom du profil d'instance généré par SWPM lors de l'installation d'ERS. Le paramètreIS_ERS=true
indique à Pacemaker de définir l'optionrunsersSID
sur1
pour le nœud sur lequel ERS est actif.#
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=1000Confirmez la configuration nouvellement créée :
#
crm configure show ASCS_INSTANCE_RESOURCE ERS_INSTANCE_RESOURCEUn résultat semblable aux lignes suivantes doit s'afficher :
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
Créez la ressource de cluster pour l'instance ASCS. La valeur de
InstanceName
est le nom du profil d'instance généré par SWPM lors de l'installation d'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=60Créez la ressource de cluster pour l'instance ERS. La valeur de
InstanceName
est le nom du profil d'instance généré par SWPM lors de l'installation d'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=trueConfirmez la configuration nouvellement créée :
#
crm configure show ASCS_INSTANCE_RESOURCE ERS_INSTANCE_RESOURCEUn résultat semblable aux lignes suivantes doit s'afficher :
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 \
Configurer les groupes de ressources et les contraintes d'emplacement
Regroupez les ressources ASCS et ERS. Vous pouvez afficher les noms de toutes vos ressources précédemment définies en saisissant la commande
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=3000Remplacez les éléments suivants :
ASCS_RESOURCE_GROUP
: spécifiez un nom de groupe unique pour les ressources de cluster ASCS. Vous pouvez garantir l'unicité en utilisant une convention telle que "SID_ASCSinstance number_group". Par exemple,nw1_ASCS00_group
.ASCS_FILE_SYSTEM_RESOURCE
: spécifiez le nom de la ressource de cluster que vous avez défini précédemment pour le système de fichiers ASCS.ASCS_HEALTH_CHECK_RESOURCE
: spécifiez le nom de la ressource de cluster que vous avez défini précédemment pour la vérification d'état ASCS.ASCS_VIP_RESOURCE
: spécifiez le nom de la ressource de cluster que vous avez défini précédemment pour l'adresse IP virtuelle ASCS.ASCS_INSTANCE_RESOURCE
: spécifiez le nom de la ressource de cluster que vous avez défini précédemment pour l'instance ASCS.
#
crm configure group ERS_RESOURCE_GROUP ERS_FILE_SYSTEM_RESOURCE \ ERS_HEALTH_CHECK_RESOURCE ERS_VIP_RESOURCE \ ERS_INSTANCE_RESOURCERemplacez les éléments suivants :
ERS_RESOURCE_GROUP
: spécifiez un nom de groupe unique pour les ressources de cluster ERS. Vous pouvez garantir l'unicité en utilisant une convention telle que "SID_ERSinstance number_group". Par exemple,nw1_ERS10_group
.ERS_FILE_SYSTEM_RESOURCE
: spécifiez le nom de la ressource de cluster que vous avez défini précédemment pour le système de fichiers ERS.ERS_HEALTH_CHECK_RESOURCE
: spécifiez le nom de la ressource de cluster que vous avez défini précédemment pour la vérification d'état ERS.ERS_VIP_RESOURCE
: spécifiez le nom de la ressource de cluster que vous avez défini précédemment pour l'adresse IP virtuelle ERS.ERS_INSTANCE_RESOURCE
: spécifiez le nom de la ressource de cluster que vous avez défini précédemment pour l'instance ERS.
Confirmez la configuration nouvellement créée :
#
crm configure show type:groupUn résultat semblable aux lignes suivantes doit s'afficher :
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
Créez les contraintes de colocation :
ENSA1
Créez une contrainte de colocation qui empêche les ressources ASCS de s'exécuter sur le même serveur que les ressources ERS :
#
crm configure colocation PREVENT_SCS_ERS_COLOC -5000: ERS_RESOURCE_GROUP ASCS_RESOURCE_GROUPConfigurez ASCS pour basculer vers le serveur sur lequel ERS est exécuté, comme déterminé par l'option
runsersSID
égale à1
:#
crm configure location LOC_SCS_SID_FAILOVER_TO_ERS ASCS_INSTANCE_RESOURCE \ rule 2000: runs_ers_SID eq 1Configurez ASCS pour qu'il démarre avant que ERS ne soit déplacé vers l'autre serveur après un basculement :
#
crm configure order ORD_SAP_SID_FIRST_START_ASCS \ Optional: ASCS_INSTANCE_RESOURCE:start \ ERS_INSTANCE_RESOURCE:stop symmetrical=falseConfirmez la configuration nouvellement créée :
#
crm configure show type:colocation type:location type:orderUn résultat semblable aux lignes suivantes doit s'afficher :
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
Créez une contrainte de colocation qui empêche les ressources ASCS de s'exécuter sur le même serveur que les ressources ERS :
#
crm configure colocation PREVENT_SCS_ERS_COLOC -5000: ERS_RESOURCE_GROUP ASCS_RESOURCE_GROUPConfigurez ASCS pour qu'il démarre avant que ERS ne soit déplacé vers l'autre serveur après un basculement :
#
crm configure order ORD_SAP_SID_FIRST_START_ASCS \ Optional: ASCS_INSTANCE_RESOURCE:start \ ERS_INSTANCE_RESOURCE:stop symmetrical=falseConfirmez la configuration nouvellement créée :
#
crm configure show type:colocation type:orderUn résultat semblable aux lignes suivantes doit s'afficher :
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
Désactivez le mode de maintenance.
#
crm configure property maintenance-mode="false"
Valider et tester le cluster
Cette section vous explique comment exécuter les tests suivants :
- Recherchez les erreurs de configuration.
- Vérifiez que les ressources ASCS et ERS basculent correctement les serveurs lors des basculements.
- Vérifiez que les verrous sont conservés.
- Simuler un événement de maintenance Compute Engine pour vérifier que la migration à chaud ne déclenche pas de basculement
Vérifier la configuration du cluster
En tant qu'utilisateur racine, sur l'un ou l'autre des serveurs, vérifiez les nœuds sur lesquels vos ressources s'exécutent :
#
crm statusDans l'exemple suivant, les ressources ASCS s'exécutent sur le serveur
nw-ha-vm-1
et les ressources ERS sur le serveurnw-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
Passez à l'utilisateur
SID_LCadm
:#
su - SID_LCadmVérifiez la configuration du cluster. Pour
INSTANCE_NUMBER
, spécifiez le numéro de l'instance ASCS ou ERS active sur le serveur sur lequel vous saisissez la commande :>
sapcontrol -nr INSTANCE_NUMBER -function HAGetFailoverConfigHAActive
doit êtreTRUE
, comme illustré dans l'exemple suivant :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
En tant que
SID_LCadm
, recherchez les erreurs dans la configuration :>
sapcontrol -nr INSTANCE_NUMBER -function HACheckConfigUn résultat semblable aux lignes suivantes doit s'afficher :
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
Sur le serveur où ASCS est actif, en tant que
SID_LCadm
, simulez un basculement :>
sapcontrol -nr ASCS_INSTANCE_NUMBER -function HAFailoverToNode ""En tant qu'utilisateur racine, si vous suivez le basculement à l'aide de
crm_mon
, vous devriez voir ASCS se déplacer vers l'autre serveur, ERS s'arrêter sur ce serveur, puis passer au serveur sur lequel ASCS s'exécutait.
Simuler un basculement
Testez votre cluster en simulant une défaillance sur l'hôte principal. Utilisez un système de test ou exécutez le test sur votre système de production avant de mettre le système en service.
Vous pouvez simuler une défaillance de différentes manières, par exemple :
shutdown -r
(sur le nœud actif)ip link set eth0 down
echo c > /proc/sysrq-trigger
Ces instructions utilisent ip link set eth0 down
pour déconnecter l'interface réseau, car cette commande valide à la fois le basculement et le cloisonnement.
Sauvegardez votre système.
En tant qu'utilisateur racine sur l'hôte avec l'instance SCS active, déconnectez l'interface réseau :
#
ip link set eth0 downReconnectez-vous à l'un des hôtes à l'aide de SSH, puis connectez-vous en tant qu'utilisateur racine.
Saisissez
crm status
pour vérifier que l'hôte principal est désormais actif sur la VM qui contenait l'hôte secondaire. Le redémarrage automatique est activé dans le cluster. Par conséquent, l'hôte arrêté redémarre et prend le rôle d'hôte secondaire, comme illustré dans l'exemple suivant.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
Vérifier que les entrées de verrou sont conservées
Pour vérifier que les entrées de verrou sont conservées lors d'un basculement, sélectionnez d'abord l'onglet correspondant à votre version du serveur de mise en file d'attente et suivez la procédure permettant de générer des entrées de verrou, simulez un basculement et vérifiez que les entrées de verrou sont conservés après la réactivation de ASCS.
ENSA1
En tant que
SID_LCadm
, sur le serveur sur lequel ERS est actif, générez des entrées de verrou à l'aide du programmeenqt
:>
enqt pf=/PATH_TO_PROFILE/SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME 11 NUMBER_OF_LOCKSEn tant que
SID_LCadm
, sur le serveur sur lequel ASCS est actif, vérifiez que les entrées de verrou sont enregistrées :>
sapcontrol -nr ASCS_INSTANCE_NUMBER -function EnqGetStatistic | grep locks_nowSi vous avez créé 10 verrous, vous devriez obtenir un résultat semblable à celui-ci :
locks_now: 10
En tant que
SID_LCadm
, sur le serveur sur lequel ERS est actif, démarrez la fonction de surveillance,OpCode=20
, du programmeenqt
:>
enqt pf=/PATH_TO_PROFILE/SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME 20 1 1 9999Exemple :
>
enqt pf=/sapmnt/AHA/profile/AHA_ERS10_vh-ers-aha 20 1 1 9999Si ASCS est actif, redémarrez le serveur.
Sur le serveur de surveillance, au moment où Pacemaker arrête ERS pour le déplacer vers l'autre serveur, un résultat semblable à ce qui suit doit s'afficher.
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
Lorsque la surveillance
enqt
s'arrête, quittez en saisissantCtrl + c
.Vous pouvez éventuellement surveiller le basculement du cluster en tant qu'utilisateur racine :
#
crm_monEn tant que
SID_LCadm
, après avoir confirmé que les verrous ont été conservés, libérez-les :>
enqt pf=/PATH_TO_PROFILE/SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAME 12 NUMBER_OF_LOCKSEn tant que
SID_LCadm
, sur le serveur sur lequel ASCS est actif, vérifiez que les entrées de verrou sont supprimées :>
sapcontrol -nr ASCS_INSTANCE_NUMBER -function EnqGetStatistic | grep locks_now
ENSA2
En tant que
SID_LCadm
, sur le serveur sur lequel ASCS est actif, générez des entrées de verrou à l'aide du programmeenq_adm
:>
enq_admin --set_locks=NUMBER_OF_LOCKS:X:DIAG::TAB:%u pf=/PATH_TO_PROFILE/SID_ASCSASCS_INSTANCE_NUMBER_ASCS_VIRTUAL_HOST_NAMEEn tant que
SID_LCadm
, sur le serveur sur lequel ASCS est actif, vérifiez que les entrées de verrou sont enregistrées :>
sapcontrol -nr ASCS_INSTANCE_NUMBER -function EnqGetStatistic | grep locks_nowSi vous avez créé 10 verrous, vous devriez obtenir un résultat semblable à celui-ci :
locks_now: 10
Lorsque ERS est actif, vérifiez que les entrées de verrou ont bien été répliquées :
>
sapcontrol -nr ERS_INSTANCE_NUMBER -function EnqGetStatistic | grep locks_nowLe nombre de verrous renvoyés doit être identique à celui de l'instance ASCS.
Si ASCS est actif, redémarrez le serveur.
Vous pouvez éventuellement surveiller le basculement du cluster en tant qu'utilisateur racine :
#
crm_monEn tant que
SID_LCadm
, sur le serveur sur lequel ASCS a redémarré, vérifiez que les entrées de verrou ont été conservées :>
sapcontrol -nr ASCS_INSTANCE_NUMBER -function EnqGetStatistic | grep locks_nowEn tant que
SID_LCadm
, sur le serveur sur lequel ERS est actif, libérez les verrous après avoir confirmé qu'ils ont été conservés :>
enq_admin --release_locks=NUMBER_OF_LOCKS:X:DIAG::TAB:%u pf=/PATH_TO_PROFILE/SID_ERSERS_INSTANCE_NUMBER_ERS_VIRTUAL_HOST_NAMEEn tant que
SID_LCadm
, sur le serveur sur lequel ASCS est actif, vérifiez que les entrées de verrou sont supprimées :>
sapcontrol -nr ASCS_INSTANCE_NUMBER -function EnqGetStatistic | grep locks_nowUn résultat semblable à l'exemple suivant doit s'afficher :
locks_now: 0
Simuler un événement de maintenance Compute Engine
Simulez un événement de maintenance Compute Engine pour vous assurer que la migration à chaud ne déclenche pas de basculement.
Les valeurs de délai avant expiration et d'intervalle utilisées dans ces instructions tiennent compte de la durée des migrations à chaud. Si vous utilisez des valeurs plus courtes dans la configuration de votre cluster, le risque de déclenchement d'un basculement par la migration à chaud augmente.
Pour tester la tolérance de votre cluster pour la migration à chaud, procédez comme suit :
Sur le nœud principal, déclenchez un événement de maintenance simulé à l'aide de la commande CLI gcloud suivante :
#
gcloud compute instances simulate-maintenance-event PRIMARY_VM_NAMEVérifiez que le nœud principal ne change pas :
#
crm status
Évaluer votre charge de travail SAP NetWeaver
Pour automatiser les vérifications de validation continues pour vos charges de travail à haute disponibilité SAP NetWeaver exécutées sur Google Cloud, vous pouvez utiliser le gestionnaire de charges de travail.
Le gestionnaire de charges de travail vous permet d'analyser et d'évaluer automatiquement vos charges de travail SAP NetWeaver à haute disponibilité par rapport aux bonnes pratiques des fournisseurs SAP, Google Cloud et OS. Cela permet d'améliorer la qualité, les performances et la fiabilité de vos charges de travail.
Pour en savoir plus sur les bonnes pratiques compatibles avec le gestionnaire de charges de travail pour évaluer les charges de travail SAP NetWeaver à haute disponibilité exécutées sur Google Cloud, consultez la page Bonnes pratiques pour le gestionnaire de charges de travail SAP. Pour en savoir plus sur la création et l'exécution d'une évaluation à l'aide du gestionnaire de charges de travail, consultez la page Créer et exécuter une évaluation.
Dépannage
Pour résoudre les problèmes liés aux configurations à haute disponibilité pour SAP NetWeaver, consultez la page Dépannage des configurations à haute disponibilité pour SAP.
Collecter des informations de diagnostic pour les clusters SAP NetWeaver à haute disponibilité
Si vous avez besoin d'aide pour résoudre un problème lié à des clusters à haute disponibilité pour SAP NetWeaver, rassemblez les informations de diagnostic requises et contactez Cloud Customer Care.
Pour collecter des informations de diagnostic, consultez la page Informations de diagnostic sur les clusters à haute disponibilité SLES.Assistance
Pour les problèmes liés à l'infrastructure ou aux services Google Cloud, contactez l'assistance Customer Care. Ses coordonnées sont disponibles sur la page de présentation de l'assistance dans la console Google Cloud. Si l'assistance Customer Care détecte un problème dans vos systèmes SAP, vous serez redirigé vers l'assistance SAP.
Pour les problèmes liés au produit SAP, entrez votre demande d'assistance avec l'outil de l'assistance SAP.
SAP évalue la demande d'assistance puis, s'il semble s'agir d'un problème d'infrastructure Google Cloud, la transfère au composant Google Cloud approprié dans son système : BC-OP-LNX-GOOGLE
ou BC-OP-NT-GOOGLE
.
Exigences liées à l'assistance
Pour bénéficier d'une assistance pour les systèmes SAP ainsi que pour l'infrastructure et les services Google Cloud que ces systèmes utilisent, vous devez satisfaire aux exigences minimales de la formule d'assistance.
Pour en savoir plus sur les exigences minimales concernant l'assistance pour SAP sur Google Cloud, consultez les ressources suivantes :
- Obtenir de l'aide concernant SAP sur Google Cloud
- Note SAP 2456406 – SAP sur Google Cloud Platform : prérequis pour l'assistance (un compte utilisateur SAP est requis)
Effectuer des tâches post-déploiement
Avant d'utiliser votre système SAP NetWeaver, nous vous recommandons de sauvegarder votre nouveau système à haute disponibilité SAP NetWeaver.
Pour en savoir plus, consultez le guide d'utilisation de SAP NetWeaver.
Étapes suivantes
Pour en savoir plus sur la haute disponibilité, SAP NetWeaver et Google Cloud, consultez les ressources suivantes :
Guide de planification de la haute disponibilité pour SAP NetWeaver sur Google Cloud
Pour en savoir plus sur l'administration et la surveillance des VM, consultez le guide d'utilisation de SAP NetWeaver.