Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Conditions préalables et configuration du cluster
Dans cette section, vous allez configurer l'infrastructure pour le didacticiel de haute disponibilité. Vous créez un groupe de sécurité, créez une paire de clés, lancez des instances Amazon EC2, installez Pacemaker et DRBD, créez un cluster et configurez la réplication au niveau des blocs entre les instances.
Création et configuration d'un groupe de sécurité
Créez un groupe de sécurité qui autorise tout le trafic entre les instances de cluster. Dans le cadre de ce didacticiel, vous allez ouvrir tous les ports afin de simplifier la configuration. Cette étape nécessite un VPC. Si vous n'en avez pas, consultez la section Créer un VPC.
Console
-
Ouvrez la console Amazon EC2 à l’adresse https://console.aws.amazon.com/ec2/
. -
Dans le volet de navigation, choisissez Security Groups, puis Create security group.
-
Entrez un nom (par exemple
pacemaker-cluster-sg) et une description. -
Sélectionnez votre VPC.
-
Sélectionnez Create security group (Créer un groupe de sécurité).
-
Après sa création, sélectionnez le nouveau groupe de sécurité et modifiez ses règles entrantes. Choisissez Ajouter une règle. Définissez Type sur Tout le trafic et Source sur le propre ID du groupe de sécurité. Cela autorise tout le trafic entre les instances de ce groupe de sécurité.
-
Ajoutez une deuxième règle entrante pour l'accès SSH. Définissez Type sur SSH et Source sur My IP.
AWS Command Line Interface
-
Créez le groupe de sécurité.
aws ec2 create-security-group \ --group-name pacemaker-cluster-sg \ --description "Security group for Pacemaker HA cluster" \ --vpc-idyour-vpc-idNotez le
GroupIdcontenu de la sortie (par exemple,sg-0123456789abcdef0). -
Ajoutez une règle entrante pour autoriser tout le trafic provenant d'instances du même groupe de sécurité.
aws ec2 authorize-security-group-ingress \ --group-idsecurity-group-id\ --protocol all \ --source-groupsecurity-group-id -
Ajoutez une règle entrante pour autoriser l'accès SSH à partir de votre adresse IP.
aws ec2 authorize-security-group-ingress \ --group-idsecurity-group-id\ --protocol tcp \ --port 22 \ --cidryour-ip/32
Création d’une paire de clés
Créez une paire de clés à utiliser pour accéder en SSH à toutes les instances. Utilisez la même paire de clés pour toutes les instances de ce didacticiel.
Console
-
Ouvrez la console Amazon EC2 à l’adresse https://console.aws.amazon.com/ec2/
. -
Dans le volet de navigation, choisissez Key Pairs, puis Create key pair.
-
Entrez un nom (par exemple,
pacemaker-key). -
Sélectionnez RSA comme type de paire de clés et .pem comme format de fichier.
-
Choisissez Créer une paire de clés. Le fichier de clé privée est automatiquement téléchargé.
Avertissement
Enregistrez le fichier de clé privée (.pem) dans un emplacement sécurisé. Vous ne pouvez pas le télécharger à nouveau. Vous avez besoin de ce fichier pour accéder à vos instances en SSH.
AWS Command Line Interface
-
Créez la paire de clés.
aws ec2 create-key-pair \ --key-namekey-name\ --query 'KeyMaterial' \ --output text > pacemaker-key.pem -
Définissez les autorisations appropriées sur le fichier de clé privée.
chmod 400 pacemaker-key.pem
Lancer des instances EC2
Lancez deux instances Ubuntu Amazon EC2 dans le groupe de sécurité que vous avez créé. Un petit type d'instance (par exemplet3.small) est suffisant pour ce didacticiel.
Console
-
Ouvrez la console Amazon EC2 à l’adresse https://console.aws.amazon.com/ec2/
. -
Sélectionnez Lancer des instances.
-
Entrez un nom pour l'instance (par exemple,
pacemaker-instance-1). -
Sous Images de l'application et du système d'exploitation, recherchez Ubuntu et sélectionnez une AMI Ubuntu Server (par exemple, Ubuntu Server 24.04 LTS).
-
Sous Type d'instance, sélectionnez t3.small.
-
Sous Paire de clés, sélectionnez la clé que vous avez créée précédemment.
-
Dans Paramètres réseau, choisissez Modifier, sélectionnez votre VPC et un sous-réseau, et sous Pare-feu (groupes de sécurité), choisissez Sélectionner un groupe de sécurité existant, puis sélectionnez.
pacemaker-cluster-sg -
Choisissez Launch instance (Lancer une instance).
-
Répétez l'opération pour chaque instance supplémentaire (par exemple,
pacemaker-instance-2). Assurez-vous que toutes les instances appartiennent au même VPC et au même groupe de sécurité.
AWS Command Line Interface
-
Lancez une instance.
aws ec2 run-instances \ --image-idubuntu-ami-id\ --instance-type t3.small \ --key-namekey-name\ --security-group-idssecurity-group-id\ --subnet-idsubnet-id\ --count 1 \ --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=pacemaker-instance-1}]'Répétez l'opération avec
Value=pacemaker-instance-2pour la deuxième instance.
Vous avez besoin de l'adresse IP privée de chaque instance pour la configuration du cluster.
-
Console : dans la console Amazon EC2, sélectionnez une instance et recherchez l'adresse IPv4 privée dans l'onglet Détails.
-
AWS Command Line Interface:
aws ec2 describe-instances \ --filters "Name=tag:Name,Values=pacemaker-instance-*" \ --query "Reservations[*].Instances[*].[Tags[?Key=='Name'].Value|[0],PrivateIpAddress]" \ --output table
Installez les utilitaires Pacemaker
Connectez-vous à chaque instance en SSH et installez les utilitaires Pacemaker.
ssh -i pacemaker-key.pem ubuntu@instance-public-ip
sudo apt update sudo apt install -y pacemaker pcs resource-agents-extra resource-agents-common resource-agents-base
Configuration de la communication réseau
-
Testez la communication entre les instances. Sur l'instance de destination, exécutez la commande suivante pour écouter les pings provenant de l'instance source.
sudo tcpdump hostsource-instance-private-ipSur l'instance source, exécutez la commande suivante pour envoyer un ping à l'instance de destination.
ping -c 4destination-instance-private-ipVous devriez voir des réponses ping des deux côtés. Si ce n'est pas le cas, vérifiez que votre groupe de sécurité autorise tout le trafic entre les instances.
-
Désactivez la gestion des noms d'hôte cloud-init. Sur les instances Amazon EC2 d'Ubuntu, cloud-init peut rétablir le nom d'hôte et les modifications au redémarrage.
/etc/hostsExécutez cette opération sur chaque instance pour éviter cela.sudo bash -c 'cat > /etc/cloud/cloud.cfg.d/99-preserve-hostconfig.cfg <<EOF preserve_hostname: true manage_etc_hosts: false EOF' -
Définissez le nom d'hôte sur chaque instance. Pacemaker utilise des noms d'hôtes pour identifier les instances de cluster.
Sur l'instance 1 :
sudo hostnamectl set-hostname instance1Sur l'instance 2 :
sudo hostnamectl set-hostname instance2 -
Configurez
/etc/hosts. Sur chaque instance, ajoutez les paires IP privée et nom d'hôte à./etc/hostsCela permet aux instances de se résoudre mutuellement par nom d'hôte.sudo tee -a /etc/hosts <<EOFinstance1-private-ipinstance1instance2-private-ipinstance2 EOF
Création du cluster Pacemaker
-
Démarrez le daemon PCS sur chaque instance.
sudo systemctl enable pcsd.service sudo systemctl start pcsd.service -
Définissez le mot de passe du cluster. L'
haclusterutilisateur est un compte système créé automatiquement lors de l'installation dupcspackage. Pacemaker utilise ce compte pour l'authentification des clusters entre les instances. Définissez le même mot de passe pour chaque instance.sudo passwd hacluster -
Autorisez les hôtes PC. Autorisez les instances de cluster les unes avec les autres. Exécutez cette opération sur chaque instance.
sudo pcs host auth instance1 instance2Le nom d'
haclusterutilisateur et le mot de passe vous seront demandés. -
Configurez le cluster. Exécutez cette commande sur une seule instance. Le
--forcedrapeau détruit tout cluster existant sur l'appareil.sudo pcs cluster setup my-gg-cluster instance1 instance2 --force -
Démarrez le cluster. Exécutez cette commande sur une seule instance.
sudo pcs cluster start --all sudo pcs cluster enable --all -
Vérifiez l'état du cluster sur l'une ou l'autre instance.
sudo pcs status
Configurer DRBD
Le DRBD
-
Créez et attachez des volumes EBS. Créez un volume EBS pour chaque instance. Le volume doit se trouver dans la même zone de disponibilité que l'instance.
Console
-
Ouvrez la console Amazon EC2 à l’adresse https://console.aws.amazon.com/ec2/
. -
Dans le volet de navigation, choisissez Volumes, puis Create volume.
-
Définissez le type de volume sur gp3, la taille sur 8 GiB et la zone de disponibilité sur la même zone que votre instance.
-
Choisissez Créer un volume.
-
Sélectionnez le nouveau volume, choisissez Actions > Joindre un volume, sélectionnez l'instance cible, définissez le nom du périphérique sur
/dev/xvdbzet choisissez Attacher un volume. -
Répétez l'opération pour chaque instance.
AWS Command Line Interface
-
Créez un volume dans la même zone de disponibilité que votre instance.
aws ec2 create-volume \ --volume-type gp3 \ --size 8 \ --availability-zoneinstance-availability-zoneNotez le
VolumeIdcontenu de la sortie. -
Attachez le volume à une instance.
aws ec2 attach-volume \ --volume-idvolume-id\ --instance-idinstance-id\ --device /dev/xvdbzRépétez l'opération pour chaque instance.
-
-
Vérifiez le volume. Connectez-vous à chaque instance par SSH et vérifiez que le volume est attaché en listant les périphériques en mode bloc.
lsblkSur des types d' Nitro-based instance tels que
t3.small, le volume apparaît sous la forme d'un périphérique NVMe (par exemple,/dev/nvme1n1) au lieu de/dev/xvdbz.lsblkÀ utiliser pour identifier le nom réel du périphérique et à utiliser ce nom dans la configuration DRBD. -
Installez les utilitaires DRBD sur chaque instance.
sudo apt install -y drbd-utils -
Configurez la ressource DRBD. Créez le répertoire et le fichier de configuration des ressources DRBD sur les deux instances.
sudo mkdir -p /etc/drbd.d sudo vi /etc/drbd.d/greengrass.resAjoutez la configuration suivante. Remplacez les noms d'hôte et les adresses IP par vos valeurs.
resource greengrass { protocol C; on instance1 { device /dev/drbd0; disk /dev/instance1-device-name; addressinstance1-private-ip:7788; meta-disk internal; } on instance2 { device /dev/drbd0; disk /dev/instance2-device-name; addressinstance2-private-ip:7788; meta-disk internal; } } -
Créez et démarrez la ressource DRBD. Exécutez sur les deux instances.
sudo drbdadm create-md greengrass sudo drbdadm up greengrassVérifiez
lsblkce quidrbd0apparaît sous votre périphérique de volume EBS (par exemple,xvdbzounvme1n1). -
Définissez l'instance principale. Exécutez les commandes suivantes sur l'instance1 uniquement pour la forcer à devenir principale et attendez la synchronisation.
sudo drbdadm -- --overwrite-data-of-peer primary greengrass sudo drbdadm statusAttendez que les deux instances indiquent
UpToDatel'état du disque. Une fois synchronisées, toutes les autres instances deviennent des instances de secours. -
Formatez et montez le périphérique DRBD.
Sur l'instance principale uniquement, formatez le périphérique DRBD :
sudo mkfs.ext4 /dev/drbd0Sur toutes les instances, créez le répertoire de montage :
sudo mkdir -p /greengrass/v2Sur l'instance principale uniquement, montez le périphérique DRBD :
sudo mount /dev/drbd0 /greengrass/v2 -
Vérifiez l'état de synchronisation DRBD.
sudo drbdadm status mount | grep 'drbd'