Gentoo Logo

Guida e politiche per i mirror rsync di Gentoo Linux

Indice:

1.  Informazioni preliminari

Riguardo ai nomi e alle terminologie

Questa guida è dedicata a chiunque voglia configurare personalmente un mirror rsync, è può risultare utile a chi vuole gestire sia mirror rsync ufficiali, sia privati.

Ci sono tre tipologie di mirror rsync per Gentoo: mirror principali di rotazione, mirror della comunità, e mirror privati. I mirror principali di rotazione sono gestiti dal gruppo per le infrastrutture di Gentoo, e gestiscono l'enorme massa di traffico rsync sviluppata dagli utenti di questa distribuzione. I mirror della comunità sono mirror gestiti da volontari della comunità di Gentoo. I mirror privati sono gestiti da singole persone e non sono accessibili dalla rete pubblica, ed hanno lo scopo di ridurre i costi del traffico e la latenza per aziende o singole persone.

Attualmente c'è un numero sufficiente di mirror della comunità, mentre c'è ancora bisogno di ulteriori mirror principali di rotazione. Le specifiche hardware per i mirror principali di rotazione includono:

  • Minimo un processore Pentium 4 2GHz (preferibile a 64-bit con almeno 2 core)
  • Minimo 2GB di RAM (3GB - 4GB sarebbe l'ideale)
  • 15GB di spazio su disco (IDE/SATA va bene)

È possibile mantenere il possesso fisico dell'hardware, e tenerlo online nel proprio spazio di collocazione. Il consumo medio della larghezza di banda per ciascun mirror principale di rotazione è di circa 10Mbit/sec (pressapoco 2,6 TiB al mese). Questo numero dovrebbe diminuire in rapporto all'aumentare dei mirror ufficiali.

Se si desidera donare la propria macchina, mandare un'e-mail con tutte le informazioni necessarie ai Mirror Admin.

2.  Configurare il proprio mirror rsync locale

Introduzione

Molti utenti eseguono Gentoo su diverse macchine e necessitano di sincronizzare l'albero di Portage su ognuna di queste. Usare i mirror pubblici è un chiaro spreco di banda da entrambi i lati. Sincronizzare solo una macchina con un mirror pubblico e tutte le altre con questa macchina locale risparmierebbe risorse sui mirror Gentoo e banda dati all'utente.

Lo stesso discorso vale per le organizzazioni che vogliono controllare il mirror rsync con il quale i propri server e workstation effettuano la sincronizzazione. Ovviamente c'è anche la loro volontà di risparmiare sulla banda e sui costi del traffico.

Tutto ciò che occorre fare è selezionare la macchina da adibire a mirror rsync locale e configurarla opportunamente. Scegliere un computer capace di gestire i carichi di CPU e disco richiesti dalle operazioni di rsync. Inoltre il proprio mirror locale deve sempre essere disponibile quando gli altri computer sincronizzeranno il proprio albero di portage, oltre che a disporre di un indirizzo IP statico o possedere un nome host sempre risolvibile. Configurare un server DCHP e/o DNS va oltre gli scopi di questa guida.

Tenere presente che in queste istruzioni si assume che il proprio mirror rsync privato sia una macchina Gentoo. Se si vuole eseguirlo su una distribuzione differente, la guida per configurare un mirror della comunità potrebbe essere maggiormente utile. L'importante è non effettuare la sincronizzazione ogni mezz'ora ma solo una o due volte al giorno.

Configurare il server

Non è richiesta l'installazione di pacchetti aggiuntivi in quanto il software richiesto è già presente sulla macchina. Per impostare il proprio mirror rsync locale basta modificare opportunamente il demone rsync in modo da rendere disponibile per la sincronizzazione la directory /usr/portage. Creare il seguente file di configurazione /etc/rsyncd.conf:

Codice 2.1: Esempio di /etc/rsyncd.conf

pid file = /var/run/rsyncd.pid
max connections = 5
use chroot = yes
uid = nobody
gid = nobody
# Opzionale: restringe l'accesso alle proprie macchine 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/

Le opzioni hosts allow e hosts deny non sono necessarie, in quanto la configurazione predefinita accetta la connessione da qualsiasi client. L'ordine con cui vengono scritte le opzioni è irrilevante: il server controlla sempre per prima l'opzione hosts allow e permette la connessione all'host se questo corrisponde ad uno dei pattern elencati; dopodiché passa all'opzione hosts deny e rifiuta la connessione se riscontra una qualsiasi corrispondenza. Agli host che non hanno nessuna corrispondenza viene permessa la connessione. Leggere la pagina man (man rsyncd.conf) per ulteriori informazioni.

Avviare il demone rsync lanciando i seguenti comandi da utente root:

Codice 2.2: Avviare il demone rsync

(Avviare immediatamente il demone)
# /etc/init.d/rsyncd start
(Aggiungere il demone al runlevel default)
# rc-update add rsyncd default

A questo punto si può testare il mirror rsync. È consigliabile, ma non necessario, effettuare la prova da un'altra macchina. Se il proprio server non è raggiungibile attraverso il nome dagli altri computer, in alternativa si può utilizzare il suo indirizzo IP.

Codice 2.3: Testare il proprio mirror

(Si può usare il nome del server o il suo indirizzo IP)
# rsync 192.168.0.1::
gentoo-portage     Gentoo Portage
# rsync nome_tuo_server::gentoo-portage
(Si dovrebbe vedere il contenuto di /usr/portage del proprio
mirror)

Il mirror rsync è ora pronto per essere utilizzato. Per mantenere aggiornato il server eseguire ad intervalli regolari emerge --sync, come veniva fatto anche in precedenza. Se si utilizza cron o strumenti simili per sincronizzare regolarmente, ricordarsi di mantenere una frequenza bassa, tipo uno o due volte al giorno.

Nota: Notare che molti amministratori dei mirror pubblici considerano come abusi le sincronizzazioni ripetute con una frequenza maggiore ad una o due volte al giorno. Alcuni se non la maggior parte di essi bandiranno dai propri server gli IP delle macchine che abuseranno di questo servizio.

Configurare i propri client

Ora bisogna modificare la configurazione degli altri computer per farli sincronizzare con il proprio mirror rsync locale invece che con quello pubblico. Modificare /etc/portage/make.conf e far puntare la variabile SYNC al proprio server.

Codice 2.4: Definire SYNC in /etc/portage/make.conf

(Usare l'indirizzo IP del proprio server)
SYNC="rsync://192.168.0.1/gentoo-portage"
(O usare il nome del server)
SYNC="rsync://nome_tuo_server/gentoo-portage"

Per verificare che il computer sia configurato correttamente effettuare la sincronizzazione con il proprio mirror locale per la prima volta:

Codice 2.5: Verifica e sincronizzazione

(Verificare che la variabile SYNC sia inizializzata)
# emerge --info|grep SYNC
SYNC="rsync://nome_tuo_server/gentoo-portage"
(Sincronizzare il client con il proprio mirror locale)
# emerge --sync

Non sono necessarie ulteriori operazioni, ora tutti i computer useranno il mirror rsync locale appena configurato ad ogni esecuzione di emerge --sync.

3.  Configurare un server rsync della comunità

Introduzione

Nota: Si possono trovare esempi di configurazione e file script nel pacchetto gentoo-rsync-mirror. Eseguire emerge gentoo-rsync-mirror.

Attualmente, effettuare il mirror dell'albero di Portage richiede circa 600Mb, per cui lo spazio consumato non è molto; per assicurarsi di avere spazio a sufficienza anche in futuro, mettere a disposizione almeno un 1Gb di spazio libero. Configurare un mirror dell'albero di Portage è semplice -- per prima cosa, assicurarsi di avere installato rsync. Successivamente, modificare il proprio rsyncd.conf come nell'esempio seguente:

Codice 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]
#modern versions of portage use this entry
path = /gentoo/rsync
comment = Gentoo Linux Portage tree mirror
exclude = distfiles

Ovviamente per la maggior parte dei file è possibile scegliere le proprie locazioni. La parte importante è la sezione ([gentoo-portage]). Questa è la locazione dalla quale i client rsync proveranno a sincronizzarsi.

Per ragioni di sicurezza, è richiesto l'uso di un ambiente in chroot. Ciò comporta delle implicazioni per i timestamp dei log -- vedere le FAQ più sotto.

A questo punto bisogna effettuare il mirror dell'albero di Gentoo Linux Portage. Per fare ciò, è possibile usare lo script mostrato qui di seguito. Probabilmente sarà necessario cambiare la locazione di qualche fileper soddisfare le proprie necessità -- in particolare, esse dovrebbero corrispondere a quelle del proprio rsyncd.conf.

Codice 3.2: rsync-gentoo-portage.sh

#!/bin/bash

RSYNC="/usr/bin/rsync"
OPTS="--quiet --recursive --links --perms --times -D --delete --timeout=300"
#Decommentare la linea seguente solo se si vi è stato garantito l'accesso a masterportage.gentoo.org
#SRC="rsync://masterportage.gentoo.org/gentoo-portage"
#Se si sta aspettanto l'accesso al mirror principale, selezionare uno dei mirror da:
SRC="rsync://rsync.de.gentoo.org/gentoo-portage"
DST="/space/gentoo/rsync/"

echo "Started update at" `date` >> $0.log 2>&1
logger -t rsync "re-rsyncing the gentoo-portage tree"
${RSYNC} ${OPTS} ${SRC} ${DST} >> $0.log 2>&1

echo "End: "`date` >> $0.log 2>&1

Il proprio rsyncd.motd dovrebbe contenere l'indirizzo IP ed altre informazioni di rilievo riguardanti il proprio mirror, per esempio l'host che fornisce il mirror di Portage e un contatto amministrativo. Ora è possibile testare il server come abbozzato nel capitolo precedente Configurare il proprio mirror rsync locale

Dopo essere stati approvati a mirror rsync ufficiale, al proprio host verrà dato un alias avente una nome nella forma: rsync[num].[codice nazione].gentoo.org.

4.  FAQ brevi

D: Chi bisogna contattare per problemi di manutenzione o problemi riguardanti rsync?

R: Visitare Gentoo Bugzilla ed inserire un bug nel prodotto "Mirrors", componente "Server Problem".

D: Come si può controllare l'aggiornamento di un server rsync ufficiale?

R: Il gruppo delle infrastrutture Gentoo tiene sotto controllo tutti i server rsync della comunità. I risultati sono visibili nella pagina web corrispondente.

D: Sto mettendo a disposizione un mirror rsync privato per la mia azienda. Posso ancora accedere a masterportage.gentoo.org?

R: A causa delle risorse limitate, bisogna assicurare che esse siano allocate in modo da fornire il massimo beneficio agli utenti. Perciò le connessione permesse al rsync principale e ai mirror distfile sono limitate solamente ai server pubblici. Si invitano gli utenti ad utilizzare il nostro regolare sistema di mirror per stabilire un mirror rsync privato, sebbene venga chiesto loro di seguire qualche basilare Linea guida di educazione per Rsync.

D: È importante sincronizzare il mio mirror due volte all'ora?

R: Sì, è importante. Non occorre eseguire la sincronizzazione esattamente alle :00 e alle :30 ma la sincronizzazione dovrebbe avvenire in ciascuna delle due finestre temporali:

  1. da :00 a :10
  2. da :30 a :40

Inoltre, assicurarsi che le proprie sincronizzazioni avvengano esattamente ogni 30 minuti. Per cui, se la prima sincronizzazione è pianificata ogni ora alle :08, si prega di pianificare la seconda alle :38.

D: Dove dovrei sincronizzazione il mio mirror rsync prima di diventare un mirror ufficiale Gentoo?

  • Per i mirror rsync Europei: sincronizzarsi con rsync.de.gentoo.org
  • Per i mirror rsync Statunitensi: sincronizzarsi con rsync.us.gentoo.org
  • Per tutti gli altri: sincronizzarsi con rsync.us.gentoo.org

D: Come individuo il mirror più vicino a me?

R: netselect è progettato per farlo automaticamente. Se non è già installato, farlo ora tramite il comando emerge netselect, poi lanciare netselect rsync.gentoo.org. Dopo circa un minuto netselect stamperà un indirizzo IP, che dev'essere utilizzato come unico parametro per rsync, seguito da una coppia di due punti, es. rsync 1.2.3.4::. Dal messaggio banner visualizzato si dovrebbero reperire informazioni utili. Aggiornare di conseguenza /etc/portage/make.conf.

D: È possibile usare la compressione durante la sincronizzazione con masterportage.gentoo.org?

R: No. La compressione utilizza troppe risorse del server, per cui è stata disabilitata forzatamente su masterportage.gentoo.org. Si prega di non provare ad usare la compressione mentre si sta effettuando una sincronizzazione con questo server.

D: Noto la presenza di molti processi relativi a rsync vecchi e probabilmente morti, come posso eliminarli?

R: Questo comando sarà molto utile per terminare i vecchi processi rsync che qualche volta restano sparsi nel sistema a causa di problemi di connessione. È importante terminarli poiché contano come connessioni valide per l'opzione 'max connections'. Si può eseguire questo comando ogni ora tramite crontab, esso cercherà e terminerà i processi rsync più vecchi di un'ora.

Codice 4.1: Terminare i vecchi processi rsync

/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}'`

