Gentoo Logo

Politica Gentoo Linux Referitoare la Mirror-uri rsync

Conţinut:

1.  Cerinţe Hardware

Donaţie Maşini

Gentoo Linux se bazează pe două tipuri diferite de mirror-uri: mirror-urile de rotaţie principale şi mirror-urile comunităţii. Mirror-urile de rotaţie principale sunt server-e rsync dedicate ţi responsabile pentru manipularea volumului traficului nostru rsync. Toate mirror-urile de rotaţie principale folosesc Gentoo Linux şi sunt administrate de membri ai echipei de dezvoltare Gentoo. Mirror-urile comunităţii sunt server-e care sunt asigurate şi administrate de membri ai comunităţii. Aceste server-e pot fi sau nu dedicate pentru utilizare rsync şi pot folosi sau nu Gentoo Linux.

La această dată, avem destule mirror-uri ale comunităţii şi căutăm activ server-e de rotaţie principale adiţionale. Specificaţiile pentru server-ele de rotaţie principale includ:

  • Procesor Pentium 4 Minimum 2GHz (sau echivalent)
  • Minimum 1 GOctet RAM (ideal este 1.5 GOcteţi - 2 GOcteţi)
  • 10 GOcteţi spaţiu disc (IDE este bine)

Aceste server-e pot fi donate cu lăţime de bandă şi spaţiu pentru colocare dacă dispuneţi de acestea. Dacă nu, putem oferi aceste servicii şi dvs. doar să trimiteţi maşina către centrul nostru de colocare. Consumul mediu de lăţime de bandă pentru un mirror de rotaţie principal este în prezent ~7Mbps (aproximativ 2 TOcteţi pe lună). Dacă numărul mirror-urilor de rotaţie principale creşte, corespunzător scade şi lăţimea medie de bandă consumată.

Dacă doriţi să donaţi o maşină, trimiteţi un email lui Jeffrey Forman cu informaţii pertinente.

2.  Scurte Întrebări Frecvente (oferite ca referinţă pentru actualii administratori de mirror-uri)

Î: Cine ar trebui contactat referitor la probleme rsync şi mentenanţă?

R: Vizitaţi http://bugs.gentoo.org şi completaţi un raport bug pentru produsul "Rsync".

Î: Rulez un server mirror rsync privat pentru compania mea. Pot încă accesa rsync1.us.gentoo.org?

R: Deoarece resursele noastre sunt limitate, trebuie să ne asigurăm că sunt alocate în aşa mod încât să oferim un beneficiu maxim pentru utilizatorii noştri. De aceea, limităm conexiunile către server-ele mirror principale rsync şi distfiles doar la server-ele mirror publice. Utilizatorii sunt bineveniţi în a folosi sistemul nostru obişnuit de mirror-uri pentru a-şi stabili server-e mirror rsync private, totuşi sunt rugaţi să urmărească regulile de bază şi eticheta rsync..

Î: Este important a-mi sincroniza server-ul mirror de două ori pe oră?

R: Da, este foarte important. Nu trebuie să realizaţi sincronizările exact la :00 şi :30 dar sincronizările ar trebui să se întâmple între următoarele două intervale de timp:

  1. de la :00 la :10
  2. de la :30 la :40

În plus, asiguraţi-vă că sincronizările dvs. se realizează la exact 30 minute diferenţă. Deci, dacă programaţi prima sincronizare în fiecare oră la :08, programaţi a doua sincronizare pentru :38.

De unde ar trebui să-mi sincronizez mirror-ul meu rsync înainte de a deveni un mirror oficial Gentoo?

  • Sunt un server mirror din Europa: sincronizaţi cu rsync.de.gentoo.org
  • Sunt un server mirror din Statele Unite: sincronizaţi cu rsync.us.gentoo.org
  • Nu fac parte din primele două grupuri: sincronizaţi cu rsync.us.gentoo.org

Î: Cum găsesc cel mai apropiat mirror de mine?

