Il concetto di base è che si può fare in modo che i client reperiscano i pacchettti di cui hanno bisogno da una copia locale invece di connettersi ad uno degli altri mirror di Fedora. Per fare ciò abbiamo bisogno di:
- creare una copia locale dei repository
- rendere disponibile la copia ai client locali
- informare l'infrastruttura di Fedora del nuovo mirror locale
Veniamo ora al dettagli delle operazioni.
creare una copia locale dei repository
Per creare una copia locale dei respository useremo rsync (se non fosse già installato nel vostro sistema usate il comando
yum install rsync
) creando uno shell script (per esempio chiamato dosync.sh
) contenente il comando:
rsync -vaH \
--exclude-from=fedora-excludes.txt \
--numeric-ids \
--delete \
--delete-delay \
--delay-updates \
rsync://rsync.mirrorservice.org/download.fedora.redhat.com/pub/fedora/linux \
Fedora
il quale creerà una directory "Fedora" contente l'intero repository. Siete ovviamente liberi di scegliere un mirror diverso a cui connettervi dalla lista dei mirror attivi .
Va anche creato il file fedora-excludes.txt che è menzionato nella riga di comando il quale contiene la lista dei files da ignorare nel vostro mirror; per esempio, personalemente non ho necessità di scaricare versioni di Fedora precedenti alla 10, di rawhide, delle immagini ISO, delle architetture PowerPC, etc; il mio file contiene quindi:
**/debug/**
**/alpha/**
**/source/**
**/SRPMS/**
**/drpms/**
**/*.iso
**/ppc/**
**/ppc64/**
linux/core/**
linux/development/**
linux/releases/7/**
linux/releases/8/**
linux/releases/9/**
linux/releases/test/**
linux/updates/8/**
linux/updates/9/**
linux/updates/testing/**
a questo punto si può eseguire la prima sincronizzazione mandando in esecuzione lo script; per la prima volta aspettatevi tempi lunghi, visto che con questa configurazione ho al momento circa 100Gb di dati.
rendere disponibile la copia ai client locali
I client locali accederanno al repository via http; nel mio caso uso il server apache, per cui basta creare il file
/etc/httpd/conf.d/fedora_mirror.conf
ed inserivi la seguente configurazione:Alias /fedora /var/www/mirrors/Fedora/linux
AddType application/octet-stream .rpm <Directory /var/www/mirrors/Fedora/linux> Options Indexes FollowSymLinks Order allow,deny Allow from all </Directory> <LocationMatch "\.(xml|xml\.gz|xml\.asc|sqlite)"> Header set Cache-Control "must-revalidate" ExpiresActive On ExpiresDefault "now" </LocationMatch>
Ovviamente adattando il percorso /var/www/mirrors/Fedora/linux al vostro caso.
informare l'infrastruttura di Fedora del nuovo mirror locale
L'ultimo passo da fare per completare la configurazione del mirror privato è quella di registrarlo sui server Fedora in modo che i client provenienti dalla rete interna siano automaticamente redirezionati su questo.
Per prima cosa accedete al server di mirrormanager e aggiungete un nuovo mirror scegliendo un "Site Name" e "Site Password" a piacere; ricordate di marcare il mirror come "Private". Aggiungete un nuovo "Host", anche qua ricordando di marcarlo come "Private" e poi indicate nella sezione "Site-local Netblocks" da quale indirizzo IP proverranno i vostri client, che nel caso più comune (un solo indirizzo IP dietro un fireall/router) sarà tipo xxx.xxx.xxx.xxx/32.
A questo punto, non resta che usare "Add Category" per segnalare quale dei contenuti sono disponibili; nel nostro caso, la categoria è "Fedora Linux" mentre in "Upstream" va l'indirizzo del mirror che abbiamo scelto.
L'ultima operazione da fare è aggiungere l'URL che i client interni usaranno per accedere al mirror locale (URLs serving this content).
Assicuratevi ora di avere installato il pacchetto
mirrormanager-client
ed editate il file /etc/mirrormanager-client/report_mirror.conf facendo in modo che le sezioni 'host', 'site' e 'Fedora Linux' siano configurate in accordo a quanto usato in mirrormanager.A questo punto siamo pronti ad eseguire il comando report_mirror che avrà un output tipo:
# report_mirror Category Fedora Other directories updated: 0 added: 0 deleted 0 Category Fedora Secondary Arches directories updated: 0 added: 0 deleted 0 Category Fedora Linux directories updated: 154 added: 0 deleted 0 Category Fedora EPEL directories updated: 0 added: 0 deleted 0 Category Fedora Extras directories updated: 0 added: 0 deleted 0 Category Fedora Core directories updated: 0 added: 0 deleted 0 Category Fedora Archive directories updated: 0 added: 0 deleted 0 checked in successful
Se tutto è andato per il verso giusto, il nuovo mirror apparirà dopo pochi minuti al primo posto della lista, ad esempio quella delle update di Fedora 11 per x86_64
Ultimi ritocchi
Come tocco finale, aggiungete il comando "report_mirror" allo script dosync.sh creato in precedenza e fate in modo che tale script venga eseguito da cron; la frequenza può variare a seconda delle vostre esigenze, ma come minimo suggerisco di farlo giornalmente.
Se siete arrivati fino a qua, complimenti! Se invece avete dubbi o problemi, non esitate a contattarmi.
Riferimenti
http://fedoraproject.org/wiki/Infrastructure/Mirroring
http://www.kev009.com/wp/2009/06/mirroring-fedora/
No comments:
Post a Comment