Aviso :
Este documento não é válido e não é mais mantido.
|
Política de servidores de rsync do Gentoo Linux
1.
Pedido de hardware
Doação de máquinas
O Gentoo Linux depende de dois tipos de servidores: servidores de rotação
principais e servidores comunitários. Servidores de rotação principais são
servidores de rsync dedicados e são responsáveis por lidar com a maior parte do
tráfego de rsync. Todos servidores de rotação principais rodam Gentoo Linux e
são gerenciados por membros do time de desenvolvimento do Gentoo. Servidores
comunitários são servidores que são fornecidos e gerenciados por membros das
comunidades. Estes servidores podem ou não ser dedicados a uso de rsync e podem
ou não rodar Gentoo Linux.
Neste momento, temos servidores comunitários suficientes e estamos buscando
servidores de rotação principais adicionais. Especificações para estes
servidores incluem:
- Mínimo de um processador Pentium 4 de 2GHz (ou equivalente)
- Mínimo de 1GB de RAM (1.5GB - 2GB é ideal)
- 10GB de espaço em disco (serve IDE)
Estes servidores podem ser doados com banda e espaço de colocação se você
tive-los. Caso contrário, nós podemos fornecer estes serviços e você pode
simplesmente enviar a máquina para nosso local de colocação. O consumo de banda
em média para um servidor de rotação principal é atualmente ~7Mbps (em torno de
2 TB por mês). Conforme o número de servidores de rotação principal cresce, este
número deve diminuir condizentemente.
Se você quiser doar sua máquina, mande um e-mail para Jeffrey Forman com as informações pertinentes.
2.
Perguntas rápidas (fornecidas como uma referência para administradores de servidores atuais)
Q: Quem devo contatar sobre problemas de rsync e manutenção?
A: Visite http://bugs.gentoo.org e preencha um bug para o produto "Rsync".
Q: Eu rodo um servidor de rsync privado para minha companhia. Ainda posso acessar rsync1.us.gentoo.org?
A: Porque nossos recursos são limitados, nós precisamos alocá-los de maneira a
oferecer a maior quantidade de benefício a nossos usuários. Assim, nós limitamos
conexões à nosso servidor de rsync mestre e servidores de distfile a servidores
públicos somente. Usuários podem usar nosso sistema de servidores normais para
estabelecer um servidor de rsync privado, embora espera-se que sigam certas
regras de etiqueta de rsync básicas.
Q: É importante que eu sincronize meu servidor duas vezes por hora?
A: Sim, é importante. Você não precisa fazer a sincronia exatamente em :00 e :30,
mas as sincronias devem acontecer dentro das duas seguintes janelas:
- :00 e :10
- :30 e :40
Adicionalmente, por favor certifique-se sua sincronias estão exatamente
separadas por 30 minutos. Assim, se você agendar a primeira sincronia de cada
hora para :08, por favor marque a segunda da hora para :38.
Q: Onde devo sincronizar meu servidor de rsync antes de me tornar um
servidor oficial do Gentoo?
- Sou um servidor baseado na Europa: sync to rsync.de.gentoo.org
- Sou um servidor baseado nos Estados Unidos: sync to rsync.us.gentoo.org
- Não estou nos outros grupos: sync to rsync.us.gentoo.org
Q: Como eu encontro o servidor mais próximo?
A: netselect foi desenhado para fazer isso para você. Se você ainda não
rodou emerge netselect, faça-o. Então rode:
netselect rsync.gentoo.org. Depois de em torno de um minuto o netselect
irá mostrar um endereço IP. Pegue este endereço e use-o como o único padrão para
rsync com dois pontos duplos juntos à ele. Por exemplo: rsync 1.2.3.4::.
Você deve ser capaz de saber que servidor é este da mensagem do banner. Atualize
seu /etc/make.conf de acordo.
Q: Posso usar compressão quando estiver sincronizando com rsync1.us.gentoo.org?
A: Não. Compressão usa muitos recursos do servidor, então nós forçamos sua
desativação em rsync1.us.gentoo.org. Por favor não tente
usar compressão quando sincronizar com este servidor.
Q: Estou vendo muitos servidores velhos e provavelmente inativos de rsync, como livro-me deles?
A: Favor ver a seção de exemplos de script.
Q: Existem muitos usuários que conectam-se a meu servidor de rsync muito freqüentemente,
às vezes até causando um DoS em meu servidor, existe algo que posso fazer para prevenir isso?
A: Novamente, favor ver a seção exemplos de script.
3.
Exemplos de script
Nota:
Você encontrará exemplos de arquivos de configuração e de scripts no pacote
gentoo-rsync-mirror. Simplesmente faça emerge gentoo-rsync-mirror
|
No momento, um servidor de nossa árvore do Portage precisa de cerca de 250Mb,
não usando muito espaço; ter pelo menos 500Mb livres permitem espaço para
crescimento. Configurar um servidor da árvore do Portage é simples -- primeiro,
certifique-se que o servidor tem rsync instalado. Então, ajuste seu arquivo
rsyncd.conf para se parecer com o seguinte:
Listagem de código 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]
#esta entrada é para compatibilidade
path = /gentoo/rsync
comment = Gentoo Linux Portage tree
[gentoo-portage]
#versões modernas do portage usam esta entrada
path = /gentoo/rsync
comment = Gentoo Linux Portage tree mirror
exclude = distfiles
|
Acima, o servidor gentoo-x86-portage aponta para os mesmos dados que
gentoo-portage. Embora nós tenhamos mudado recentemente o nome oficial de nosso
servidor para gentoo-portage, gentoo-x86-portage ainda é necessário para
compatibilidade reversa, portanto inclua as duas entradas.
Por razões de segurança, o uso de um ambiente de chroot é necessário!
Agora, você precisa espelhar a árvore do Portage do Gentoo Linux. Você deve usar
o seguinte script para fazê-lo:
Listagem de código 3.2: rsync-gentoo-portage.sh |
#!/bin/bash
RSYNC="/usr/bin/rsync"
OPTS="--quiet --recursive --links --perms --times --devices --delete --timeout=300"
#Uncomment the following line only if you have been granted access to rsync1.us.gentoo.org
#SRC="rsync://rsync1.us.gentoo.org/gentoo-portage"
#If you are waiting for access to our master mirror, select one of our mirrors to mirror from:
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
|
Listagem de código 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 $?
}
|
Seu rsyncd.motd deve conter seu endereço IP e outras informações
relevantes sobre seu servidor, como informações sobre o host oferecendo o
servidor do Portage e um contato administrativo. Depois de haver sido aprovado
como um servidor de rsync oficial, seu host receberá um alias com o nome na
forma: rsync[num].[codigo do pais].gentoo.org
Este comando irá ajudar a matar processos de rsync antigos que às vezes restam
de conexões com problemas. É importante matá-los porque eles contam como
conexões válidas para a opção 'max connections'. Você pode rodar o comando via
crontab toda hora, ele irá buscar e matar processos de rsync mais velhos que uma
hora.
Listagem de código 3.4: Matar processos de rsync velhos |
/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}'`
|
Em alguns casos, existem usuários sem consideração que abusam do servidor de
rsync, sincronizando mais que 1-2 vezes por dia. Em casos extremos, usuários
marcam cron jobs para sincronizar a cada 15 minutos. Isto normalmente leva a um
ataque de Denial of Service, ocupando continuamente um slot de rsync que poderia
ser usado por outro usuário. Para prevenir isto, você pode usar o
seguinte script
em perl que irá escanear seus arquivos de registro de rsync, pegar
endereços de IP que conectam-se mais que N vezes por dia e criar um
arquivo de rsyncd.conf dinâmico, incluindo os endereços de IP
problemáticos na diretiva 'hosts deny'. A seguinte linha controla o valor de
N:
Listagem de código 3.5: Definir número máximo de conexões por IP |
@badhosts=grep {$hash{$_}>4} keys %hash;
|
Se você usa este script, por favor lembre-se de rodar seus arquivos de rsync
diariamente e modificar o script para bater com o local de seu arquivo
rsyncd.conf. Este script foi testado no Gentoo Linux, mas deve
funcionar em outras arquiteturas que suportam rsync e perl.
4.
Configurando seu servidor de rsync local
Introdução
Muitos usuários rodam Gentoo em várias máquinas e precisam rodar
emerge --sync para todas elas. O uso de servidores públicos é
simplesmente um desperdício de banda nos dois lados. Sincronizar apenas uma
máquina contra um servidor público e fazer com que as outras sincronizem dela
economiza recursos dos servidores do Gentoo e banda do usuário.
Tudo que você precisa é selecionar uma de suas máquinas para ser seu servidor de
rsync local. Você deve escolher um computador que pode lidar com a carga de CPU
e disco que permite a operação de rsync. Seu servidor local também precisa estar
disponível quando um de seus computadores sincronizar sua árvore do portage.
Além do mais, deve ter um endereço de IP estático ou um nome que sempre
resolve-se a seu servidor. Configurar um servidor de DHCP e/ou DNS está fora do
escopo deste guia.
Configurando o servidor
Não existe pacote adicional para instalar, já que o software necessário já está
em seu computador. Configurar seu próprio servidor de rsync é simplesmente uma
questão configurar o daemon de rsyncd para fazer com que seu diretório
/usr/portage esteja disponível para a sincronia. Crie o seguinte
arquivo de configuração /etc/rsyncd.conf:
Listagem de código 4.1: Exemplo de /etc/rsyncd.conf |
pid file = /var/run/rsyncd.pid
max connections = 5
use chroot = yes
uid = nobody
gid = nobody
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/
|
Você não tem que usar as opções hosts allow e hosts deny. Por
padrão, todos clientes poderão conectar-se. A ordem em que você escreve as
opções não é relevante. O servidor sempre irá verificar primeiro a opção
hosts allow e permitir a conexão se o host que está conectando bater com
um dos padrões listados. O servidor então irá verificar a opção
hosts deny e recusará a conexão se um valor bater. Qualquer host que não
bater com nenhum valor receberá uma conexão. Por favor leia a página de man
(man rsyncd.conf) para mais informações.
Agora, inicie seu daemon de rsync com o seguinte comando como administrador
(root):
Listagem de código 4.2: Iniciando o daemon de rsync |
# /etc/init.d/rsyncd start
# rc-update add rsyncd default
|
Agora vamos testar seu servidor de rsync. Você não precisa tentar de outra
máquina, mas é uma boa idéia fazê-lo. Se seu servidor não for conhecido por nome
de todos seus computadores, você pode usar o endereço IP.
Listagem de código 4.3: Testando seu servidor |
# rsync 192.168.0.1::
gentoo-portage Gentoo Portage
# rsync your_server_name::gentoo-portage
|
Seu servidor de rsync está configurado agora. Continue rodando
emerge --sync como você costumava fazer para manter seu servidor
atualizado.
Nota:
Por favor note que a maior parte dos administradores de servidores públicos
consideram sincronizar mais que uma ou duas vezes por dia como abuso.
|
Configurando seus clientes
Agora, faça com que seus outros computadores usem seu servidor de rsync local ao
invés de um público. Edite seu /etc/make.conf e faça a variável
SYNC apontar para seu servidor.
Listagem de código 4.4: Defina SYNC no /etc/make.conf |
SYNC="rsync://192.168.0.1/gentoo-portage"
SYNC="rsync://nome_de_seu_servidor/gentoo-portage"
|
Você pode verificar que seu computador foi adequadamente configurand
sincronizando contra seu próprio servidor local pela primeira vez:
Listagem de código 4.5: Verificando e sincronizando |
# emerge --info|grep SYNC
SYNC="rsync://nome_de_seu_servidor/gentoo-portage"
# emerge --sync
|
Isto é tudo! Todos seus computadores irão usar seu servidor de rsync local agora
quando você rodar emerge --sync.
O conteúdo deste documento está licenciado pela licença Creative Commons -
Attribution / Share Alike.
|