• 20 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 09/03/2023

Installez vos applications web dans des serveurs sur EC2

Nous sommes enfin prêts à commencer la construction du nouveau site web de The Green Earth Post !

Vous êtes motivés ? Parce que l'équipe de projet l'est certainement. ;)

Un des buts de cette partie est de comprendre les fondamentaux du service AWS EC2, service qui fournit des machines virtuelles dans lesquelles nous allons installer le serveur d’API. Puis, nous verrons comment utiliser une base de données relationnelle RDS (Amazon Relational Database) pour stocker les commentaires des lecteurs. Enfin, on verra comment transformer un compartiment S3 en site web statique pour délivrer les pages du site web de The Green Earth Post.

Découvrez les bases de AWS EC2

Si vous avez suivi le cours “Découvrez le cloud avec Amazon Web Services”, vous connaissez déjà le service AWS EC2. Il y a une partie entière du cours dédiée à EC2 qui explore les fonctionnalités suivantes :

  • les catégories de types d’instance (instance types) ;

  • les types de tarification (pricing) ;

  • la Amazon Machine Image (AMI) ;

  • les groupes de sécurité (security groups) ;

  • le stockage par bloc avec Amazon Elastic Block Store (EBS).

C’est déjà une très bonne base, mais pour vous préparer à la certification vous aurez besoin de connaître un peu plus de détails sur EC2. C’est parti !

Types d’instances

Encore une fois, vous pouvez vous rappeler des détails sur les différents types d’instances en consultant le chapitre Démarrez votre première instance EC2 du cours de pré-requis. Voici les points clés pour la certification :

  • Toute question qui traite de bases de données relationnelles, non-relationnelles (NoSQL) ou de traitement transactionnel en ligne (online transaction processing, abrégé en OLTP) fait référence au type de stockage optimisé (storage optimized)

  • À l’opposé, si c’est une base de données stockée en mémoire (in-memory), le type d’instance est mémoire optimisée (memory optimized). 

  • Finalement, si cela concerne des applications de calcul haute performance (High Performance Computing, abrégé en HPC), alors choisissez calcul optimisé (compute optimized).

La nomenclature des types d’instances suit un format particulier indiqué dans l’image ci-dessous :

Nomenclature de type d’instance est “c5n.xlarge”, dont c = famille d’instance, 5 = la génération d’instance, n=  l’attribut et large =  la taille de l’instance
Schéma du format de la nomenclature des types d’instance, de gauche à droite : la famille d’instance, la génération d’instance, l’attribut et la taille de l’instance sont indiqués.

Dans certaines situations, un développeur doit exécuter automatiquement des scripts pour installer un logiciel (par exemple le serveur d’API), lors du premier démarrage d’une instance EC2. Pour les instances Linux uniquement, le développeur peut préciser les scripts dans la section données utilisateur (user data) lors de la création d’une instance. L’instance exécutera les scripts avec l’utilisateur root.

Capture d’écran de l’interface pour lancer une instance EC2
Lancement d'une instance EC2

Groupes de sécurité

Intéressons-nous aux groupes de sécurité (security groups) qui contrôlent la manière dont le trafic est autorisé vers ou depuis nos instances EC2. Ils agissent comme un firewall (pare-feu) et sont attachés à un seul VPC (Virtual Private Network) d’une région AWS. Ils peuvent être attachés à plusieurs instances.

Capture d’écran de l’interface pour créer un groupe de sécurité avec les éléments clés suivants : identifiant de mon VPC, règles pour le trafic entrant en SSH et les règles pour le trafic sortant
Création d'une groupe de sécurité

L’image suivante montre le fonctionnement d’un groupe de sécurité.

Mise en situation de requêtes entrantes et réponses sortantes de l’instance EC2 à ces requêtes.
Fonctionnement d’un groupe de sécurité

Pour finir, voici les ports classiques et les protocoles à connaître :

  • 22  - SSH (Secure Shell)

  • 21 - FTP (transfert de fichiers)

  • 22 - SFTP (transfert de fichiers sécurisé)

  • 80 - HTTP (Web)

  • 443 - HTTPS (Web sécurisé)

  • 3389 - RDP (connexion à une instance Windows)

