Règles et guide au sujet des miroirs rsync de Gentoo Linux
1.
Préliminaires
Termes, noms et ce qui va avec
Ce guide est prévu pour les gens qui voudraient paramétrer leur propre miroir
rsync. Il ne pourvoit pas seulement ceux qui veulent faire un miroir rsync
officiel mais aussi ceux qui veulent faire un miroir privé.
Il y a trois types de miroirs rsync Gentoo : les miroirs principaux, les
miroirs communautaires et les miroirs privés. Les miroirs principaux sont
maintenus par l'équipe de l'infrastructure Gentoo. Ils gèrent la majorité du
traffic de type rsync de Gentoo. Les miroirs communautaires fonctionnent grâce
à des volontaires de la communauté Gentoo. Les miroirs privés sont des miroirs
fermés au public qui fonctionnent chez les particuliers et qui ont pour
objectif de réduire les coûts du trafic et la latence pour une organisation ou
même pour un individuel.
À ce jour, nous disposons d'un nombre suffisant de miroirs communautaires et
nous sommes à la recherche de miroirs principaux supplémentaires. Les
spécifications matérielles requises pour un serveur principal sont :
-
Processeur Pentium 4 2 GHz minimum (de préférence 64 bits avec au
moins 2 cœurs)
-
2 Go de mémoire vive minimum (l'idéal serait 3 ou 4 Go)
- 15 Go d'espace disque (un disque IDE/SATA suffit)
Vous restez en possession physiquement de votre matériel, et devez le maintenir
en ligne dans votre propre local. La consommation moyenne de bande passante
pour chaque serveur principal est actuellement de ~10Mbit/sec (environ 2.6 TiB
par mois). L'ajout de serveurs principaux devrait permettre de réduire cette
valeur.
Si vous désirez faire le don d'une machine, veuillez contacter les Administrateurs des miroirs avec
les informations nécessaires.
2.
Paramétrer votre propre miroir rsync local
Introduction
Un grand nombre d'utilisateurs utilisent Gentoo sur plusieurs machines et ont
besoin de synchroniser l'arbre Portage sur chacune d'entres elles.
L'utilisation des miroirs publics est simplement un gaspillage de bande
passante des deux côtés. Ne synchroniser qu'une seule machine sur un miroir
public puis toutes les autres sur cette dernière préserverait les ressources
des miroirs Gentoo et la bande passante des utilisateurs.
La même chose serait valable pour les organisations qui voudraient contrôler le
miroir rsync de leurs serveurs et la synchronisation de leur poste de travail
avec ceux-ci. Naturellement, ils veulent généralement préserver la bande
passante et les coûts de traffic.
Tout ce que vous avez à faire est de choisir la machine qui sera votre miroir
rsync local et de la paramétrer. Il faudra que l'ordinateur soit capable de
gérer la charge du processeur et des disques nécessaire à l'opération rsync.
Votre miroir local doit aussi être disponible à n'importe quel moment où l'un
de vos ordinateurs voudrait synchroniser son arbre Portage.
En outre, il devra posséder une adresse IP statique ou une résolution de nom
qui pointe toujours vers votre serveur. La configuration d'un DHCP et/ou d'un
serveur DNS dépasse le cadre de ce guide.
Notez que ces instructions supposent que votre miroir privé rsync soit une
machine Gentoo. Si vous avez l'intention de le faire fonctionner sur une autre
distribution, le guide de paramétrage d'un miroir communautaire pourrait être
plus intéressant. Ne synchronisez pas le miroir toutes les demi-heures mais
seulement une ou deux fois par jour.
Configuration du serveur
Aucun paquet particulier n'est requis car tous les programmes nécessaires sont
déjà présents sur votre ordinateur. La mise en place de votre propre miroir
local rsync n'est qu'une question de configuration du serveur rsyncd
afin de rendre le répertoire /usr/portage disponible pour la
synchronisation. Créez le fichier de configuration
/etc/rsyncd.conf suivant :
Exemple de code 2.1 : Exemple de /etc/rsyncd.conf |
pid file = /var/run/rsyncd.pid
max connections = 5
use chroot = yes
uid = nobody
gid = nobody
hosts allow = 192.168.0.1 192.168.0.2 192.168.1.0/24
hosts deny = *
[gentoo-portage]
path=/usr/portage
comment=Gentoo Portage
exclude=distfiles/ packages/
|
Vous n'êtes pas obligé d'utiliser les options hosts allow et hosts
deny. Par défaut, tous les clients seront acceptés. L'ordre dans lequel vous
écrivez les options n'est pas important. Le serveur traitera toujours l'option
hosts allow en premier et autorisera les connexions si l'adresse de la
machine client correspond à l'une des adresses listées. Le serveur traitera
ensuite l'option hosts deny et refusera les connexions si une
correspondance est trouvée. Les adresses qui ne correspondent nulle part sont
acceptées. Veuillez lire la page de manuel (man rsyncd.conf) pour plus
d'informations.
Maintenant, démarrez votre démon rsync avec les commandes suivantes en tant que
super-utilisateur :
Exemple de code 2.2 : Démarrage du démon rsync |
# /etc/init.d/rsyncd start
# rc-update add rsyncd default
|
Testons votre miroir rsync. Vous n'avez normalement pas besoin de l'essayer
depuis une autre machine mais ce serait une bonne idée de le faire. Si votre
serveur n'a pas de nom connu par les autres machines, vous pouvez utiliser son
adresse IP à la place.
Exemple de code 2.3 : Test du miroir |
# rsync 192.168.0.1::
gentoo-portage Gentoo Portage
# rsync le_nom_du_serveur::gentoo-portage
|
Votre miroir rsync est maintenant prêt. Continuez à lancer emerge --sync
comme d'habitude pour le maintenir à jour. Si vous utilisez cron ou quelque
chose de similaire pour synchroniser Portage de façon régulière, rappelez-vous
de le réduire à une fréquence d'une ou deux synchronisations par jour maximum.
Note :
Veuillez noter que la majorité des administrateurs de miroirs publics
considèrent que se synchroniser plus d'une ou deux fois par jour est un abus.
Certains, sinon la majorité d'entre eux banniront votre adresse IP de leur
serveur si vous abusez de leurs machines.
|
Configuration de vos machines clientes
Maintenant, faites en sorte que vos autres machines utilisent le miroir local.
Éditez votre /etc/make.conf et faites pointer la variable
SYNC vers votre serveur.
Exemple de code 2.4 : Définition de SYNC dans /etc/make.conf |
SYNC="rsync://192.168.0.1/gentoo-portage"
SYNC="rsync://le_nom_du_serveur/gentoo-portage"
|
Vous pouvez vérifier que votre ordinateur a été correctement configuré et
synchronisé sur votre propre miroir local pour la première fois :
Exemple de code 2.5 : Vérification et synchronisation |
# emerge --info | grep SYNC
SYNC="rsync://your_server_name/gentoo-portage"
# emerge --sync
|
Et voilà ! Tous vos ordinateurs utiliseront maintenant votre miroir local rsync
lorsque vous ferez un emerge --sync.
3.
Paramétrer un serveur communautaire rsync
Introduction
Note :
Vous pouvez trouver un exemple de configuration et de fichiers scripts dans le
paquet gentoo-rsync-mirror. Pour cela, faites juste un
emerge gentoo-rsync-mirror.
|
Actuellement, faire un miroir de notre arbre de Portage ne demande qu'environ
600 Mo d'espace disque. Avoir 1 Go de libre devrait permettre de voir
venir. Mettre en place un miroir de l'arbre de Portage est simple ; tout
d'abord, assurez-vous que rsync est installé sur votre miroir, puis configurez
votre fichier rsyncd.conf pour qu'il ressemble à ceci :
Exemple de code 3.1 : rsyncd.conf |
uid = nobody
gid = nobody
use chroot = yes
max connections = 15
pid file = /var/run/rsyncd.pid
motd file = /etc/rsync/rsyncd.motd
log file = /var/log/rsync.log
transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
[gentoo-portage]
# Les versions récentes de Portage utilisent cette section.
path = /gentoo/rsync
comment = Gentoo Linux Portage tree mirror
exclude = distfiles
|
Vous pouvez naturellement indiquer vos propres emplacements pour la plupart des
fichiers. Ce qui importe est le nom de la section ([gentoo-portage]).
Il s'agit de l'emplacement à partir duquel les clients vont essayer de se
synchroniser.
Pour des raisons de sécurité, l'utilisation d'un environnement chroot est
requise. Ceci a des implications sur les durées de session — voir la FAQ
ci-dessous.
Maintenant, vous avez besoin de construire un miroir de l'arbre de Portage de
Gentoo Linux. Vous pouvez utiliser le script ci-dessous pour faire cela. De
nouveau, vous désirerez certainement changer les chemins des fichiers en
fonction de vos besoins — en particulier, ils devront correspondre à ceux
de votre rsyncd.conf.
Exemple de code 3.2 : rsync-gentoo-portage.sh |
#!/bin/bash
RSYNC="/usr/bin/rsync"
OPTS="--quiet --recursive --links --perms --times -D --delete --timeout=300"
# Décommentez la ligne suivante seulement si vous avez obtenu un accès à rsync1.us.gentoo.org.
#SRC="rsync://rsync1.us.gentoo.org/gentoo-portage"
# Si vous attendez l'accès à notre miroir maître, sélectionnez un de nos miroirs publics :
SRC="rsync://rsync.de.gentoo.org/gentoo-portage"
DST="/space/gentoo/rsync/"
echo "Mise à jour commencée à" `date` >> $0.log 2>&1
logger -t rsync "Mise à jour de l'arbre de Portage Gentoo"
${RSYNC} ${OPTS} ${SRC} ${DST} >> $0.log 2>&1
echo "Fin: "`date` >> $0.log 2>&1
|
Votre fichier rsyncd.motd devrait contenir votre adresse IP et
d'autres informations utiles sur votre miroir, comme l'hôte fournissant le
miroir Portage et aussi un moyen de contacter l'administrateur. Vous pouvez à
présent tester votre serveur comme il est défini plus haut dans le chapitre de
paramétrage de votre propre miroir local rsync.
Après que vous ayez été approuvé comme miroir officiel de rsync, votre serveur
sera reconnu avec un nom d'alias de la forme :
rsync[num].[country code].gentoo.org.
4.
FAQ rapide
Q : Qui dois-je contacter pour tout ce qui concerne les problèmes
et la maintenance de serveurs rsync ?
R : Allez sur le bugzilla de
Gentoo et remplissez un bogue pour le produit « Mirrors », dans
la partie « Server Problem ».
Q : Comment puis-je vérifier la « fraîcheur » d'un
serveur officiel rsync ?
R : L'équipe de Gentoo surveille tous les serveurs rsync de la communauté
pour ce qui concerne leur fraîcheur. Vous pouvez consulter leurs résultats
sur la page web
correspondante.
Q : J'utilise un miroir rsync privé pour mon entreprise. Puis-je
quand même accéder à rsync1.us.gentoo.org ?
R : Étant donné que nos ressources sont limitées, nous devons nous assurer
que nous les allouons de telle sorte que nos utilisateurs en bénéficient au
maximum. Nous limitons donc les connexions à notre rsync maître et aux miroirs
distfiles aux miroirs publics seulement. Les utilisateurs sont encouragés à
utiliser notre système de miroirs habituel pour établir un miroir rsync
privé ; il leur est donc demandé de suivre les règles
de bonne conduite rsync.
Q : Est-il important de synchroniser mon miroir deux fois par
heure ?
R : Oui c'est important. Vous n'avez pas besoin de synchroniser votre
miroir exactement à :00 et :30, mais les synchronisations devront avoir lieu
dans chacune des tranches horaires suivante :
- Entre :00 et :10
- Entre :30 et :40
De plus, veuillez vous assurez que vos synchronisations sont séparéees de 30
minutes exactement. Ainsi, si vous synchronisez la première fois de chaque heure
à :08, la seconde synchronisation devra se faire à :38.
Q : Quelle source puis-je utiliser avant de devenir un miroir
officiel ?
- En Europe : rsync.de.gentoo.org
- Aux États-Unis : rsync.us.gentoo.org
- Ailleurs : rsync.us.gentoo.org aussi
Q : Comment puis-je trouver le miroir le plus proche de chez
moi ?
R : netselect a été conçu pour faire cela à votre place. Si vous
n'avez pas encore netselect, alors faites un emerge netselect. Exécutez
ensuite netselect rsync.gentoo.org. Après une minute environ, netselect
vous indiquera une adresse IP. Notez cette adresse et utilisez-la comme seul
paramètre pour rsync en lui accolant deux « deux points », par
exemple rsync 1.2.3.4::. Vous devriez être capable de trouver quel est
ce miroir par son MOTD. Adaptez ensuite votre /etc/make.conf selon
ces nouvelles informations.
Q : Puis-je utiliser la compression quand je me synchronise avec
rsync1.us.gentoo.org ?
R : Non. La compression utilise trop de ressources sur le serveur, nous
l'avons donc désactivée sur rsync1.us.gentoo.org. S'il vous plaît n'utilisez
pas la compression quand vous vous synchronisez avec ce serveur.
Q : Je remarque un grand nombre d'anciens processus rsync
probablement morts, comment puis-je me débarasser d'eux ?
R : La commande suivante vous permet de supprimer les vieux processus
rsync qui traînent à cause de problèmes de connexion. Il est important de les
supprimer, car ils comptent comme des connexions valides pour l'option
« max connections ». Vous pouvez lancer cette commande via crontab
toutes les heures, afin de rechercher et de tuer automatiquement les processus
rsync établis depuis plus d'une heure.
Exemple de code 4.1 : Supprimer les processus rsync inactifs |
/bin/kill -9 `/bin/ps --no-headers -Crsync -o etime,user,pid,command|/bin/grep nobody | \
/bin/grep "[0-9]\{2\}:[0-9]\{2\}:" |/bin/awk '{print $3}'`
|
Q : Des utilisateurs se connectent très fréquemment sur mon miroir
et causent parfois un déni de service. Comment empêcher cela ?
Parfois, certains utilisateurs indélicats abusent des miroirs en synchronisant
plus d'une à deux fois par jour. Dans des cas extrêmes, des utilisateurs
planifient leur crontab pour synchroniser toutes les 15 minutes. Cela provoque
souvent un déni de service en occupant une connexion qui pourrait être utilisée
par un autre utilisateur. Pour essayer de bloquer ces utilisateurs, vous pouvez
essayer ce script
perl qui scanne vos fichiers de journaux (« logs ») de rsync,
détecte les IP qui ont établi plus de N connexions dans la journée et
crée de façon dynamique un fichier rsyncd.conf, en incluant les
adresses offensives dans la directive « host deny » et en leur
bloquant ainsi l'accès. La ligne suivante utilise une valeur N de 4
connexions :
Exemple de code 4.2 : Détecter les adresses IP qui abusent du rsync |
@badhosts=grep {$hash{$_}>4} keys %hash;
|
Si vous utilisez ce script, n'oubliez pas d'effectuer une rotation quotidienne
de vos fichiers de journaux (« logs ») et définissez le chemin vers
votre fichier rsyncd.conf. Le script a été testé sur Gentoo, mais
devrait fonctionner dans d'autres environnements qui supportent rsync et perl.
Ce document est protégé par la licence Creative
Commons : Paternité - Partage des Conditions Initiales à
l'Identique 2.5.
|