C’est re-parti pour les recherches !

Si tu es jeune, si tu es geek, si tu es doué en développement web et surtout en PHP, si tu es sociable, si tu as envi d’intégrer une équipe dynamique dans une boîte sympathique (mais avec beaucoup de caractère), si tu aimes la bière et si tu n’as pas peur d’un directeur technique tyrannique, alors peut-être que tu es fait pour nous !

Poste : Développeur Web Junior
Contrat : CDI
Rémunération : Selon profil (ouai, c’est très chiant de dire ça, mais tente ta chance tout de même, sait-on jamais)
Languages : PHP/HTML(5)/CSS(3)/JS et un petit plus pour Smarty, Titanium Mobile, jQuery et EdenPHP.
Entreprise : Digital Dealer – Création de sites internet pour la distribution automobile (mais pas que, on aime les défis).
Lieu : Levallois-Perret (92300, Hauts-de-seine).

Contactez-moi à job@digitaldealer.fr pour plus d’infos et pour postuler, les risques de morts subites sont très peu probables (sauf si c’est pour un stage ou de l’alternance)

Bref, n’hésite pas à faire tourner pour la bonne cause (enfin surtout pour la mienne).

Certaines de vos configurations réseaux vont impliquer la connexion d’un de vos serveurs en SSH à un autre de vos serveurs afin de pouvoir, par exemple, faire un sauvegarder ou encore synchroniser des fichiers ou des données. Afin d’automatiser cette connexion, nous pouvons apprendre à ces deux serveurs à se reconnaître entre eux et ainsi à ne pas demander de mot de passe ni de login. Nous allons pour cela, mettre en place un tunnel SSH à l’aide d’une paire de clef publique / clef privée sur chacun des serveurs.

Nous aurons besoins pour cela de deux serveurs linux tournant sous Debian 6.0. Nous appellerons le premier serveur S1 et le second S2.

Etape 1 : Création de la paire de clef publique / privée

La clef publique est une chaîne de caractère unique à chaque serveur. Cette clef est toujours associée à une clef privée qui permet au serveur de vérifier la validité de celle publique. Ainsi, si vous partagez la clef publique, le serveur pourra alors vérifier son authenticité et donc permettre la connexion sans mot de passe. Pour se faire, connectez vous sur votre serveur S1 et créez le couple de clefs :

$ root@server1:~# ssh-keygen -t dsa -b 1024

Votre console va vous demander où enregistrer la pair de clef et une « passphrase », laissez la vide et appuyer simplement sur entrer à chaque fois, jusqu’à ce que le « fingerprint » apparaisse. Vos fichiers « /root/.ssh/id_rsa » (clef privée) et « /root/.ssh/id_rsa.pub » (clef publique) ont été créées ! Réeffectuer la même opération sur votre S2.

Etape 2 : Transfert de la clef publique

Maintenant, nous allons partager notre clef publique et ainsi apprendre à notre serveur à accepter les connexions sans mot de passe de notre autre serveur. Pour cela, rien de plus simple, une petite ligne de commande :

$ root@server1:~# ssh-copy-id -i ~/.ssh/id_dsa.pub root@server2

Il vous demandera le mot de passe root de votre serveur 2 pour la dernière fois ! Faites de même dans le sens inverse pour accepter les connections de S2 sur S1.

Etape 3 : Tests

On va maintenant pourvoir tester. Connectez-vous en root sur S1 puis, depuis S1, connectez vous en root sur S2 :

$ root@server1:~# ssh root@server2

S’il ne vous demande pas de mot de passe, c’est que tout marche ! Effectuez le même test dans l’autre sens pour vérifier que la manipulation est bien symétrique. Vous venez de créer un tunnel SSH entre vos deux serveurs et ainsi de vous affranchir de vos mots de passes.

 

Pour certains de vos projets, vous aurez sûrement la nécessité de créer un système de sauvegarde de données complet. Ici, nous allons apprendre à copier en temps direct une base de données d’un serveur S1 (maître) sur un serveur S2 (esclave), ce qui nous permettra d’avoir deux bases de données totalement synchronisées. En cas de crash du premier serveur, on peut alors basculer sur la base de l’autre serveur et ainsi, ne perdre aucune donnée.

