« LINUX:Pacemaker - Configuration des services Lsyncd » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 9 : | Ligne 9 : | ||
[[FILE:LINUX:Failover.web4.lsyncd.pdf|center|600px]] | [[FILE:LINUX:Failover.web4.lsyncd.pdf|center|600px]] | ||
Lsyncd possède deux modes de transfert principaux qui utilisent Rsync. Le premier met en relation un processus Rsync local avec son homologue distant au travers d'une connexion SSH. La seconde façon est basée sur une connexion Client/Serveur entre un client Rsync local et un serveur Rsync distant (Rsyncd). | Lsyncd possède deux modes de transfert principaux qui utilisent Rsync. Le premier met en relation un processus Rsync local avec son homologue distant au travers d'une connexion SSH. La seconde façon est basée sur une connexion Client/Serveur entre un client Rsync local et un serveur Rsync distant (Rsyncd). Nous avons choisi la seconde solution. | ||
Nous devons aborder successivement le démon Rsyncd et ensuite les services Lsyncd. | Nous devons aborder successivement le démon Rsyncd et ensuite les services Lsyncd. | ||
Ligne 25 : | Ligne 25 : | ||
=Rsyncd= | =Rsyncd= | ||
Le service Rsyncd permettra à un client distant d'ajouter, supprimer ou modifier des fichiers ou des répertoires mis en accès localement. | |||
La configuration présentée devra se faire de façon identique sur les quatre machines du cluster. | La configuration présentée devra se faire de façon identique sur les quatre machines du cluster. | ||
Ligne 30 : | Ligne 31 : | ||
==Installation== | ==Installation== | ||
Le logiciel "rsync" est normalement installé d'office. Il nous faut installer la partie service: | Le logiciel "rsync" est normalement installé d'office. Il nous faut installer la partie service: | ||
dnf install rsync-daemon rsync | dnf install rsync-daemon | ||
dnf install rsync | |||
Ligne 47 : | Ligne 49 : | ||
pid file = /run/rsyncd.pid | pid file = /run/rsyncd.pid | ||
| | ||
# Partages | # Partages | ||
[cluster5] | [cluster5] | ||
path = /site/cluster5 | path = /site/cluster5 | ||
Ligne 95 : | Ligne 97 : | ||
systemctl enable rsyncd.service | systemctl enable rsyncd.service | ||
systemctl start rsyncd.service | systemctl start rsyncd.service | ||
=Lsyncd= | |||
Le service Lsyncd permet de synchroniser les fichiers ou répertoires locaux avec le contenu d'un partage distant mis à disposition par le service Rsyncd. | |||
La configuration présentée devra se faire de façon identique sur les quatre machines du cluster. | |||
==Principe== | |||
Il faut préciser que Lsyncd va gérer des fichiers et répertoires physiquement localisés sur la machine hôte du service. En effet il intercepte les événements et notifications locaux concernant toute création, suppression ou modification de fichier ou répertoire intervenant sous le répertoire qu'il surveille. | |||
Le service commence par exécuter le fichier de configuration écrit en LUA, langage de script. Suite à cette exécution, il en déduit le nécessaire pour faire l'exécution et le suivi d'un ou plusieurs processus Rsync. | |||
La première exécution du processus Rsync est une synchronisation complète de la cible qui devient l'exacte image de la source locale. | |||
Toutes les exécutions qui suivent n'affecteront que les fichiers et répertoires de la source locale qui subissent un ajout, une suppression ou une modification. Donc si après ce démarrage, on ajoute, supprime ou modifie un fichier ou un répertoire sur la cible, il restera en place tel quel jusqu'à un redémarrage du service Lsyncd. | |||
==Fonctionnement== | |||
Nous devons gérer individuellement les quatre répertoires. Chacune de ces tâches se trouvant normalement sur les machines différentes mais pouvant migrer à tout moment sur une autre et pouvant alors se retrouver en présence d'une autre tâche. Nous devons donc effectuer quatre configurations similaires, se différenciant que par leur numéro. | |||
Comme cette configuration se singularise par un chiffre dans le nom du répertoire à gérer, toute la configuration suivra le même canevas. Par exemple le répertoire "/site/cluster5" comporte le chiffre "'''5'''". Nous présenterons la configuration pour ce répertoire. | |||
Pour les autres répertoires, il suffira de substituer partout ce chiffre "5" par celui que l'on rencontrera suivant le nom des trois autres répertoires: | |||
* le "6" pour le répertoire "/site/cluster6" | |||
* le "7" pour le répertoire "/site/cluster7" | |||
* le "8" pour le répertoire "/site/cluster8" | |||
==Installation== | |||
Nous installons les paquets suivants: | |||
dnf install lsyncd | |||
dnf install lua | |||
dnf install lus-socket | |||
Normalement le paquet "lua" est installé comme dépendance du paquet "lsyncd" mais pour notre script de configuration, nous avons besoin du module de LUA "socket" que nous installons en plus. | |||
Cette installation est a faire sur les quatre machines du cluster. | |||
==Fichiers de configuration LUA== | |||
Nous présentons la configuration pour le répertoire "/site/cluster5". | |||
En premier on crée le répertoire "/etc/lsuncd.d". A l'intérieur on crée le fichier "lsyncd5.conf" dont voici le contenu: | |||
---- | |||
socketbase = require("socket") | |||
sockettcp = socketbase.tcp() | |||
sockettcp:settimeout(3) | |||
port = 873 | |||
| |||
nomfichier="/var/log/lsyncd/lsyncd5.txt" | |||
fichier=io.open(nomfichier,"w") | |||
| |||
settings { | |||
logfile = "/var/log/lsyncd/lsyncd5.log", | |||
statusFile = "/var/log/lsyncd/lsyncd5.status", | |||
statusInterval = 10 | |||
} | |||
| |||
machines = { | |||
'sv1.home.dom', | |||
'sv2.home.dom', | |||
'sv3.home.dom', | |||
'sv4.home.dom' | |||
} | |||
| |||
machinelocal = socketbase.dns.gethostname() | |||
| |||
for _, machine in ipairs( machines ) | |||
do | |||
if not (machine == machinelocal) then | |||
local SocketRsync, errRsync = sockettcp:connect(machine, port) | |||
if SocketRsync then | |||
sync{ | |||
default.rsync, | |||
source="/site/cluster5", | |||
target=machine.."::cluster5/", | |||
-- target="rsync://"..machine.."/cluster5/", | |||
rsync = { | |||
perms=true, | |||
owner=true, | |||
group=true | |||
} | |||
} | |||
log("Normal", machine..": Connected to Rsyncd") | |||
fichier:write("OK "..machine.."\n") | |||
sockettcp:close() | |||
else | |||
log("Error", machine..": Cannot connect to Rsyncd: ", errRsync) | |||
fichier:write("KO "..machine.."\n") | |||
end | |||
end | |||
end | |||
fichier:close() | |||
---- | |||
Version du 30 mars 2023 à 12:19
→ retour aux quatre serveurs WEB en Failover, Fsyncd et ISCSI
But
Nous devons synchroniser le contenu d'un répertoire d'une machine du cluster avec le répertoire équivalent se trouvant sur les trois autres serveurs. Nous utilisons pour cela le logiciel Lsyncd que nous devrons configurer sur les quatre machines du cluster. Ce service est basé sur le logiciel Rsync et le logiciel Lsyncd entrera en relation avec service Rsyncd.
Rappelons le schéma qui illustre ces accès.
Lsyncd possède deux modes de transfert principaux qui utilisent Rsync. Le premier met en relation un processus Rsync local avec son homologue distant au travers d'une connexion SSH. La seconde façon est basée sur une connexion Client/Serveur entre un client Rsync local et un serveur Rsync distant (Rsyncd). Nous avons choisi la seconde solution.
Nous devons aborder successivement le démon Rsyncd et ensuite les services Lsyncd.
Création des répertoires
Sur les quatre machines du cluster, nous créons l'arborescence de répertoires suivante:
mkdir /site mkdir /site/cluster5 mkdir /site/cluster6 mkdir /site/cluster7 mkdir /site/cluster8
N'oublions pas de leur affecter les droits nécessaires en fonction de leur utilisation.
Rsyncd
Le service Rsyncd permettra à un client distant d'ajouter, supprimer ou modifier des fichiers ou des répertoires mis en accès localement. La configuration présentée devra se faire de façon identique sur les quatre machines du cluster.
Installation
Le logiciel "rsync" est normalement installé d'office. Il nous faut installer la partie service:
dnf install rsync-daemon dnf install rsync
Configuration
Le fichier de configuration se nomme "/etc/rsyncd.conf". Voici son contenu pour notre utilisation:
# Options globales max connections = 10 # limiter à IPV4 address=0.0.0.0 uid = root gid = root use chroot = true log file = /var/log/rsyncd.log lock file = /run/rsyncd.lock pid file = /run/rsyncd.pid # Partages [cluster5] path = /site/cluster5 comment = Espace pour Cluster 5 hosts allow = 192.168.1.71 192.168.1.72 192.168.1.73 192.168.1.74 read only = false write only = true list = true [cluster6] path = /site/cluster6 comment = Espace pour Cluster 6 hosts allow = 192.168.1.71 192.168.1.72 192.168.1.73 192.168.1.74 read only = false write only = true list = true [cluster7] path = /site/cluster7 comment = Espace pour Cluster 7 hosts allow = 192.168.1.71 192.168.1.72 192.168.1.73 192.168.1.74 read only = false write only = true list = true [cluster8] path = /site/cluster8 comment = Espace pour Cluster 8 hosts allow = 192.168.1.71 192.168.1.72 192.168.1.73 192.168.1.74 read only = false write only = true list = true
On y retrouve les quatre répertoires nouvellement créés; ils sont mis en accès en écriture pour nos quatre machines du cluster via leur adresse IP.
Configurer le mur de feu ou FireWall
Si vous activez le Firewall, ce qui est recommandé, il faut y ajouter la règle suivante:
-A INPUT -p tcp -m tcp --sport 873 -s 192.168.1.0/24 -m conntrack --ctstate NEW -j ACCEPT -A OUTPUT -p tcp -m tcp --dport 873 -d 192.168.1.0/24 -j ACCEPT
Activer et lancer le service
Le service à lancer est "rsyncd.service". La première commande active le service pour qu'à chaque démarrage du serveur, le service se lance. La seconde lance directement le service.
systemctl enable rsyncd.service systemctl start rsyncd.service
Lsyncd
Le service Lsyncd permet de synchroniser les fichiers ou répertoires locaux avec le contenu d'un partage distant mis à disposition par le service Rsyncd. La configuration présentée devra se faire de façon identique sur les quatre machines du cluster.
Principe
Il faut préciser que Lsyncd va gérer des fichiers et répertoires physiquement localisés sur la machine hôte du service. En effet il intercepte les événements et notifications locaux concernant toute création, suppression ou modification de fichier ou répertoire intervenant sous le répertoire qu'il surveille.
Le service commence par exécuter le fichier de configuration écrit en LUA, langage de script. Suite à cette exécution, il en déduit le nécessaire pour faire l'exécution et le suivi d'un ou plusieurs processus Rsync.
La première exécution du processus Rsync est une synchronisation complète de la cible qui devient l'exacte image de la source locale.
Toutes les exécutions qui suivent n'affecteront que les fichiers et répertoires de la source locale qui subissent un ajout, une suppression ou une modification. Donc si après ce démarrage, on ajoute, supprime ou modifie un fichier ou un répertoire sur la cible, il restera en place tel quel jusqu'à un redémarrage du service Lsyncd.
Fonctionnement
Nous devons gérer individuellement les quatre répertoires. Chacune de ces tâches se trouvant normalement sur les machines différentes mais pouvant migrer à tout moment sur une autre et pouvant alors se retrouver en présence d'une autre tâche. Nous devons donc effectuer quatre configurations similaires, se différenciant que par leur numéro.
Comme cette configuration se singularise par un chiffre dans le nom du répertoire à gérer, toute la configuration suivra le même canevas. Par exemple le répertoire "/site/cluster5" comporte le chiffre "5". Nous présenterons la configuration pour ce répertoire. Pour les autres répertoires, il suffira de substituer partout ce chiffre "5" par celui que l'on rencontrera suivant le nom des trois autres répertoires:
- le "6" pour le répertoire "/site/cluster6"
- le "7" pour le répertoire "/site/cluster7"
- le "8" pour le répertoire "/site/cluster8"
Installation
Nous installons les paquets suivants:
dnf install lsyncd dnf install lua dnf install lus-socket
Normalement le paquet "lua" est installé comme dépendance du paquet "lsyncd" mais pour notre script de configuration, nous avons besoin du module de LUA "socket" que nous installons en plus.
Cette installation est a faire sur les quatre machines du cluster.
Fichiers de configuration LUA
Nous présentons la configuration pour le répertoire "/site/cluster5".
En premier on crée le répertoire "/etc/lsuncd.d". A l'intérieur on crée le fichier "lsyncd5.conf" dont voici le contenu:
socketbase = require("socket") sockettcp = socketbase.tcp() sockettcp:settimeout(3) port = 873 nomfichier="/var/log/lsyncd/lsyncd5.txt" fichier=io.open(nomfichier,"w") settings { logfile = "/var/log/lsyncd/lsyncd5.log", statusFile = "/var/log/lsyncd/lsyncd5.status", statusInterval = 10 } machines = { 'sv1.home.dom', 'sv2.home.dom', 'sv3.home.dom', 'sv4.home.dom' } machinelocal = socketbase.dns.gethostname() for _, machine in ipairs( machines ) do if not (machine == machinelocal) then local SocketRsync, errRsync = sockettcp:connect(machine, port) if SocketRsync then sync{ default.rsync, source="/site/cluster5", target=machine.."::cluster5/",
-- target="rsync://"..machine.."/cluster5/",
rsync = { perms=true, owner=true, group=true } } log("Normal", machine..": Connected to Rsyncd") fichier:write("OK "..machine.."\n") sockettcp:close() else log("Error", machine..": Cannot connect to Rsyncd: ", errRsync) fichier:write("KO "..machine.."\n") end end end fichier:close()
→ retour aux quatre serveurs WEB en Failover, Fsyncd et ISCSI