Push Mirroring

Il push mirroring è una modalità di mirroring che minimizza il tempo richiesto affinché le modifiche all'archivio raggiungano i mirror. Il server mirror usa un meccanismo di attivazione (trigger) per informare i client mirror che è richiesto un aggiornamento.

Il push mirroring richiede uno impegno di configurazione un po' maggiore dal momento che gli amministratori dei mirror sorgente e destinazione devono scambiarsi delle informazioni. Il beneficio è che il mirror sorgente fa partire il processo di copia immediatamente dopo che il proprio archivio è stato aggiornato. Ciò consente di propagare in modo estremamente rapido le modifiche all'archivio.

Spiegazione della tecnica

Prima qualche informazione su ssh. Ssh consente la connessione sicura ad account su macchine diverse. Non solo le password non sono mai passate in chiaro, ma una volta connessi a una macchina hai la garanzia di base che le connessioni successive avverrano sulla stessa macchina. Ciò previene molti attacchi di tipo man-in-the-middle.

Una capacità che ha ssh è quella di estrarre la chiave pubblica di identificazione di un utente su un'altra macchina ed aggiungerla a un file di chiavi autorizzate sulla tua macchina. Di default, l'utente sull'altra macchina (che ha la chiave privata di identifacazione associata con quella pubblica fornita) ha privilegi di accesso al tuo account. È possibile però aggiungere del testo a una chiave registrata per restringere il tipo di accesso consentito a chi usa tale chiave con il tuo account.

Così per proteggere il mirror destinazione, la chiave fornita dal mirror sorgente ha del testo aggiunto ad essa per limitare chi accede all'account destinazione dando il permesso di fare una sola cosa: far partire sulla macchina il programma che aggiorna il mirror. Anche se qualcuno (una terza parte malintenzionata) fosse in grado di forzare la chiave il massimo che potrebbe fare sarebbe far partire il programma di mirror sulla tua macchina. Non ci si deve neanche da preoccupare che copie multiple del programma possano essere avviate poiché viene usato un file di lock.

Sulla sorgente, rsync può essere configurato per limitare chi può accedere a una data area per username e password. Questi ultimi sono totalmente indipendenti da /etc/passwd cosicché un server push non deve preoccuparsi della possibilità di dare ad altri accesso alla macchina. Come viene configurato, username e password sono passati in chiaro. Questo non dovrebbe essere un problema però, poiché il peggio che possa accadere è che altri possano copiare Debian da quel sito.

Configurare un client di push mirror

È meglio configurare usanto un account di utente ordinario, invece di root. Il contenuto della chiave pubblica per ssh data dal mirror sorgente, dovrebbe essere copiato in ~<user>/.ssh/authorized_keys.

Per diventare un client push per l'archivio FTP, è necessario impostare il mirror usando l'insieme di script ftpsync. Copiare ftpsync.conf.sample in ftpsync.conf e modificarlo in modo da adattarlo al proprio sistema e ai valori forniti da upstream.

Siti client di tipo Push-Primary

I mirror client di tipo Push-Primary, definiti anche mirror Tier-1, sono dei mirror push client ai quali è consentita la copia dai nostri archivi master.

Se il tuo sito è molto ben connesso (con banda molto buona e ben connesso con i maggiori backbone) e hai la volontà di lasciare che altri siti facciano mirroring dal tuo sito, puoi farcelo sapere in modo da poterti prendere in considerazione come push mirror. Tuttavia, non ti aspettare che questo accada molto presto, perché abbiamo già una certo numero di mirror Tier-1.

Se il tuo sito sta diventando un Push-Primary per l'archivio FTP, avrai bisogno di uno di questi file:

Se il proprio sito sta diventando un Push-Primary per le pagine WWW, occorrerà la chiave pubblica SSH2 usata da www-master.debian.org.

Configurare un server push mirror

Dato il gran numero di mirror e la dimensione dell'archivio Debian, non è opportuno per tutti i mirror usare l'archivio del sito master come sorgente per Debian (cioè come proprio server push mirror). È molto più efficiente se il carico è distribuito tra una serie di push mirror distribuiti nel mondo.

I server push mirror dovrebbero essere client push mirror dell'archivio master (o forse di un altro push server) e dovrebbero contenere un mirror dell'intero archivio Debian.

Vedi i dettagli di cofigurazione di un push server.