Pour ce faire, nous allons utiliser un serveur sous Debian 6.0 avec PHPMyAdmin. (Pour installer ce serveur web, je vous invite à aller lire ce tutoriel)

Etape 1 : Création de la base de données à dupliquer

Créez une base de donnée sur S1 et S2 depuis PHPMyAdmin. La mienne s’appellera, de manière tout à fait objective, « tiloweb ».

Etape 2 : Configuration du serveur maître

Dans l’accueil de PHPMyAdmin du serveur S1, allez dans l’onglet « Réplication ».

Puis cliquez sur le lien « configurer » de la partie « Réplication maître ».

Cliquez sur « Configurer le serveur maître »

Un formulaire apparaît, choisissez la ou les bases de données à répliquer sur votre S2. En l’occurrence, la table « tiloweb ». On vous demande alors de modifier un fichier pour y rajouter quelques paramètres de configuration.

Configuration de la réplication

Le fichier en question, si vous avez suivi la procédure d’installation standard de MySQL, se trouve à l’adresse suivante dans votre serveur : /etc/mysql/my.cnf. Contrairement à ce que vous dit PHPMyAdmin, ne copiez pas ces lignes à la fin de votre fichier de configuration mais quelque part entre « [mysqld] » et « [mysqldump] » (normalement, juste après la ligne 86). Trouvez également la ligne « bind-address » et commentez-la (ce qui vous permettra d’autoriser les connexions depuis d’autres IP). Vérifiez également que les droits de ce fichiers sont bien en 755 (et non pas en 777). Cliquez alors sur « Exécuter ». PHPMySQL va redémarrer automatiquement le serveur MySQL et normalement.

Tuto Réplication - Screen 5

Confirmation de la configuration de votre S1 comme maître.

Cliquez ensuite sur « Ajouter un utilisateur pour la réplication vers l’esclave ? ». Et remplissez le formulaire comme suit :

Créez un nouvel utilisateur avec les droits de réplication maître

Vous pouvez bien évidement choisir un nom d’utilisateur différent, mais par soucis d’organisation, j’utilise l’utilisateur « sync ». Dans la ligne « Serveur »,  « % » signifie « Tout serveur » mais vous pouvez décider de n’autoriser qu’un IP spécifique.

Votre serveur maître est maintenant prêt à être répliqué.

Etape 3 : Configuration du serveur esclave

Sur votre serveur S2, rendez-vous dans l’onglet « Réplication » puis cliquez sur « configurer le serveur esclave ? ». Commencez alors par modifier le même fichier my.cnf en rajouter cette fois ci simplement la ligne « server-id » et en vous assurant que le numéro est unique. Remplissez alors le formulaire avec les identifiants correspondant à l’utilisateur créé en étape 2 :

Remplissez les informations de l’utilisateur créé à l’étape 2

Validez, et voila votre serveur esclave configuré.

Cliquez ensuite sur « synchroniser les bases de données avec le serveur maître ». Ce qui va permettre de s’assurer, avant de démarrer le processus, que les données soient les mêmes sur les deux serveurs. Une fois que c’est fait, il ne vous reste plus qu’à cliquer sur « Démarrer » complètement. Et voila, votre base de données est répliquée.

Etape 4 : Test

Un petit test s’impose tout de même pour vérifier que la réplication s’effectue correctement. Allez sur l’interface PHPMyAdmin de votre S1, sélectionnez dans votre base répliquée une table et insérez une ligne. Normalement, la ligne est automatiquement insérée également sur le serveur S2. Essayez !

 

La réplication d’une base de donnée n’est qu’une étape parmi tant d’autre pour la création d’un hébergement sécurisé, comme un PRA (Plan de Reprise d’Activité, qui vous permet une sauvegarde sûr de toutes vos données) ou un Cluster (qui vous permet de répartir les charges d’un site à forte fréquentation sur plusieurs serveurs). Vous voulez aller plus loin ? Je vous conseille l’excellent article d’Antoine Augusti « La réplication de bases de données » qui vous apprendra à gérer plus de deux serveurs à la fois.