Gentoo Logo

Règles et guide au sujet des miroirs rsync de Gentoo Linux

Table des matières :

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
# Optionnel : restriction de l'accès à vos machines Gentoo
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

(Démarrez le démon immédiatement)
# /etc/init.d/rsyncd start
(Ajoutez le démon au niveau d'exécution de démarrage par défaut)
# 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

(Vous pouvez utiliser le nom du serveur ou son adresse IP)
# rsync 192.168.0.1::
gentoo-portage         Gentoo Portage
# rsync le_nom_du_serveur::gentoo-portage
(Vous devriez voir le contenu de /usr/portage de votre miroir)

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

(Utilisez l'adresse IP du serveur)
SYNC="rsync://192.168.0.1/gentoo-portage"
(Ou utilisez son nom)
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

(Vérifiez que la variable SYNC a été réglée)
# emerge --info | grep SYNC
SYNC="rsync://your_server_name/gentoo-portage"
(Synchronisez sur votre miroir local)
# 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 :

  1. Entre :00 et :10
  2. 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.



Imprimer

Dernière mise à jour le 28 avril 2010

La version originale de cette traduction n'est plus maintenue

Résumé : Guide et règles de mise en place d'un miroir rsync pour Gentoo Linux.

Administrateurs du miroir Gentoo
Auteur

Tobias Klausmann
Auteur

Matthieu Montaudouin
Traducteur

Xavier Neys
Correcteur, Traducteur

Marion Agé
Traducteur

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.