Créez et connectez-vous à une instance EC2

Vous avez vu comment créer une instance EC2 et vous y connecter depuis un terminal distant. AWS met à disposition le service EC2 Instance Connect qui permet de s’y connecter à travers la console AWS.

Screenshot de l'onglet du service EC2 Instance Connect sur la page 'Connectez-vous à l'instance'
EC2 Instance Connect
Screenshot de l'instance EC accédé depuis la console AWS
Instance EC2

Pour utiliser EC2 Instance Connect, il faut configurer une règle sur le trafic entrant appliquée au groupe de sécurité, autorisant la connexion SSH.

Le serveur d’API du site de The Green Earth Post doit interagir, grâce à l’outil AWS SDK en Python, avec une base de données RDS, afin d’insérer et de récupérer les commentaires des lecteurs sur le site. Pour cela, attachons un rôle IAM à l’instance EC2 comme vu dans la première partie. Le serveur d’API peut alors extraire les informations d'identification de sécurité fournies par le rôle et récupérer les informations nécessaires pour interagir avec RDS.

Regardez comment j’installe un serveur web simple (“Hello, world”) ici :

Vous avez bien suivi ? Maintenant vous allez faire la même chose pour notre projet chez The Green Earth Post. 😉

À vous de jouer !

Le but de cet exercice est d’installer le serveur d’API dans une instance EC2 et d’y accéder depuis Internet. Pour cela, il faudra suivre la procédure suivante :

  • Créez un groupe de sécurité avec accès sur internet ; 

  • Créez un rôle IAM qui doit être assumé par l’instance EC2, avec une politique qui permet de décrire les instances de bases de données RDS “DescribeDBInstances” ;

  • Créez une instance EC2, pour héberger le serveur d’API, avec : 

    • une image Amazon Linux, 

    • type t2.micro comme type d’instance,

    • le groupe de sécurité créé,

    • un profil d’instance correspondant au rôle IAM créé,

    • et un script que vous retrouverez dans le registre GitHub, à insérer dans la section données utilisateur ;

  • Vérifiez que le serveur d’API est disponible sur Internet en testant le point de terminaison /api/health.

Vous pouvez vérifier si vous l’avez fait correctement en regardant ce screencast :

Gérez un parc d’instances EC2

Pour la certification, il est important de savoir comment assurer la résilience et la disponibilité d’instances EC2. Il est commun d’avoir un parc d’instances EC2, AWS met à disposition plusieurs stratégies pour gérer ce parc.

La région Irlande eu-west-1 est composée de 3 zones de disponibilités AZ1, AZ2 et AZ3.
Les zones de disponibilité dans une région AWS

Tarification

Quelle tarification sera la meilleure pour notre cas ? 

La meilleure tarification pour The Green Earth Post est savings plan. Mais, pour cette formation, je vous propose de choisir à la demande pour ne pas vous engager à un ou trois ans. 🙃

Trois autres options sont disponibles en plus des options ci-dessus :

  • Instances dédiées (dedicated instances) : s'exécutent sur un matériel (hardware) dédié à un seul client, elles peuvent partager le matériel avec d'autres instances du même compte. Elles ne contrôlent pas le placement des instances contrairement aux hôtes dédiés.

  • Réservations de capacité à la demande (On-demand capacity réservations) : réservez de la capacité (instances) dans une AZ spécifique pour n'importe quelle durée, mais sans remise sur la facturation.

  • Parc d'instances Spot (spot fleet) : un ensemble d'instances Spot et éventuellement d'instances à la demande, lancé en fonction des groupes de capacités Spot (Spot capacity pools) spécifiés (type d’instance, OS, AZ, prix…). Il y a trois stratégies de lancement :

    • lowestPrice : sélectionner le groupe offrant le prix le plus bas ;

    • diversified : répartir les instances entre groupes ;

    • capacityOptimized : sélectionner le groupe avec une capacité optimale pour le nombre d'instances lancées.

Intéressons-nous en détail aux instances Spot qui sont souvent évoquées dans la certification, utilisées pour les traitements résistants aux pannes. La demande d’une instance Spot précise les caractéristiques (type, OS…) et si elle est persistante ou à exécuter une fois. Comme montré sur l’image suivante, le prix d’une instance Spot varie avec le temps et vous pouvez décider d'un prix maximum à payer.

