Quelle stratégie pour créer un serveur dédié redondant?

Bonjour,

J’ai une machine (ou serveur dédié), qu’on va appeler machine A, où est installé le serveur apache pour les sites web, postfix et dovecot pour les mails.

Et j’aimerais utiliser une autre machine, qu’on va appeler machine B, où j’ai installé à l’identique le serveur apache, postfix et dovecot, et je voudrais que cette machine B joue le rôle de machine redondante pour la machine A, càd que le jour où la machine A est hors service, et bien c’est la machine B qui prend le relais. Bien sûr ces deux machines ont chacune leur adresse ip publique.

Et je voudrais aussi que lorsqu’il y a une mise à jour d’un site web (par exemple une modification d’une page web) sur la machine A, alors il y a automatiquement une mise à jour sur le site web identique de la machine B.

Le problème est que je n’ai pas d’idée de stratégie pour faire cela. Je fais appel à vos lumières.

Où sont situées les machines A et B qu’y a t’il entres elles ?

Salut, il n’y a rien entre elles (elles ne sont pas dans un réseau local) si ce n’est que par la connection internet, la machine A se trouve dans un batiment, et la machine B se trouve dans un autre batiment éloigné géographiquement.

Donc il faut commencer par faire simple cad :

  • oublie la redondance du serveur de mail dans un premier temps

  • accepte une intervention manuelle sur tes paramètres DNS pour changer de serveur

Sous ces 2 hypothèses

  • rien d’autre à faire si tes sites sont statiques que de pousser via Git tes sites vers 2 sites de prod

  • si tes sites sont dynamiques, il te faudra mettre en place une réplication des fichiers (syncthing par exemple) et de tes BD et tu auras à gérer toutes les problématiques associées (la redondance absolue n’existe pas mais là encore accepter qq interventions manuelles le cas échéants simplifie en général grandement la solution choisie)

  • Il te faut mettre en place une synchronisation entre tes deux machines: soit au niveau du stockage soit via quelque chose comme rsync; mais qui soit en temps réel.
  • Il te faut mettre tes apaches en cluster (peacemaker et corosync sont tes amis.
  • Si tu as des bases de données, mêmes points que les deux précédents.

Attention, comme tu es sur deux sites, tu vas avoir un soucis de temps de synchronisation. Et donc le réglages de ton cluster ne va pas être simple quelque soit la technologie utilisée.

Sinon tu as le plus simple: round robin au niveau du DNS, qui pointe sur les deux adresses IP. Mais la partie synchronisation va être nécessaire malgré tout. Tous dépends du niveau de dynamisme de tes sites.

Le clustering, c’est toujours assez compliqué. Car même si tu as du statique sur tes sites, le changement de serveur coupera les sessions des utilisateurs.

Tout dépend du niveau de bascule que tu cherche à avoir et avec quel niveau de synchro par rapport au temps.

1 J'aime

voire beaucoup :slight_smile:

1 J'aime

:sweat_smile: on n’a ps la même notion de réseau local dans ce cas …

Il y a rien entre elles ? pas de routeur ? et elles ne sont pas dans un réseau local … définitivement on n’a clairement pas les même notions.

Donc je repose la question as-tu une description claire ?
Le service mail peut-être mis en place avec un serveur mx avec un champ priority plus elevé qui prendra le relais uniquement lorsque le premier ne réponds pas, il stockera le mail et le renverra au serveur une fois celui-ci à nouveau en ligne. pour l’envoi c’est plus délicat pour la synchronisation.

Pour le service web par contre je ne vois qu’une possibilité à moindre coût et fiable c’est basculer toi même l’ip et maintenir le site à jour simplement par un gestionnaire de version type Git sur lequel ton site est stocké, tu déploie ensuite sur les deux frontaux, si tu as du dynamique, il te faudra mettre ne place de la réplication de base de donnée (bonjour les lenteurs).

Tout ceci n’est qu’un premier jet sans autre information il est compliqué de proposer autre chose néanmoins faire de la redondance de mail et de web avec de la distance est toujours délicat.

Bonjour !
Pour mettre en place une méthode de « load balancing » ; Il me semble qui faut une machine supplémentaire mais c’est pas sur. En revanche, il doit être nécessaire de monter un réseau local.

Pour la redondance et/ou l’équilibrage de charge postfix, dovecot et web, il y a des possibilités avec keepalived ou haproxy, entre autres, mais elles sont généralement peu triviales, et la topographie de ton infra va aussi limiter tes possibilités (tes deux serveurs sont-ils hébergés par le même hébergeur ? si oui tu peux regarder si les serveurs peuvent communiquer sur une interface virtuelle privée mise en place par l’hébergeur contre un supplément de quelques euros par mois)

Sinon le plus simple reste comme dit plus haut de modifier manuellement l’adresse IP de l’enregistrement DNS lorsque le serveur primaire est en carafe. Garde un TTL bas dans ce cas, pour éviter que l’ancienne valeur de l’enregistrement soit gardée en cache trop longtemps.

Bonjour,
Pour postfix, on peut faire un serveur relais sur le second serveur (MX secondaire) qui récupère tous les mail et qui les renvoie au serveur principal une fois celui-ci remonté.

Par contre, tu ne parles pas de sauvegarde, tu as prévu un troisième serveur pour la sauvegarde des données et de l’Os ? un backup de ta BDD ?

Pour le serveur web il y a plusieurs possibilités:

  • synchro de fichier
    Tu peux utiliser drbd pour synchroniser tes serveurs (sql, fichier, etc.). Cela veut dire que le second serveur est arrêté et démarré par heardbeat pour la bascule (mode maitre/esclave).

  • synchro sql
    Tu peux faire une synchro de ta base de données d’un serveur vers l’autre directement au niveau SQL (cxluster de base de données) avec les journaux (mysql ou postgresql) également en mode maitre/esclave), avec un système de heardbeat qui fera la bascule si le serveur primaire est HS.

