Gentoo Logo

Aviso : Este documento não é válido e não é mais mantido.


Política de servidores de rsync do Gentoo Linux

Conteúdo:

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:

  1. :00 e :10
  2. :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
# Opcional: restrinja acesso a suas máquinas 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/

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

(Inicie o daemon agora)
# /etc/init.d/rsyncd start
(Adicione o daemon ao runlevel default)
# 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

(Você pode usar o nome do servidor ou seu IP)
# rsync 192.168.0.1::
gentoo-portage     Gentoo Portage
# rsync your_server_name::gentoo-portage
(Você deve ver o conteúdo de /usr/portage em seu servidor)

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

(Use endereço IP do servidor)
SYNC="rsync://192.168.0.1/gentoo-portage"
(Ou use nome do servidor)
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

(Verifique que a variável SYNC foi configurada)
# emerge --info|grep SYNC
SYNC="rsync://nome_de_seu_servidor/gentoo-portage"
(Sincronize contra seu servidor local)
# emerge --sync

Isto é tudo! Todos seus computadores irão usar seu servidor de rsync local agora quando você rodar emerge --sync.



Imprimir

Atualizado 12 de dezembro de 2005

A versão original desta tradução não é mais mantida

Resumo: Este documento explica como configurar um servidor de rsync oficial e seu servidor local.

Administradores dos servidores do Gentoo
Autor

Xavier Neys
Editor

Marcelo Góes
Tradutor

Donate to support our development efforts.

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