Comment utiliser EC2Rescue pour Linux pour résoudre les problèmes qui se produisent au niveau du système d'exploitation ?

Dernière mise à jour : 26-04-2022

Je ne peux pas me connecter à mon instance Amazon Elastic Compute Cloud (Amazon EC2) Linux ou je rencontre des problèmes lors du démarrage. Pour y remédier, je dois modifier les autorisations de fichiers OpenSSH, ou obtenir des journaux système. Comment puis-je utiliser EC2Rescue pour Linux à cette fin ?

Brève description

EC2Rescue pour Linux est un outil qui permet de diagnostiquer et de résoudre les problèmes rencontrés sur les instances Amazon EC2 Linux. EC2Rescue pour Linux est exécuté sur votre instance Amazon EC2 Linux afin de corriger les problèmes au niveau du système d'exploitation. EC2Rescue pour Linux collecte également des journaux avancés, des rapports d'utilisation système et des fichiers de configuration pour une analyse plus approfondie.

Scénarios courants traités par EC2Rescue pour Linux :

  • Collecte de rapports d'utilisation du système tels que vmstat, iostat, mpstat, etc.
  • Collecte de journaux et de détails tels que syslog, dmesg, les journaux d'erreurs d'application et les journaux SSM.
  • Détection des problèmes système tels que le routage asymétrique ou la duplication des étiquettes du périphérique racine.
  • Correction automatique des problèmes système tels que la correction des autorisations de fichier OpenSSH ou la désactivation des paramètres de noyau problématiques connus.

Configuration système requise

EC2Rescue pour Linux nécessite une instance Amazon EC2 Linux qui respecte les prérequis suivants :

Systèmes d'exploitation pris en charge

  • Amazon Linux 2
  • Amazon Linux 2016.09+
  • SLES 12+
  • RHEL 7+
  • Ubuntu 16.04+

Configuration logicielle requise

  • Python 2.7.9+ ou 3.2+

Remarque : Si vous avez activé EC2 Serial Console pour Linux, vous pouvez l'utiliser pour résoudre les problèmes liés aux types d'instances basés sur Nitro pris en charge. EC2 Serial Console vous aide à résoudre les problèmes de démarrage, de configuration réseau et de configuration SSH. EC2 Serial Console se connecte à votre instance sans qu'aucune connexion réseau ne soit nécessaire. Vous pouvez accéder à EC2 Serial Console à l'aide de la console Amazon EC2 ou de l'interface de ligne de commande AWS (AWS CLI).

Avant d'utiliser EC2 Serial Console, accordez-lui l'accès au niveau du compte. Créez ensuite des stratégies AWS Identity and Access Management (IAM) accordant l'accès à vos utilisateurs IAM. De même, chaque instance qui utilise EC2 Serial Console doit inclure au moins un utilisateur avec mot de passe. Si votre instance n'est pas accessible et que vous n'avez pas configuré l'accès à EC2 Serial Console, suivez les instructions de la section Solution. Pour en savoir plus sur la configuration d'EC2 Serial Console pour Linux, consultez Configuration de l'accès à EC2 Serial Console.

Remarque : Si vous recevez des erreurs lors de l'exécution de commandes AWS CLI, vérifiez que vous utilisez la version la plus récente d'AWS CLI.

Solution

Pour dépanner une instance Amazon EC2 Linux inaccessible à l'aide d'EC2Rescue pour Linux, procédez comme suit :

1.    Lancez une nouvelle instance Amazon EC2 dans votre Virtual Private Cloud (VPC) en utilisant la même Amazon Machine Image (AMI) et dans la même zone de disponibilité que l'instance affectée. Cette nouvelle instance devient votre instance « de secours ». Vous pouvez également utiliser une instance existante à laquelle vous pouvez accéder, si elle utilise la même AMI et se trouve dans la même zone de disponibilité que votre instance affectée.

2.    Détachez le volume racine Amazon Elastic Block Store (Amazon EBS) (/dev/xvda ou /dev/sda1) de l'instance affectée. Notez le nom de dispositif pour vous assurer qu'il est identique lorsque vous le rattachez ultérieurement

3.    Attachez le volume EBS en tant que dispositif secondaire (/dev/sdf) à l'instance de secours.

4.    Connectez-vous à l'instance EC2 en utilisant SSH.

5.    Devenez racine, identifiez le nom du dispositif correct à l'aide de lsblk, puis enregistrez-le pour l'utiliser tout au long du processus :

$ sudo -i
# lsblk
# rescuedev=/dev/xvdf1

Remarque : Le dispositif (/dev/xvdf1) peut être attaché à l'instance de secours avec un nom de périphérique différent. Utilisez la commande lsblk pour afficher vos dispositifs de disque disponibles, ainsi que leurs points de montage, afin de déterminer les noms de dispositifs corrects.

6.    Sélectionnez un point de montage temporaire approprié à utiliser et assurez-vous qu'il existe ; utilisez /mnt sauf s'il est déjà utilisé :.

# rescuemnt=/mnt
# mkdir -p $rescuemnt

7.    Montez le système de fichiers racine à partir du volume attaché :

# mount $rescuedev $rescuemnt

Remarque : Si le montage du volume échoue, vérifiez dmesg | tail. Si les journaux suggèrent des UUID en conflit, utilisez l'option -o nouuid.

8.    Montez des systèmes de fichiers spéciaux et remplacez le répertoire racine (chroot) par le système de fichiers nouvellement monté :

# for i in proc sys dev run; do mount --bind /$i $rescuemnt/$i ; done
# chroot $rescuemnt

9.     Téléchargez et installez l'outil EC2Rescue pour Linux sur un volume racine Linux hors ligne :

# curl -O https://s3.amazonaws.com/ec2rescuelinux/ec2rl.tgz
# tar -xf ec2rl.tgz

10.    Vérifiez l'installation en répertoriant le fichier d'aide :

# cd ec2rl-<version_number>
# ./ec2rl help

11.    Exécutez EC2Rescue pour Linux sans options pour exécuter tous les modules :

# ./ec2rl run

12.    Affichez les résultats dans /var/temp/ec2rl :

# cat /var/tmp/ec2rl/*/Main.log | more

13.    Activez les modules pris en charge en fonction des résultats :

# ./ec2rl run --remediate

14.    Une fois la correction effectuée, quittez chroot et démontez le dispositif secondaire :

# exit
# umount $rescuemnt/{proc,sys,dev,run,}

Remarque : Si l’opération de démontage n'aboutit pas, vous serez peut-être amené à arrêter ou redémarrer l'instance de secours pour effectuer un démontage propre.

15.    Détachez le volume secondaire (/dev/sdf) de l'instance EC2 de secours, puis attachez-le à l'instance d'origine en tant que /dev/xvda ou /dev/sda1 (volume racine). Assurez-vous que c'est le même que celui indiqué à l'étape 2.

16.    Démarrez l'instance EC2, puis vérifiez que l'instance répond.

Remarque : Vous pouvez également utiliser un document AWS Systems Manager Automation pour résoudre les problèmes de connexion. Pour plus d'informations, consultez Démonstration : Exécution de l'outil EC2Rescue sur des instances inaccessibles. Le document AWSSupport-ExecuteEC2Rescue est conçu pour automatiser les étapes normalement nécessaires pour utiliser EC2Rescue pour Linux. Ces étapes sont une combinaison d'actions Systems Manager, d'actions AWS CloudFormation et de fonctions AWS Lambda.

Dépannage supplémentaire


Cet article vous a-t-il été utile ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?