Amazon Web Services
Intérêt et applications pratiques des AWS
Amazon propose depuis quelques années déjà des services de cloud computing.
Concrètement, Amazon Elastic Compute Cloud (EC2) permet de créer une machine virtuelle à partir d'un OS (Linux "normal", OpenSuse, Windows...), d'installer des services sur cette machine (Apache, PHP, MySQL...), et d'y accéder en HTTP, SSH, SFTP...
Une fois la machine finalisée, EC2 permet d'en créer une image afin de lancer de nouvelles instances à la volée en fonction des besoins (montée en charge) suivant le principe du load-balancing.
Concrètement, Amazon Elastic Compute Cloud (EC2) permet de créer une machine virtuelle à partir d'un OS (Linux "normal", OpenSuse, Windows...), d'installer des services sur cette machine (Apache, PHP, MySQL...), et d'y accéder en HTTP, SSH, SFTP...
Une fois la machine finalisée, EC2 permet d'en créer une image afin de lancer de nouvelles instances à la volée en fonction des besoins (montée en charge) suivant le principe du load-balancing.
La facturation se fait soit au forfait (achat d'instance à l'année ou facturation à l'heure). Et surtout : gratuit la première année pour les nouveaux utilisateurs.
Attention toutefois, de nombreuses fonctionnalités sont payantes.
EC2 est donc l'équivalent d'un serveur dédié, avec l'avantage d'une possibilité de personnalisation quasi-illimitée des configurations.
EC2 est donc l'équivalent d'un serveur dédié, avec l'avantage d'une possibilité de personnalisation quasi-illimitée des configurations.
Inscription à AWS
Pré-requis : posséder une carte de crédit.
L'inscription sur le site Amazon Web Services ne pose pas de problème particulier. Faut juste une carte bleue. Il est possible de se servir de son compte Amazon (achat livres, cd, dvd...), il suffit alors de compléter l'inscription.
Le téléchargement des clés de sécurité, certificats, identifiants pour credentials se font à ce moment.
L'inscription sur le site Amazon Web Services ne pose pas de problème particulier. Faut juste une carte bleue. Il est possible de se servir de son compte Amazon (achat livres, cd, dvd...), il suffit alors de compléter l'inscription.
Le téléchargement des clés de sécurité, certificats, identifiants pour credentials se font à ce moment.
Il s'agit d'une étape pour éviter les problèmes liées à l'identification lors des connexions.
Conseil évident : créer immédiatement un répertoire pour les stocker.
Conseil évident : créer immédiatement un répertoire pour les stocker.
Interface de supervision
La console est très complète et permet d'accéder aux différents services AWS. Dans notre cas, seul l'onglet EC2 nous intéresse. S3, RDS et autres ne font pas partie de ce tuto.
Console de supervision AWS
Une prise en main de l’EC2 passe par un petit tour d'horizon des fonctionnalités qui nous seront utiles.
Zones géographiques
La création d'une instance doit se faire dans une zone géographique. Pour des questions de temps de réponse, il est préférable de choisir une zone proche de sa clientèle ciblée (Irlande dans mon cas). Il existe des sous-zones géographiques (eu-west-1a, eu-west-1b...). Je vous recommande de sélectionner la même sous-zone pour chaque instance dès sa création pour le fonctionnement du load-balancer.
Sélection de la région des instances EC2
Clés de sécurité
Les clés de sécurité sont un composant essentiel sous AWS. A tout moment, il est possible de générer une nouvelle paire de clés.
Sélection des clés EC2
Groupes de sécurité
Les groupes de sécurité sont modifiables à tout moment. L'ouverture des ports (SSH, HTTP...) et les restrictions d'accès se font à ce niveau.
Sélection des groupes de sécurité EC2
Elastic IP
Il est possible d'attribuer une adresse IP à une instance EC2. L'adresse doit être associée à l'instance pour être fonctionnelle.
Elastic IP EC2
Load balancer
Le répartiteur de charge (load balancer) peut recevoir autant d'instances que nécessaire. Il possède son propre DNS, l'enregistrement CNAME doit pointer vers ce DNS.
Load balancer EC2
Instances
L'instance est le composant de base de EC2. Il va employer les précédents paramètres pour se déployer (zone, clé, sécu, ip, lb). Des options de supervision (monitoring) sont disponibles à des niveaux techniquement et financièrement différents.
Sélection des instances EC2
AMI
Les AMI (Amazon Machine Images) sont des images des instances. De nouvelles instances peuvent être créées à la demande en quelques minutes en quelques clics.
Sélection des images (AMI) EC2
Volumes
Un volume constitue la partition qui sera attachée à l'instance EC2. Le volume détient les données (site web, videos, fichiers..) et les met à disposition des instances. Des snapshot de sauvegarde peuvent être effectués.
Sélection des volumes EC2
Création d'instance
Sélectionner la région.
Cliquer sur le bouton "Launch instance".
Une boite de dialogue apparaît, nous allons sélectionner la première instance proposée, qui est potentiellement gratuite (présence d'une étoile).
Cliquer sur le bouton "Launch instance".
Une boite de dialogue apparaît, nous allons sélectionner la première instance proposée, qui est potentiellement gratuite (présence d'une étoile).
Wizard EC2 - Sélection AMI
Seul le premier onglet nous intéresse (Quick start) les autres sont :
My AMIs, pour lancer une instance à partir d'une AMI personnelle et Community AMIs pour utiliser des AMI préconfigurées par des tiers.
Cliquer sur "Select"
Cliquer sur "Select"
Wizard EC2 - Sélection AMI
Nombre d'instances : 1
Availability zone : eu-west-1c, conserver la même zone pour le load-balancer
Instance type : t1.micro (613Mo), la RAM sera suffisante pour ce qu'on va faire et micro est à 8Go de stockage, tout ça gratuit. Attention l'instance "small" est payante !
Cliquer sur "Continue"
Availability zone : eu-west-1c, conserver la même zone pour le load-balancer
Instance type : t1.micro (613Mo), la RAM sera suffisante pour ce qu'on va faire et micro est à 8Go de stockage, tout ça gratuit. Attention l'instance "small" est payante !
Cliquer sur "Continue"
Wizard EC2 - Sélection AMI
On conserve donc les options par défaut.
Cocher la case "Termination protection" pour se protéger d'une erreur comme la destruction accidentelle (et définitive...) d'une instance.
Cliquer sur "Continue"
L'écran suivant est pour l'attribution d'un tag à l'instance en cours de création.
Cliquer sur "Continue"
Cocher la case "Termination protection" pour se protéger d'une erreur comme la destruction accidentelle (et définitive...) d'une instance.
Cliquer sur "Continue"
L'écran suivant est pour l'attribution d'un tag à l'instance en cours de création.
Cliquer sur "Continue"
Wizard EC2 - Sélection AMI
Sélectionner la paire de clé générée lors de l'inscription.
Cliquer sur "Continue"
Cliquer sur "Continue"
Wizard EC2 - Sélection AMI
Sélectionner le groupe de sécurité, au besoin, en créer un nouveau, il faut ouvrir les ports 22 (SSH) et 80 (HTTP) qui seront suffisants pour les premiers tests.
Cliquer sur "Continue"
Cliquer sur "Continue"
Wizard EC2 - Sélection AMI
L'instance est prête à être lancée en cliquant sur "Launch"
Vous pouvez vérifier le bon fonctionnement de l'instance dans la console AWS : Status "pending" pendant le lancement et "running" en cours d'exécution.
Vous pouvez vérifier le bon fonctionnement de l'instance dans la console AWS : Status "pending" pendant le lancement et "running" en cours d'exécution.
Paramétrage de l'instance
Maintenant que notre instance est en cours de fonctionnement, nous pouvons lui attribuer une adresse IP (facultatif, elle a un DNS public) et nous connecter dessus via SSH.
Attribution d'adresse IP
Noter les "Instance ID" et "AMI ID" afin de ne pas les confondre entre-elles.
Cliquer sur "Allocate new address"
Yes, allocate (EC2)
Une nouvelle IP publique est créée, il faut maintenant l'associer à notre instance.
Cliquer sur "Associate address"
Sélectionner l'instance (ID et tag s'affichent)
Cliquer sur "Allocate new address"
Yes, allocate (EC2)
Une nouvelle IP publique est créée, il faut maintenant l'associer à notre instance.
Cliquer sur "Associate address"
Sélectionner l'instance (ID et tag s'affichent)
Wizard Elastic IP
La partie "Instances" de la console AWS nous permet de vérifier que l'IP a bien été assignée.
Une instance possède : IP privée et publique, DNS privé et public.
Une instance possède : IP privée et publique, DNS privé et public.
Connexion SSH
Depuis le terminal sous Linux si vous êtes un vrai, ou avec Putty sous Windows :
sudo ssh -i /chemin/vers/la/cle/cle_secrete.pem ec2-user@ip-ou-dns-instance
Connexion OK, message d'accueil AWS :
Connexion en SSH
Il n'est pas possible de se loguer avec un autre utilisateur que "ec2-user". Cet utilisateur est dans les sudoers.
Changement MDP root
Changement immédiat du mot de passe root, je n'ai jamais pu connaître celui à la création de l'instance.
Changement MDP root
Création nouvel utilisateur
La création d'un nouvel utilisateur fait partie de mes habitudes. Le but est de me créer un Virtual Host sous Apache qui me permettra d'accéder aux données présentes dans mon répertoire public_html.
sudo useradd ichiban -m
sudo passwd ichiban
Ajouter le nouvel utilisateur à la liste des sudoers
sudo visudo
ichiban ALL = NOPASSWD: ALL
Changement d'utilisateur et création répertoire public_html
su ichiban
cd ../ichiban
mkdir public_html
Tout de suite penser à changer les droits
sudo chmod 755 /home/ichiban
sudo chmod 711 /home/ichiban/public_html
Retour à l'utilisateur ec2-user pour continuer le paramétrage de l'image.
exit
Installation des services
Les machines Linux "standard" sont sur une base de RedHat. L'installeur est donc YUM. Faut faire avec, pas le choix.
sudo yum -y install tree
Apache et PHP, le but final
sudo yum -y install httpd php
Lancement auto des services au démarrage
Les services ne sont pas encore démarrés, mais je les ajoute tout de suite au démarrage.
sudo chkconfig --add httpd
sudo chkconfig --level 345 httpd on
Démarrage du serveur Apache
cd /etc/init.d/
sudo ./httpd start
Vérification via navigateur
La vérification peut se faire soit avec l'IP publique, soit avec le DNS.
It works !!
Redirection du site et création d'une page d'accueil
Pour tester la future répartition de charge, je vais changer l'emplacement par défaut du site sur Apache et créer une page d'accueil basique.
sudo mkdir /home/site
sudo chmod a+ site/
cd site
sudo vi index.php
index.php
Faire la même manip pour une page d'accueil dans le site perso
cd ichiban/public_html/
sudo vi index.php
echo 'Site perso ichiban sur Webserver-02
Modification configuration Apache
cd /etc/httpd/conf
sudo vi httpd.conf
Changer le DocumentRoot et le Directory à /home/site
Modifier les commentaires pour que l'on ait
#UserDir disabled
UserDir public_html
Décommenter la totalité du contrôle d'accès pour les répertoires persos des users
Directory /home/*/public_html ....
Redémarrer le serveur Apache
cd /etc/init.d
sudo ./httpd restart
Vérification via navigateur
La vérification peut se faire là encore soit avec l'IP publique, soit avec le DNS.
Yes !!
Idem pour l'accès au site perso /~ichiban
Notre instance est complète et fonctionnelle : une machine Linux avec Apache et PHP, deux sites web (un public et un perso).
Attention, Aucun contrôle d'accès n'est en place (pas de .htaccess ni configuration particulière du httpd.conf). Je ne vous recommande pas de mettre ce site en production avec cette configuration.
MySQL n'est pas installé volontairement, il existe RDS et SDB chez AWS qui fonctionne bien mais cela reste cher...
Création d'image
Un coup de clic droit sur l'instance puis "Create image (EBS AMI)"
Création d'image
Saisissez les paramètres perso
Création d'image
Un clic sur "Create this image"
Un tour dans la console à la rubrique des AMIs permet de voir l'image nouvellement créée.
Un tour dans la console à la rubrique des AMIs permet de voir l'image nouvellement créée.
Création du load balancer
Dans la console à la rubrique load balancer, "Create load balancer"
Les options par défaut nous sont suffisantes pour la suite
Les options par défaut nous sont suffisantes pour la suite
Création load balancer
Créer et modifier le fichier health check (ping path) au besoin, ce fichier permet au load balancer de vérifier le bon fonctionnement des instances.
Création load balancer
Ajouter l'instance que nous avons créé précédemment.
Création load balancer
La dernière étape est un récapitulatif des paramètres avant le lancement du load balancer. Une fois créé, le DNS du load balancer est exploitable directement.
Lancement d'une nouvelle instance
Nous avons donc :
- Une instance en exécution qui écoute sur les ports 80 et 22 (et plus si affinités)
- Une image de cette instance
- Un load balancer qui redirige les connexions vers notre instance sur le port 80
- Une instance en exécution qui écoute sur les ports 80 et 22 (et plus si affinités)
- Une image de cette instance
- Un load balancer qui redirige les connexions vers notre instance sur le port 80
Prochaine étape : lancer une instance depuis notre image, l'intégrer dans le load balancer, modifier les pages des sites web public et perso et vérifier que tout fonctionne.
Dans la console AWS à la rubrique AMIs, clic droit sur l'instance à lancer.
Lancement d'instance
La suite n'est qu'une répétition de ce qui a déjà été fait lors de la création d'instance. Veillez à bien sélectionner t1.micro (gratuit normalement, mais payante puisque c'est notre seconde instance) et surtout la même sous-zone géographique, sinon le load balancer va vous balancer pour de bon.
Un retour à la console des instances nous permet de vérifier que les deux instances sont bien en exécution.
Les instances en fonction
Dans le load balancer, un clic droit sur le "+" permet d'ajouter une instance dans le dispositif.
Ajout d'instance
Sélectionner les deux instances.
Ajout d'instance
Un clic sur "Save" .
Le health check s'exécute, en attendant, reconnectez-vous en SSH sur l'instance nouvellement créée pour modifier les pages d'accueil des sites publics et perso (changer le nom du Webserver-xx affiché par exemple).
C'est l'AMI qui doit être à jour de données et non pas l'instance. A moins d'aimer uploader plusieurs fois les mêmes fichiers vers des instances en fonctionnement...
Le health check s'exécute, en attendant, reconnectez-vous en SSH sur l'instance nouvellement créée pour modifier les pages d'accueil des sites publics et perso (changer le nom du Webserver-xx affiché par exemple).
C'est l'AMI qui doit être à jour de données et non pas l'instance. A moins d'aimer uploader plusieurs fois les mêmes fichiers vers des instances en fonctionnement...
Cette partie est terminée, le load balancer est maintenant fonctionnel, il nous reste à voir un dernier détail : l'upload des données via SFTP avec FileZilla.
Upload SFTP
Ce n'est pas un tuto sur FileZilla, mais plutôt deux captures d'écran qui permettent de gagner du temps lorsque l'on ne connaît pas le paramétrage pour faire un upload de fichiers vers son instance EC2.
Paramétrage pour la clé
Paramétrage de la connexion
Aucun commentaire:
Enregistrer un commentaire