Directriz de servidores réplica (mirrors) rsync Gentoo Linux
1.
Preliminares de hardware
Terminología, nombres y todo eso
Esta guía está dirigida a las personas que deseen establecer un
servidor réplica rsync propio. No es solamente para los que
quieran administrar un servidor réplica rsync oficial, sino también
para los que quieran administrar servidores réplica privados.
Gentoo tiene tres tipos de servidores réplica rsync: las réplicas
primarias en esquema de rotación, réplicas comunitarias y réplicas
privados. Las réplicas primarias en esquema de rotación son mantenidas
por el equipo de infraestructura Gentoo. Este equipo gestiona el
grueso del tráfico rsync Gentoo. Las réplicas comunitarias son
administradas por voluntarios de la comunidad Gentoo. Las réplicas
privadas son administradas por individuos y normalmente no están
abiertas al público cuyo fin es recortar en costes por tráfico y
disponibilidad para una organización o un individuo.
En este momento, tenemos suficientes réplicas comunitarias y estamos
buscando activamente réplicas principales para el esquema de
rotación. Las especificaciones de hardware para estos servidores
incluye:
- Como mínimo un procesador Pentium 4 de 2GHz (64 bits con al
menos dos núcleos preferiblemente)
- Un mínimo de 2GB RAM (de 3GB - 4GB es ideal)
- 15GB de espacio en disco duro (IDE/SATA funciona
perfectamente)
La posesión física del hardware es suya y debe mantenerlo
en línea en su propio espacio de colocación. El consumo promedio de
ancho de banda para cada servidor réplica en el esquema de rotación es
actualmente ~10Mbit/sec (alrededor de 2.6 TiB mensuales). A medida que
aumente el número de servidores en el esquema de rotación, estas
cifras deberán disminuir por lógica.
Si desea donar un equipo, por favor envíe un correo electrónico a los
administradores de servidores réplica con la información
pertinente.
2.
Establecer su propio servidor réplica rsync local
Introducción
Muchos usuarios corren Gentoo en varias máquinas y necesitan
sincronizar todos árboles portage. Usar los servidores
réplica públicos es sencillamente un desperdicio de ancho de banda
en ambos extremos. Sincronizar una máquina con un servidor réplica
público y las demás contra esa máquina ahorra recursos de los
servidores réplica de Gentoo y ahorra ancho de banda para los
demás usuarios.
Lo mismo se aplica a las organizaciones que deseen controlar la
sincronización de los servidores réplica y de las estaciones de
trabajo. Por supuesto, también querrán ahorrar costes adicionales
por ancho de banda y tráfico.
Todo lo que hace falta hacer es seleccionar el equipo que actuará
como servidor réplica rsync local y configurarlo. Debe escoger
un equipo en el que pueda gestionar la carga de la CPU y de los
discos que van a operar con rsync. El servidor réplica local también
debe estar siempre disponible cuando cualquiera de los equipos
quiera sincronizar su árbol portage. Además, debería tener una IP
estática o un nombre que siempre resuelva a este equipo. La
configuración de servidores DHCP o DNS está más allá de esta guía.
Observe que estas instrucciones asumen que el servidor réplica
rsync privado es una máquina Gentoo. Si desea ejecutarlo sobre una
máquina con otra distribución, la guía para establecer un servidor
comunitario podría ser de más ayuda. No sincronice el servidor
réplica cada media hora, hágalo un par de veces al día.
Configurar el servidor
No hay paquetes extra que se deban instalar, ya que el software
necesario ya se encuentra en la computadora. Configurar el servidor
réplica es tan sencillo como configurar el demonio rsyncd para
hacer que el directorio /usr/portage esté disponible
para sincronizar. Cree el siguiente archivo de configuración
/etc/rsyncd.conf:
Listado de Código 2.1: Archivo ejemplo /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/
|
No es necesario usar las opciones hosts allow y hosts
deny. Por defecto, se le permitirá a todos los clientes
conectarse. El orden en que están escritas estas opciones es
irrelevante. El servidor siempre revisará la opción hosts allow
option primero y permitirá la conexión si el anfitrión se encuentra
especificado. El servidor entonces revisará la opción hosts
deny y rehusará la conexión si iguala algún patrón. A cualquier
anfitrión que no iguale patrón alguno, le será permitido la
conexión. Por favor, lea la página man (man rsyncd.conf) para
mayor información.
Ahora, inicie el demonio rsync con la siguiente orden, y como super
usuario:
Listado de Código 2.2: Iniciar el demonio rsync |
# /etc/init.d/rsyncd start
# rc-update add rsyncd default
|
Ahora, probemos el servidor réplica rsync. No necesita probarlos desde
otro equipo, aunque es una buena idea hacerlo. Si el servidor no es
conocido por nombre desde cualquiera de sus equipos, use su dirección
IP.
Listado de Código 2.3: Probar el servidor réplica |
# rsync 192.168.0.1::
gentoo-portage Gentoo Portage
# rsync nombre_de_su_servidor::gentoo-portage
|
Ahora está configurado su eservidor réplica rsync. Ejecute
emerge --sync tal como lo ha hecho hasta ahora para mantener
actualizado el servidor. Si usa cron o herramientas similares, recuerde
hacerlo con una frecuencia de una o dos veces diarias.
Nota:
Por favor note que la mayoría de los administradores de servidores
réplica públicos considera que sincronizar más de una o dos veces
diarias es un abuso. Algunos de ellos, tal vez la mayoría podrán
prohibir su IP de sus servidores si se dedica a abusar sus equipos.
|
Configuración de los clientes
Ahora debe configurar a los demás equipos para usar el servidor
réplica rsync local en vez de uno público. Modifique su
/etc/portage/make.conf y haga que la variable de
entorno SYNC apunte al servidor local.
Listado de Código 2.4: Definir SYNC en /etc/portage/make.conf |
SYNC="rsync://192.168.0.1/gentoo-portage"
SYNC="rsync://nombre_del_servidor/gentoo-portage"
|
Puede revisar si el equipo ha sido correctamente configurado,
sincronizando contra el servidor réplica local por primera vez:
Listado de Código 2.5: Revisar y sincronizar |
# emerge --info|grep SYNC
SYNC="rsync://your_server_name/gentoo-portage"
# emerge --sync
|
¡Eso es todo! Ahora los equipos usarán el servidor réplica local
cada vez que ejecute emerge --sync.
3.
Establecer servidor rsync comunitario
Introducción
Nota:
Puede encontrar archivos ejemplo de configuración y guiones en el
paquete gentoo-rsync-mirror. Sencillamente haga emerge
gentoo-rsync-mirror.
|
Actualmente, un servidor réplica del árbol Portage requiere unos
600Mb, de forma que no ocupa demasiado espacio; el disponer de 1Gb más
libre debe permitir espacio para crecimiento. Establecer un servidor
réplica de Portage es sencillo -- en primer lugar, asegúrese de que
el equipo tiene instalado rsync. A continuación, configure el
archivo rsyncd.conf de manera semejante a:
Listado 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-portage]
#las versiones modernas de portage usan esta configuración
path = /gentoo/rsync
comment = Gentoo Linux Portage tree mirror
exclude = distfiles
|
Por supuesto, puede escoger su propia ubicación para la mayoría de los
archivos. Lo que es importante son los nombres de las secciones
([gentoo-portage]). Estas es la ubicación contra la cual
intentarán sincronizar los clientes.
Por razones de seguridad, ¡se requiere el uso en un entorno enjaulado!
Esto tiene implicaciones respecto a los rótulos de tiempo hechos por
el gestor de registro -- vea el PUF (FAQ) más adelante.
Ahora, necesita construir la réplica del árbol Portage de Gentoo
Linux. Puede usar el guión para cumplir esa función. Una vez más,
probablemente quiera personalizar algunas de las ubicaciones de
archivos -- en particular, deberían ser iguales a los de su
rsyncd.conf.
Listado de Código 3.2: rsync-gentoo-portage.sh |
#!/bin/bash
RSYNC="/usr/bin/rsync"
OPTS="--quiet --recursive --links --perms --times -D --delete --timeout=300"
#Elimine el comentario de la siguiente línea solo si le han otorgando acceso a masterportage.gentoo.org
#SRC="rsync://masterportage.gentoo.org/gentoo-portage"
#Si está esperando acceso a nuestro servidor réplica principal, seleccione uno de nuestros servidores desde:
SRC="rsync://rsync.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
|
Su rsyncd.motd debería contener la dirección IP y otros
datos relevantes acerca del servidor, como información acerca del
anfitrión que ofrece el servidor réplica de Portage y algún contacto
administrativo. Puede probar el servidor de la manera dispuesta en el
capítulo anterior Establecer su propio servidor
réplica rsync local.
Después de obtener aprobación como un servidor réplica rsync oficial,
se le asignará un nombre con el formato:
rsync[num].[código país].gentoo.org.
4.
Un PUF (FAQ) corto
Q: ¿A quién debo contactar al respecto de asuntos rsync y mantenimiento?
A: Visite Gentoo Bugzilla
y archive un reporte usando el producto "Mirrors" y el componente
"Server Problem".
Q: ¿Cómo puede revisar qué tan frescos son los datos en un servidor rsync oficial?
Al respecto, el equipo de infraestructura Gentoo monitorea todos los
servidores comunitarios rsync servers. Los resultados están a la vista
en la
página web correspondiente.
Q: Administro un servidor rsync privado de mi empresa, ¿todavía puede tener acceso a masterportage.gentoo.org?
A: Como nuestros recursos son limitados, necesitamos asegurarnos de
compartirlos de una manera tal que provean el beneficio máximo para
nuestros usuarios, de manera que limitamos las conexiones a nuestros
servidores réplica maestros rsync y distfile solamente a servidores
públicos. Los usuarios son libres de usar nuestro sistema ordinario de
servidores réplica para establecer servidores réplica rsync privados,
aunque se les pide seguir ciertos elementos básicos de etiqueta
rsync.
Q: ¿Es importante que sincronice mi servidor rsync comunitario dos veces por hora?
A: Si es importante. No hace falta sincronizarlos exactamente a las
:00 y :30, pero las sincronizaciones deben tomar lugar en las
siguientes ventanas:
- :00 a :10
- :30 a :40
Además, por favor asegúrese que las sincronizaciones sean exactamente
30 minutos aparte. De manera que si la primera sincronización está
programada para :08, por favor programe la segunda sincronización a
las :38.
Q: ¿Dónde debo sincronizar mi servidor réplica rsync antes de convertirlo en una réplica oficial Gentoo?
- Para los servidores basados en Europa: rsync.de.gentoo.org
- Para los servidores basados en los Estados Unidos:
rsync.us.gentoo.org
- Para los demás servidores: rsync.us.gentoo.org
Q: ¿Cómo encuentro el servidor réplica más cercano?
A: La aplicación netselect fue diseñada para hacer esto.
Si no lo ha hecho ya, haga emerge netselect. Entonces
ejecute: netselect rsync.gentoo.org. Después de un minuto,
netselect imprimirá una dirección IP. Use esta dirección como el
único parámetro a rsync, escribiendo dos puntos dos veces al
final, así: rsync 1.2.3.4::. Podrá averiguar cuál es el
servidor réplica por la cabecera. Actualice el fichero
/etc/portage/make.conf con esta información.
Q: ¿Puedo usar compresión al sincronizar contra masterportage.gentoo.org?
A: No. Porque la compresión utiliza demasiados recursos por parte del
servidor, de forma que la hemos desactivado en
masterportage.gentoo.org. Por favor no intente usar
compresión cuando sincronice usando este servidor.
Q: Estoy visualizando muchos procesos rsync antiguos y probablemente difuntos ¿cómo puedo deshacerme de ellos?
Esta orden le ayudará a deshacerse de procesos rsync antiguos que a
veces permanecen por problemas de conexión. Es importante borrarlos
por cuentan como conexiones válidas para la opción 'max
connections'. Puede ejecutarlo cada hora, para buscar y eliminar
procesos rsync con antigüedad mayor de una hora.
Listado de Código 4.1: Eliminar procesos rsync antiguos |
/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}'`
|
Q: Hay muchos usuarios que se conectan a mi servidor rsync con mucha frecuencia, a veces hasta causando un DoS al equipo, ¿qué puedo hacer para prevenir esto?
En algunos casos existen unos pocos usuarios desconsiderados que
abusan el sistema de servidores réplica rsync sincronizando más de
una o dos veces al día. En los casos más extremos, algunos usuarios
programan trabajos cron para sincronizar más o menos cada 15 minutos.
Esto muchas veces llega a constituir un ataque de negación de servicio,
ya que ocupa una posición que podría haber servido a otro usuario.
Para intentar prevenir esto podría usar este guión
perl que hará un barrido por los archivos de registro mantenidos
por rsync, separando las direcciones IP que se han conectado más de
N durante ese día y dinámicamente crean el archivo
rsyncd.conf, incluyendo estas direcciones IP en la
directiva 'hosts deny'. La siguiente línea controla a qué equivale
N, (en este caso, 4):
Listado de Código 4.2: Defina el número máximo de conexiones por número IP |
@badhosts=grep {$hash{$_}>4} keys %hash;
|
Si usa este guión, por favor recuerde rotar los archivos de registro
rsync diariamente y modificar al guión para la ubicación de su archivo
rsyncd.conf. Este guión está probado en Gentoo Linux,
pero deberá funcionar igualmente en cualquier otra plataforma que
soporte rsync y perl.
El contenido de este documento, a no ser que se especifique
expresamente, está registrado bajo los términos de la licencia
CC-BY-SA-2.5. Se aplican las
Pautas de
Utilización del logotipo y nombre de Gentoo.
|