Gentoo Logo

Directriz de servidores réplica (mirrors) rsync Gentoo Linux

Contenido:

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
# Opcional: restringir el acceso a los equipos 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/

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

(Inicie el demonio ahora)
# /etc/init.d/rsyncd start
(Agregue el demonio al nivel de ejecución por defecto)
# 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

(Puede usar el nombre del servidor o su IP)
# rsync 192.168.0.1::
gentoo-portage     Gentoo Portage
# rsync nombre_de_su_servidor::gentoo-portage
(Debería ver el contenido de /usr/portage en su servidor réplica)

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

(Use la dirección IP de su propio servidor)
SYNC="rsync://192.168.0.1/gentoo-portage"
(O use el nombre del servidor)
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

(Revise la variable SYNC, debe estar configurada)
# emerge --info|grep SYNC
SYNC="rsync://your_server_name/gentoo-portage"
(Sincronice contra el servidor local)
# 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:

  1. :00 a :10
  2. :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.



Imprimir

Página actualizada 23 de febrero, 2013

Sumario: Este documento explica cómo configurar una réplica rsync oficial y una réplica local propia.

Administradores de réplicas Gentoo
Autor

Tobias Klausmann
Autor

Xavier Neys
Editor

Fernando M. Bueno
Traductor

chiguire@gentoo-es.org
Traductor

Manuel Peral González
Traductor

José María Alonso
Traductor

Donate to support our development efforts.

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