R: Comanda netselect a fost creată pentru a face acest lucru pentru dvs. Dacă încă nu aţi rulat emerge netselect, atunci faceţi-o. Apoi rulaţi: netselect rsync.gentoo.org. După un minut sau aproape, netselect va afişa o adresă IP. Luaţi această adresă şi folosiţi-o ca singurul parametru pentru rsync cu două coloane adăugate la aceasta. De ex. rsync 1.2.3.4::. Veţi avea ocazia să aflaţi ce mirror este din adresa din mesajul-banner. Actualizaţi corespunzător fişierul dvs. /etc/make.conf.

Î: Pot folosi compresia când sincronizez cu rsync1.us.gentoo.org?

R: Nu. Compresia utilizează prea multe resurse pe server, aşa că am dezactivat forţat compresia la rsync1.us.gentoo.org. Vă rugăm să nu încercaţi să folosiţi compresia când vă sincronizaţi cu acest server.

Î: Observ multe procese rsync vechi şi probabil inactive. Cum scap de acestea?

R: Vă rugăm să citiţi secţiunea cu Script-uri Exemplu.

Î: Sunt mulţi utilizatori care se conectează la server-ul meu rsync foarte frecvent, uneori chiar cauzând un atac DoS la mirror-ul me. Există vreo posibilitate de a preveni acest lucru?

R: Din nou, vă rugăm să citiţi secţiunea cu Script-uri Exemplu.

3.  Script-uri Exemplu

Notă: Veţi găsi un model de configuraţie şi fişiere script în pachetul gentoo-rsync-mirror. Doar rulaţi emerge gentoo-rsync-mirror.

În acest moment, procesul de mirror al arborelui nostru Portage cere în jur de 250Mb, deci nu este mare consumator de spaţiu; având cel puţin 500Mb liberi ar trebui să ofere spaţiu pentru viitor. Configurarea unui mirror pentru arborele Portage este simplă -- în primul rănd, asiguraţi-vă că mirror-ul dvs. are instalat pachetul rsync. Apoi, modificaţi fişierul rsyncd.conf pentru a arăta similar cu următorul exemplu:

Cod 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-x86-portage]
#această linie este pentru compatibilitate
path = /gentoo/rsync
comment = Gentoo Linux Portage tree

[gentoo-portage]
#versiunile noi de portage folosesc această linie
path = /gentoo/rsync
comment = Gentoo Linux Portage tree mirror
exclude = distfiles

În exemplu, mirror-ul gentoo-x86-portage indică aceleaşi date ca şi gentoo-portage. Deşi am schimbat recent numele oficial al mirror-ului nostru ca gentoo-portage, gentoo-x86-portage este încă necesar pentru compatibilitatea în urmă, deci includeţi ambele variante.

Din raţiuni de securitate, folosirea unui mediu în chroot este cerută!

Acum, trebuie să efectuaţi mirror pentru arborele Gentoo Linux Portage. Ar trebui să folosiţi următorul script pentru aceasta:

Cod 3.2: rsync-gentoo-portage.sh

#!/bin/bash

RSYNC="/usr/bin/rsync"
OPTS="--quiet --recursive --links --perms --times --devices --delete --timeout=300"
#Decomentaţi următoarea linie doar dacă aveţi permisiunea de a accesa rsync1.us.gentoo.org
#SRC="rsync://rsync1.us.gentoo.org/gentoo-portage"
#Dacă sunteţi în aşteptarea accesului la mirror-ul nostru principal, alegeţi unul din
mirror-urile noastre pe care să îl oglindiţi:
SRC="rsync://rsync2.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 

Cod 3.3: /etc/init.d/rsyncd


#!/sbin/runscript
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-misc/rsync/files/rsyncd.init.d,v 1.2 2004/05/02 22:45:02 mholzer Exp $

depend() {
need net
}

# FYI: --sparce seems to cause problems.
RSYNCOPTS="--daemon --safe-links --timeout=300"

