分类: LINUX
2010-09-03 15:15:32
为合适的主办一个镜像,你应该有至少5Mbps的全双工的带宽。
我们要求你至少支持15个用户同时链接。
为有效的服务于至少15个同时连接数,我们要求你至少有如下的最低硬件配置要求:
更新必须在每个小时的:00到:30,一天24小时都要更新。因为我们是使用一个循环的知更鸟风格的DNS来选择用户的rsync服务器,因此计划的严格执行是
请将下面的信息放到你的rsync MOTD文件中:
如果出现问题,由于在你的MOTD文件中有了如上信息,我们可以很容易的识别你的镜像。
为建立一个新的镜像,请完成以下步骤:
如果所有的步骤都很顺利,我们将建立一个官方的
还有你作为镜像的管理员会被加入到gentoo镜像邮件列表(不拥挤的)中,这样你就可以了解有关同步镜像站的事务。
我们不久将会有一个由rrdtool创建的页面,它会通过图形方式(按照洲、国家、服务器的顺序)将官方已有的镜像站链接简化(这些图形由旋状输出组 成)。我们至少会每天检查一次,无法到达的镜像站将会从RR DNS图表中去掉,只到问题处理为止。我们将会每30分钟检查同步于我们的镜像站。
A: 访问,并填写一份有关服务“Rsync”的bug报告。
A: 因为我们的资源有限,我们需要确保按照可以给我们的用户最大利益的方式来部署。因此我们限制连接到我们的主rsync和distfile镜像站只可以为公共镜像站。我们欢迎用户使用我们普通镜像系统来建立一个私人同步镜像站。虽然仍然需要他们遵守一些基本特定的
A: 是的,很重要。你不需要准确的在:00到:30来执行同步更新,但是同步更新必须在下面两个时间段中:
另外,确保你的同步更新整整相隔30分钟。这样,如果你计划在每个小时的:08进行第一次同步更新,请计划在这个小时的:38开始第二次同步更新。
A: netselect就是设计来为你做这个的。如果你还没有运行过
A: 不行。压缩会占用服务器太多的资源,因此我们强迫性的在
A: 请查看《脚本样例》那一节。
A: 还是请你参考《脚本样例》那一节。
现在,镜像我们Portage树需要250Mb左右,因此这个不会造成空间紧张;留下500Mb的空间以备逐渐增大的空间。建立一个Portage树镜像很简单,首先,确保你的镜像站已经安装了rsync。然后,按照下面的样子设置你的
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]
#this entry is for compatibility
path = /space/gentoo/rsync
comment = Gentoo Linux Portage tree
[gentoo-portage]
#modern versions of portage use this entry
path = /gentoo/rsync
comment = Gentoo Linux Portage tree mirror
exclude = distfiles
在上面,gentoo-x86-portage镜像指向gentoo-portage同样的数据。虽然最近我们将官方的镜像名字改为gentoo-portage,gentoo-x86-portage仍然需要,以备向后兼容,因此同时包括了这两条记录。
由于安全原因,一个chrooted的环境是必须的!
现在,你需要镜像Gentoo Linux的Portage树。你应该使用下列脚本来做这个:
#!/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
#!/sbin/runscript
# Copyright 1999-2002 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License, v2
or later
# $Header: /var/www/ 1.26 2004/05/03 12:30:06 neysx 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 $?
}
你的rsyncd.motd文件中应该包含你的IP地址和其他你的服务器相关信息,如提供Portage镜像的主机的信息和管理员联系方法。如果你被批准为一个官方的同步镜像,你的主机将会取得一个类似如下形式的别名:
这个命令会帮助你杀死过时的由于连接问题的同步进程。杀死这些进程是很重要的,因为他们会被看作是“最大连接数”中的合法连接。你可以通过crontab一个小时运行这个脚本一次,他会杀死掉一个小时以前的过时的同步进程。
/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}'`
在某些情况下,有些不顾及别人的用户滥用这个同步镜像站,每天至少会同步一两次。在大部分特别极端的情况下,用户计划cron工作每15分钟左右同步一
次。这样经常会导致因为连续占用一个同步进程而产生拒绝服务式攻击(DOS),并会影响到另一个用户。为防止出现这种情况,你可以使用下面
@badhosts=grep {$hash{$_}>4} keys %hash;
如果你使用这个脚本,请记住每天循环更新你的日志文件,并且根据你