D: Molto spesso ci sono troppi utenti connessi al mio server rsync, e qualche volta ciò comporta un DoS al mio mirror, c'è qualche modo per prevenire questa situazione?

In certi casi, c'è qualche utente sconsiderato che abusa del sistema di mirror rsync sincronizzando più di 1-2 volte al giorno. Nei casi più estremi, gli utenti pianificano una sincronizzazione circa ogni 15 minuti. Molte volte questo porta ad un attacco di tipo Denial Of Service occupando continuamente uno slot rsync che dovrebbe altrimenti essere libero e disponibile per un altro utente. Per cercare di prevenire questa situazione, è possibile usare questo script perl il quale effettuerà una scansione dei file di log di rsync, selezionerà gli indirizzi IP che si sono connessi più di N volte al giorno e in modo dinamico creerà un file rsyncd.conf, includendo l'indirizzo IP incriminato nella direttiva 'hosts deny'. La linea seguente controlla il valore di N (in questo caso 4):

Codice 4.2: Defnire il massimo numero di connessioni per IP

@badhosts=grep {$hash{$_}>4} keys %hash;

Se viene usato questo script, ricordarsi di effettuare la rotazione dei propri file di log di rsync giornalmente e modificare lo script per far corrispondere la locazione al proprio file rsyncd.conf. Questo script è testato su Gentoo Linux, ma dovrebbe comunque funzionare regolarmente su altre architetture che supportano sia rsync che perl.



Stampa

Aggiornato il 24 luglio 2012

La versione originale di questo documento non è più mantenuta

Oggetto: Questo documento spiega come configurare un mirror rsync ufficiale e un proprio mirror locale

Gentoo Mirror Administrators
Autore

Tobias Klausmann
Autore

Xavier Neys
Redazione

Davide Cendron
Traduzione

Donate to support our development efforts.

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