start() {
ebegin "Starting rsync daemon"
start-stop-daemon --start --quiet --pidfile /var/run/rsyncd.pid --nicelevel 15 --exec /usr/bin/rsync -- ${RSYNCOPTS}
eend $?
}

stop() {
ebegin "Stopping rsync daemon"
start-stop-daemon --stop --quiet --pidfile /var/run/rsyncd.pid
eend $?
} 

Fişierul dvs. rsyncd.motd ar trebui să conţină adresa dvs. IP şi alte informaţii relevante legate de mirror-ul dvs., cum ar fi informaţii despre gazda care oferă mirror Portage şi o adresă de contact administrativ. După ce aţi fost acceptat ca un mirror rsync oficial, maşina dvs. va fi numită cu un nume de forma: rsync[num].[country code].gentoo.org

Această comandă vă va ajuta să eliminaţi vechile procese rsync care uneori nu se finalizează din pricina unor probleme de conexiune. Este important să le eliminaţi deoarece acestea se numără drept conexiuni valide pentru opţiunea 'max connections'. Puteţi rula această comandă cu ajutorul crontab în fiecare oră, va căuta şi elimina procesele rsync mai vechi de o oră.

Cod 3.4: Eliminarea proceselor rsync vechi

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

În unele cazuri, există unii utilizatori neluaţi în considearare care abuzează de sistemul mirror-ului rsync prin sincronizarea de mai mult de 1-2 ori pe zi. În cazurile extreme, utilizatorii programează operaţiile cron pentru sincronizare la fiecare 15 minute sau asemănător. Aceasta conduce deseori către un atac Denial of Service prin ocuparea în mod continuu a unui slot rsync, care altfel ar fi revenit unui alt utilizator. Pentru a încerca şi preveni aceasta, aţi putea folosi următorul script perl care va scana prin fişierele dvs. rsync log, va găsi adresele IP care deja s-au conectat de mai mult de N ori în respectiva zi şi va crea dinamic un fişier rsyncd.conf, incluzând adresele IP supărătoare în directiva 'hosts deny'. Linia următoare controlează calcularea N:

Cod 3.5: Definirea numărului maxim de conectări per IP

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

Dacă folosiţi acest script, nu uitaţi să rotiţi fişierele dvs. rsync log zilnic şi modificaţi script-ul pentru a se potrivi cu locaţia fişierului dvs. rsyncd.conf. Acest script este testat în Gentoo Linux, dar ar trebui să meargă corespunzător pe alte arhitecturi care suportă atât rsync cât şi perl.

4.  Configurarea propriului server mirror rsync local

Introducere

Mulţi utilizatori folosesc Gentoo pe mai multe maşini şi trebuie să ruleze emerge --sync pe fiecare din acestea. Folosirea mirror-urilor publice este o risipă de lăţime de bandă la ambele capete. Sincronizarea doar a unei maşini cu un server mirror public şi a celorlaltor cu acea maşină va salva resurse pe mirror-urile Gentoo şi va salva lăţimea de bandă a utilizatorilor.

Tot ceea ce trebuie să faceţi este să alegeţi care din maşinile dvs. va fi mirror-ul rsync local al dvs. şi să o configuraţi. Ar trebui să alegeţi un computer care poate susţine încărcarea procesului şi discului cerute de operaţia rsync. Mirror-ul dvs. local trebuie, de asemenea, să fie disponibil oricând unul din celelaltele computere ale dvs. îşi sincronizează propriul arbore Portage. Pe lângă asta, ar trebui să aibă o adresă IP statică sau un nume care întotdeauna poate fi rezolvat de server-ul dvs. Configurarea unui server DHCP şi/sau DNS este dincolo de scopul acestui ghid.

Configurarea server-ului

Nu există un alt pachet de instalat pentru că pachetul necesar este deja instalat pe computerul dvs. Configurarea unui mirror rsync local este doar o problemă în a configura daemon-ul rsyncd pentru a face directorul dvs. /usr/portage disponibil pentru sincronizare. Creaţi următorul fişier de configurare /etc/rsyncd.conf:

