Política de servidores réplica (mirrors) rsync Gentoo Linux
1.
Preliminarios de hardware
Terminología, nombres y todo eso
Esta guía está dirigida a las personas que deseen establecer un espejo
rsync propio. No es solamente para los que quieran administrar un espejo
rsync oficial, sino también para los que quieran administrar espejos
privados.
Gentoo tiene tres tipos de servidores espejo rsync: los espejos
primarios en esquema de rotación, espejos comunitarios y especjos
privados. Los espejos primarios en esquema de rotación son mantenidos
por el equipo de infraestructura Gentoo. Ellos manejan el grueso del
tráfico rsync Gentoo. Los espejos comunitarios son administrados por
voluntarios de la comunidad Gentoo. Los espejos privados son
administrados por individuos y no están abiertos al público cuyo fin
es cortar los costos por tráfico y disponibilidad para una
organización o un individuo.
En este momento, tenemos suficientes espejos comunitarios y estamos
buscando activamente espejos principales para el esquema de
rotación. Las especificaciones para estos servidores incluye:
- Como mínimo un procesador Pentium 4 de 2GHz (o equivalente)
- Un mínimo de 1GB RAM (de 1.5GB - 2GB es ideal)
- 10GB de espacio en disco duro (IDE funciona perfectamente)
Estos servidores pueden ser donados incluyendo ancho de banda y
co-locación según disposición. De otra manera, podemos proveer estos
servicios y puede enviar el equipo a nuestro local de co-locación. El
consumo de ancho de banda promedio está por el orden de ~7Mbps (o 2 TB
mensuales). Al aumentar el número de servidores en el esquema de
rotación, estas cifras deberán disminuir correspondientemente.
Si desea donar un equipo, por favor envíe correo electrónico a los
administradores de espejos
con la información pertinente.
2.
Estableciendo su propio espejo rsync local
Introducción
Muchos usuarios corren Gentoo en varias máquinas y necesitan
sincroniza todos árboles portage. Usando los espejos públicos es
sencillamente un desperdicio de ancho de banda en ambos extremos. El
sincronizar una máquina contra un espejo público y las demás contra
esa máquina ahorra recursos de los espejos Gentoo y ahorra el ancho de
banda para los demás usuarios.
Lo mismo vale para las organizaciones que deseen controlar la
sincronización de los espejos y de las estaciones de trabajo. Por
supuesto, también querrán ahorrar costos adicionales por ancho de
banda y tráfico.
Todo lo que hace falta hacer es seleccionar cuál equipo hará las veces
de espejo rsync local y configurarlo. Debe escoger un equipo que pueda
manejar la carga al CPU y sobre los discos inherentes a operar con
rsync. El espejo local también debe estar siempre disponible cuando
cualquiera de los equipos quiera sincronizar su árbol portage. Además,
debería tener un IP estático 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.
Note que estas instrucciones asume que el espejo rsync privado es una
máquina Gentoo. Si desea correrlo 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 espejo cada media hora, hágalo un
par de veces al día.
Configurando el servidor
No hay paquetes extra para instalar, ya que el software necesario ya
se encuentra en la computadora. Configurar el servidor espejo es tan
sencillo como configurar al demonio rsyncd para hacer que el
directorio /usr/portage esté disponible contra el cual
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 estan 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 el siguiente comando, y como super
usuario:
Listado de Código 2.2: Iniciando al demonio rsync |
# /etc/init.d/rsyncd start
# rc-update add rsyncd default
|
Ahora, probemos el espejo 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: Probando el espejo |
# rsync 192.168.0.1::
gentoo-portage Gentoo Portage
# rsync your_server_name::gentoo-portage
|
Ahora está configurado su espejo rsync. Ejecute emerge --sync
tal como lo ha hecho hasta ahora para mantener actualizado al
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
espejos 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 espejo rsync
local en vez de uno público. Modifique su /etc/make.conf
y haga que la variable de entorno SYNC apunte al servidor
local.
Listado de Código 2.4: Definiendo SYNC en /etc/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 espejo local por primera vez:
Listado de Código 2.5: Revisando y sincronizando |
# emerge --info|grep SYNC
SYNC="rsync://your_server_name/gentoo-portage"
# emerge --sync
|
¡Eso es todo! Ahora los equipos usarán al servidor espejo local cada
vez que ejecute emerge --sync.
3.
Estableciendo un 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 espejo 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. Estableciendo un espejo Portage es sencillo -- primero, asegúrese que el equipo tiene instalado rsync. Luego, 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 hacer el espejo del árbol Portage de Gentoo
Linux. Puede usar el guión para cumplir esa función. Una vez más,
probablmente 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"
#Descomente la siguiente línea solo si le han otorgando acceso a rsync1.us.gentoo.org
#SRC="rsync://rsync1.us.gentoo.org/gentoo-portage"
#Si está esperando acceso a nuestro espejo principal, seleccione uno de nuestros espejos 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 provee el espejo Portage y algún contacto
administrativo. Puede probar el servidor de la manera dispuesta en el
capítulo anterior Estableciendo su propio espejo
rsync local.
Luego de obtener aprobación como un espejo rsync oficial, será dado un alias 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 fresca 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 rsync1.us.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 espejo maestros rsync y distfile solamente a servidores
públicos. Los usuarios son libres de usar nuestro sistema ordinario de
servidores espejo para establecer espejos rsync privados, aunque se
les pide seguir ciertos elementos básicos de etiqueta
rsync.
Q: ¿Es importante que sincronice mi espejo 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 espejo rsync antes de convertirme en un espejo 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 espejo más cerca de mi?
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 espejo por el banner. Actualice el /etc/make.conf con esta información.
Q: ¿Puedo usar compresión al sincronizar contra rsync1.us.gentoo.org?
A: No. Porque la compresión utiliza demasiados recursos por parte del
servidor, de forma que la hemos desactivado en
rsync1.us.gentoo.org. Por favor no intente usar
compresión cuando sincronice usando este servidor.
Q: Estoy visualizando muchos procesos rsync viejos y probablemente difuntos ¿cómo puedo deshacerme de ellos?
Este comando lo ayudará a deshacerse de procesos rsync viejos 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 correrlo cada hora, para buscar y eliminar
procesos rsync con antigüedad mayor de una hora.
Listado de Código 4.1: Eliminando procesos rsync viejos |
/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 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 espejos rsync sincronizando más de 1-2 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 está registrado bajo los términos de
la licencia
Creative Commons - Reconocimiento / Compartir Igual
|