Pour la bascule, tu peux avec heardbeat demander le changement de ton ip par script à ton FAI, chez OVH ou autre FAI c’est possible, c’est ce qui est utilisé pour les ip flottantes.

Il me semble que postgresql permet de faire des cluster de serveurs maître/maître, mais à vérifier, ex: Comment créer un cluster maître-maître PostgreSQL en natif - Worteks - Expertise Open Source. Dans ce cas, la bascule est plus simple, tu peux mettre du round robin, c’est a dire, toutes les IP avec le même DNS.

Oui tout comme Percona avec des bases de type MySQL ou galera mais tant que l’on saura pas plus sur la topologie c’est inutile de perdre votre temps à balancer des idées :confused:

On ne sait absolument rien mis à part qu’il y a deux bâtiment géographiquement éloigné :innocent:

DRBD exige tout de même des performance pour être intéressant, imagine les modifications perpétuelles dans le cas d’un site web dynamique :confused: du coup de la réplication de bloc par le réseau avec des connexions pas au top et un ping élevé :confused:

Enfin bref tous ça pour redire que l’on a besoin de plus d’informations :confused:

Je confirme ce que dit @Clochette . J’ai utilisé drbd (dernière version, donc compilée) et cela demande en effet des performances acceptables. Sinon, tu es obligé de dégrader les performances naturelles de DRBD via certains paramètres de configuration et ce n’est pas une bonne idée.

Hello, en mode asynchrone ça marche très bien, même avec de petites configs materielles.

Après, plus le RPO sera faible, plus le coût sera élevé :slight_smile:

Il a demandé des pistes, comme ça il peut creuser les sujets et s’il souhaite plus d’infos, il reviendra avec un complément :wink:

1 J'aime

Merci pour vos réponses, j’ai appris de nouvelles choses ici, même si j’ai pas tout compris.

drdb a l’air vachement pratique, c’est comme le raid mais en réseau, mais il parait que c’est un peu lent, mais il faut l’essayer pour avoir son propre avis.

Sinon, j’ai vu que mariadb et dovecot ont une fonctionnalité de réplication.

Pour le dns, il y a le round robin, j’ai l’impression qu’il faut juste mettre plusieurs enregistrements de type A avec des adresses ip différentes, mais je pense qu’il faut aussi créer un script pour retirer temporairement l’adresse ip du serveur dédié hs de la zone dns le temps de réparer le serveur dédié hs.

Sinon, il y a aussi l’ip fail over, on prend l’ip du serveur dédié hs pour la basculer vers le serveur dédié de secours, mais je ne pense pas que c’est faisable chez le prestataire de service (comme ovh par exemple) sauf si l’interface client permet de le faire automatiquement.