Capture d’écran de l’outil permettant de visualiser le prix d’une instance Spot
Variation du prix d'une instance Spot

AWS vous fournira une instance qui respecte toutes vos conditions et peut l'interrompre si elle en a besoin ou si le prix Spot est supérieur à votre prix maximum. Dans ce dernier cas, vous aurez une période de deux minutes pour l’arrêter (stop) ou la résilier (terminate). Vous pouvez également les arrêter (stop) ou redémarrer (start) vous-mêmes. L’image suivante indique le cycle de vie d’une demande.

Schéma de demande d’une instance Spot
Le cycle de vie d’une demande d’une instance Spot. * - AWS interrompt l’instance Spot - soit AWS la réquisitionne pour d’autres besoins - soit le prix Spot est supérieur à votre prix maximum

Voici ci-dessous l’évolution de l’état de la demande :

La demande d’une instance Spot début par le statut Open : est exécutée avec succès et devient active et associée à une instance Spot ; est erronée et passe en état failed est annulée et passe en état cancelled.
L’évolution de l’état de la demande d’une instance Spot

Groupes de placement

AWS vous permet de décider comment répartir vos instances EC2 dans son infrastructure. Trois options s’offrent à vous :

  • Cluster : regroupe les instances dans un même rack (matériel physique) dans une seule AZ, permettant d’atteindre des performances réseau à faible latence, idéal pour des traitements distribuées HPC pour le Big Data. Si le rack tombe en panne, vous perdez vos  instances.

Un placement en cluster dans une AZ où chaque instance EC2 est interconnectée
Placement en cluster
  • Partition : répartit les instances sur différentes partitions (une partition est un ensemble distinct de racks) dans une AZ. Elle est dédiée à de grandes charges de travail distribuées et répliquées (Hadoop, Cassandra, Kafka…).

    AZ1 et AZ2 représentent un placement en partition où les instances EC2 sont divisées en 3 parties.
    Placement en partition
  • Répartition (spread) : répartit les instances sur différents racks pour réduire les risques de pannes (maximum 7 instances par groupe par AZ et jusqu’à 100 instances au total). Cette option est dédiée à des applications à risque (bases de données, serveurs web…).

AZ1, AZ2 et AZ3 représentent un placement en répartition où les instances EC2 sont séparées les unes des autres.
Placement en répartition

Les concepts avancés

Abordons certains concepts avancés pour comprendre plus en détail le fonctionnement des instances EC2.

ENI

La connectivité réseau d’une instance EC2 est assurée par le composant Interface réseau Elastic (Elastic network interface - ENI), fourni par défaut à sa création.

Capture d’écran de l’outil de création d’une interface réseau dans la console AWS
Interfaces réseau
Une instance EC2 avec une ENI primaire et une ENI secondaire et leur adresse IP respective
Une instance EC2 avec deux ENI
Déplacement d’une ENI d’une instance EC2 vers une autre
Un ENI peut être créé indépendamment et être déplacé d’une instance à une autre à la volée (très utile en cas de panne) dans la même AZ.

EC2 Hibernation (Mettre en veille prolongée)

EC2 Hibernation est une fonctionnalité qui permet d’enregistrer l’état de la mémoire vive (RAM) des instances EC2, au moment de leur arrêt (stop), dans un volume root de type EBS.
Fonctionnement de la fonctionnalité d’hibernation d’une instance EC2

Cette fonctionnalité permet des démarrages beaucoup plus rapides et est très utile pour des applications qui prennent du temps à s'initialiser comme le back-end du site web.

En résumé

  • EC2 permet d’installer le serveur d’API du site web.

  • EC2 propose plusieurs fonctionnalités pour gérer :

    • le type d’instance,

    • le trafic réseau (groupes de sécurité),

    • la tarification,

    • la connectivité (ENI),

    • l’hibernation.

  • Les groupes de placement vous aident à disposer vos instances dans l’infrastructure AWS selon les besoins.

Maintenant qu’on a installé les applications sur EC2, découvrons comment assurer le stockage de vos instances !

Exemple de certificat de réussite
Exemple de certificat de réussite