Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
public:un_serveur_de_secours [2021/09/18 08:13] – pcouderc | public:un_serveur_de_secours [2022/02/21 10:56] (Version actuelle) – [btrfs] pcouderc |
---|
===== Un serveur de secours ===== | ===== Un serveur de secours ===== |
| |
Si on désire maîtriser l'informatique d'une TPE (ou même domestique indépendante), il faut se protéger de diverses défaillances, la plus critique étant celle du lien internet. En effet à moins de payer chez orange des prix conséquents, chez tout autre opérateur, une simple panne de DSLAM, ou pire un câble décroché, peut couper internet pendant plusieurs jours, ce qui n'est en général pas acceptable pour une TPE. | Si on désire maîtriser l'informatique d'une TPE (ou même simplement une informatique domestique "indépendante"), il faut se protéger de diverses défaillances, la plus critique étant celle du lien internet. En effet à moins de payer chez orange des prix conséquents, chez tout autre opérateur, une simple panne de DSLAM, ou pire un câble rompu, peut couper internet pendant plusieurs jours, ce qui n'est en général pas acceptable pour une TPE. |
| |
Autant le lien entrant (download) peut être recréé avec un simple smartphone, autant le lien sortant (upload) nécessite des solutions plus radicales. Celle abordée ici consiste en un "petit" serveur de secours situé dans un autre lieu, et chargé de prendre le relais en cas de défaillance du serveur principal quelle qu'en soit la raison, serveur lui-même ou lien internet. | Autant le lien entrant (download) peut être recréé avec un simple smartphone, autant le lien sortant (upload) nécessite des solutions plus radicales. Celle abordée ici consiste en un "petit" serveur de secours situé dans un autre lieu, et chargé de prendre le relais en cas de défaillance du serveur principal quelle qu'en soit la raison, serveur lui-même ou lien internet. |
=== Un petit mot sur lxd === | === Un petit mot sur lxd === |
| |
lxd est un système de machines virtuelles - plus exactement de containers - qui permets de créer des serveurs spécialisés isolés les uns des autres. Par exemple, on veut mettre à jour un serveur www, par exemple, on sauve l'ancien serveur par une simple commande, et on commence la mise à jour. Pendant ce temps, le serveur mail continue à tourner. Et en cas de catastrophe une simple commande de quelques secondes permet de revenir à l'ancien serveur www et de réfléchir. Et le serveur mail n'a pas arrêté de fonctionner... | lxd est un système de machines virtuelles - plus exactement de containers - qui permet de créer des serveurs spécialisés isolés les uns des autres. Par exemple, on veut mettre à jour un serveur www : on sauve l'ancien serveur par une simple commande, et on commence la mise à jour. Pendant ce temps, le serveur mail continue à tourner. Et en cas de catastrophe une simple commande de quelques secondes permet de revenir à l'ancien serveur www et de réfléchir. Et le serveur mail n'a pas arrêté de fonctionner... |
| |
lxd est magique. | lxd est magique. |
=== Les données du serveur === | === Les données du serveur === |
| |
On a donc des containers lxd dans un hôte, le serveur principal Chaque container (www, mail, sip,...) a donc une fonction précise, une zone de paramètres, et une zone de données. Caque zone de paramètres est rangée dans l'hôte dans : /var/sauve/etc et chaque zone de données dans l'hôte dan /srv/. Le lien est fait par lxd, qui par exemple dans la machine www va "mapper" la zone /srv/www de l'hôte sur le répertoire www:/var/www du container www. Des liens judicieux complètent le dispositif de sorte que tous les paramètres importants de tous les containers soient concentrés dans l'hôte en /var/sauve/etc. | On a donc des containers lxd dans un hôte, le serveur principal. Chaque container (www, mail, sip,...) a donc une fonction précise, une zone de paramètres, et une zone de données. Caque zone de paramètres est rangée dans l'hôte dans : /var/sauve/etc et chaque zone de données dans l'hôte dans /srv/. Le lien est fait par lxd, qui par exemple dans la machine www va "mapper" la zone /srv/www de l'hôte sur le répertoire www : /var/www du container www. Des liens judicieux complètent le dispositif de sorte que tous les paramètres importants de tous les containers soient concentrés dans l'hôte en /var/sauve/etc. |
| |
===== Le serveur de secours ===== | ===== Le serveur de secours ===== |
On va charger le module btrfs dans la partition boot du disque dans un initramfs : | On va charger le module btrfs dans la partition boot du disque dans un initramfs : |
<code> | <code> |
apt install btrfs-tools initramfs-tools | apt install btrfs-progs initramfs-tools |
echo 'btrfs' | sudo tee -a /etc/initramfs-tools/modules | echo 'btrfs' | sudo tee -a /etc/initramfs-tools/modules |
mkdir -p /etc/initramfs-tools/hooks | mkdir -p /etc/initramfs-tools/hooks |
vim etc/fstab | vim etc/fstab |
</code> | </code> |
On recherche la partition en ext4 et on remplace ce type par "btrfs" avec "default" comme parametre, par exemple : | On recherche la partition en ext4 et on remplace ce type par "btrfs" avec les paramètres suivants le mot "bttrfs" comme ci-dessous comme parametre : |
<code> | <code> |
PARTUUID=abcdef01234-02 / btrfs defaults 0 1 | PARTUUID=abcdef01234-02 / btrfs defaults 0 1 |
| |
Et on boote ! | Et on boote ! |
| |
| N'est-il pas vrai que ce n'est pas trivial... |
| |
==== Et maintenant...==== | ==== Et maintenant...==== |
| |
Le serveur de secours est prêt. On le met à jour (apt update upgrade...) et on fait une première sauvegarde (voir plus loin). Il faut maintenant l'éteindre après lui mis la même adresse IP que le serveur principal - en remplaçant le 251 ci-dessus par la bonne valeur -, afin d'avoir la même structure de réseau sur le site de secours que sur le site principal. Puis on le transporte sur le site distant où on programme le router pour utiliser les mêmes adresses IPs locales que le site principal (192.168.163.XXX). | Le serveur de secours est prêt. On le met à jour (apt update upgrade...) et on fait une première sauvegarde (voir plus loin). Il faut maintenant l'éteindre après lui mis la même adresse IP que le serveur principal - en remplaçant le 251 ci-dessus par la bonne valeur -, afin d'avoir la même structure de réseau sur le site de secours que sur le site principal. Puis on le transporte sur le site distant où on programme le routeur pour utiliser les mêmes adresses IPs locales que le site principal (192.168.163.XXX). |
| |
===== Mise en route à distance ===== | ===== Mise en route à distance ===== |
==== Sauvegarde ==== | ==== Sauvegarde ==== |
| |
On va copier les données sur le serveur de secours avec un script basé sur rsync : | On va copier les données sur le serveur de secours avec un script basé sur rsync (dans le serveur principal !): |
| |
<code> | <code> |
rsync $1 -az --del -e 'ssh -p 1433' /srv/www/* sauve.couderc.eu:/srv/www | rsync $1 -az --del -e 'ssh -p 1433' /srv/www/* sauve.couderc.eu:/srv/www |
rsync $1 -az --del -e 'ssh -p 1433' /srv/photos/* sauve.couderc.eu:/srv/photos | rsync $1 -az --del -e 'ssh -p 1433' /srv/photos/* sauve.couderc.eu:/srv/photos |
| ... |
echo End Saving | echo End Saving |
sleep 5m | sleep 5m |
==== DHCP ==== | ==== DHCP ==== |
| |
Le serveur de secours est en place a des données mais aucun programme. On procède aux installations, du serveur DHCP: | Le serveur de secours est en place, a des données mais aucun programme. On procède aux installations, du serveur DHCP: |
<code> | <code> |
apt update | apt update |
apt install isc-dhcp-server | apt install isc-dhcp-server |
</code> | </code> |
Les paramètres du serveur DHCP sont dans /var/sauve/etc/dhcp. En plus des adresses variables, le serveur DHCP est chargé d'attribuer les mêmes adresses fixes à certains systèmes et en particulier aux VMs lxs. | Les paramètres du serveur DHCP sont dans /var/sauve/etc/dhcp. En plus des adresses variables, le serveur DHCP est chargé d'attribuer les mêmes adresses fixes à certains systèmes et en particulier aux containers lxd. |
| |
On ne va pas ici gérer de serveur DHCP en IPV6 et donc on commente la ligne INTERFACEV6="" dans /etc/default/isc-dhcp-server. On remplace les paramètres par défaut du serveur DHCP par ceux de /var/sauve/etc/dhcp au moyen d'un lien. | On ne va pas ici gérer de serveur DHCP en IPV6 et donc on commente la ligne INTERFACEV6="" dans /etc/default/isc-dhcp-server. On remplace les paramètres par défaut du serveur DHCP par ceux de /var/sauve/etc/dhcp au moyen d'un lien. |