Cod 4.1: Exemplu pentru /etc/rsyncd.conf

pid file = /var/run/rsyncd.pid
max connections = 5
use chroot = yes
uid = nobody
gid = nobody
# Opţional: restricţionaţi accesul doar la maşinile dvs. 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/

Nu trebuie să folosiţi opţiunile hosts allow şi hosts deny. Implicit, tuturor clienţilor li se va permite să se conecteze. Ordinea în care scrieţi aceste opţiuni nu este relevantă. Server-ul va verifica întotdeauna opţiunea hosts allow în primul rând şi va permite conexiunea dacă host-urile care se conectează se potrivesc cu unul din modelele afişate. Server-ul va verifica apoi opţiunea hosts deny şi va refuza conexiunea dacă este găsită vreo potrivire. Oricărui host care nu se potriveşte cu unul din modelele anterioare, îi va fi permisă conectarea. Vă rugăm să citiţi pagina de manual (man rsyncd.conf) pentru mai multe informaţii.

Acum, porniţi daemon-ul dvs. rsync cu următoarea comandă ca utilizator root:

Cod 4.2: Pornirea daemon-ului rsync

(Porniţi daemon-ul acum)
# /etc/init.d/rsyncd start
(Adăugaţi daemon-ul la nivelul de iniţializare default)
# rc-update add rsyncd default

Haideţi să testăm mirror-ul dvs. rsync. Nu trebuie să-l încercaţi de pe altă maşină dar ar fi o bună idee să faceţi asta. Dacă server-ul dvs. nu este recunoscut după nume de pe toate computerele dvs., puteţi folosi altfel adresa IP a acestuia.

Cod 4.3: Testarea mirror-ului dvs.

(Puteţi folosi numele server-ului sau adresa IP a acestuia)
# rsync 192.168.0.1::
gentoo-portage         Gentoo Portage
# rsync your_server_name::gentoo-portage
(Ar trebui să vedeţi conţinutul /usr/portage din mirror-ul dvs.)

Server-ul dvs. mirror rsync este configurat. Rulaţi emerge --sync aşa cum aţi făcut până acum pentru a vă menţine server-ul actualizat.

Notă: Luaţi aminte că mulţi administratori de mirror-uri publice consideră că sincronizarea mai mult de o dată sau două pe zi este un abuz.

Configurarea clienţilor dvs.

Acum, configuraţi celelalte sisteme ale dvs. să folosească mirror-ul local în locul unui mirror public. Modificaţi fişierul dvs. /etc/make.conf şi stabiliţi ca variabila SYNC să indice server-ul dvs.

Cod 4.4: Definirea SYNC în /etc/make.conf

(Folosiţi adresa IP a server-ului dvs.)
SYNC="rsync://192.168.0.1/gentoo-portage"
(Sau folosiţi numele server-ului dvs.)
SYNC="rsync://your_server_name/gentoo-portage"

Puteţi verifica dacă computerul dvs. a fost configurat corespunzător pentru sincronizare folosind mirror-ul local pentru prima dată:

Cod 4.5: Verificarea şi sincronizarea

(Verificaţi dacă variabila SYNC a fost configurată)
# emerge --info|grep SYNC
SYNC="rsync://your_server_name/gentoo-portage"
(Sincronizaţi de pe server-ul mirror local)
# emerge --sync

Asta e tot! Toate sistemele dvs. vor folosi de acum mirror-ul local rsync atunci când veţi rula emerge --sync.



Imprimare

Actualizat la 12 Decembrie 2005

Versiunea originală a acestui document a fost actualizată ultima dată la 14 Iunie 2010

Sumar: Acest document explică modul de configurare al unui mirror rsync oficial şi un mirror al dvs. local.

Administratorii Server-elor Mirror Gentoo
Autor

Xavier Neys
Editor

Robert Datcu
Translator

Donate to support our development efforts.

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