Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1856399
  • 博文数量: 473
  • 博客积分: 13997
  • 博客等级: 上将
  • 技术积分: 5953
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-22 11:52
文章分类

全部博文(473)

文章存档

2014年(8)

2013年(38)

2012年(95)

2011年(181)

2010年(151)

分类: LINUX

2010-09-03 15:15:32

Gentoo Mirror Administrators Hans Joanphan 这份文档介绍了怎样建立一个官方的rsync镜像站点。 1.3 2004年2月23日

为合适的主办一个镜像,你应该有至少5Mbps的全双工的带宽。

我们要求你至少支持15个用户同时链接。

为有效的服务于至少15个同时连接数,我们要求你至少有如下的最低硬件配置要求:

  • PIII 500 Processor
  • 256MB RAM

更新必须在每个小时的:00到:30,一天24小时都要更新。因为我们是使用一个循环的知更鸟风格的DNS来选择用户的rsync服务器,因此计划的严格执行是非常重要的。

请将下面的信息放到你的rsync MOTD文件中:

  • server name
  • server IP address
  • server specs (CPU and RAM)
  • bandwidth available to the server
  • user connection limit, if any
  • server location (city and country)
  • a contact name and email address

如果出现问题,由于在你的MOTD文件中有了如上信息,我们可以很容易的识别你的镜像。

为建立一个新的镜像,请完成以下步骤:

  • 建立你的镜像,同步于一个已有的公共Gentoo Linux同步镜像站,任何一个都行。请确保按照上面提的经常更新的计划来同步镜像。
  • bugs.gentoo.org填写一份bug报告,填上服 务器名、IP地址、联系方法和你愿意做一个新的同步镜像站。我们会检查你得服务器,确认可以正确的同步镜像。你的服务器一小时同步镜像两次,这很重要,一 次从:00到:10,另一次从:30到:40。你可以在这两个时间段中的任何时候,10分钟计划一次你的同步镜像。
  • 一旦我们确认镜像正确的同步镜像,我们将会将这个服务器的IP地址到rsync1.us.gentoo.org访问列表。
  • 更新你的同步定时工作,使它指向于rsync1.us.gentoo.org。我们将在接下来的48~72小时里监视你的服务器,确认可以正确的同步。

如果所有的步骤都很顺利,我们将建立一个官方的rsync[num].[countrycode].gentoo.orgDNS 记录,并将你添加到给rsync.[continentcode].gentoo.org and rsync.[countrycode].gentoo.org的DNS round-robin中。我们一旦将你添加到我们的DNS中,你应该马上开始看到同步镜像的传送。

还有你作为镜像的管理员会被加入到gentoo镜像邮件列表(不拥挤的)中,这样你就可以了解有关同步镜像站的事务。

谢谢你帮助我们的Gentoo Linux用户和开发者!对于任何镜像管理事务或者问题,请访问,并对服务“Rsync”填写一份bug报告。

我们不久将会有一个由rrdtool创建的页面,它会通过图形方式(按照洲、国家、服务器的顺序)将官方已有的镜像站链接简化(这些图形由旋状输出组 成)。我们至少会每天检查一次,无法到达的镜像站将会从RR DNS图表中去掉,只到问题处理为止。我们将会每30分钟检查同步于我们的镜像站。

如果一个镜像站间或性的出现问题,并且和管理员联系上后问题得不到改善,我们将会将这个镜像站从RR图表中永久性去掉。

A: 访问,并填写一份有关服务“Rsync”的bug报告。

A: 因为我们的资源有限,我们需要确保按照可以给我们的用户最大利益的方式来部署。因此我们限制连接到我们的主rsync和distfile镜像站只可以为公共镜像站。我们欢迎用户使用我们普通镜像系统来建立一个私人同步镜像站。虽然仍然需要他们遵守一些基本特定的同步规矩和准则

A: 是的,很重要。你不需要准确的在:00到:30来执行同步更新,但是同步更新必须在下面两个时间段中:

  1. :00 and :10
  2. :30 and :40

另外,确保你的同步更新整整相隔30分钟。这样,如果你计划在每个小时的:08进行第一次同步更新,请计划在这个小时的:38开始第二次同步更新。

A: netselect就是设计来为你做这个的。如果你还没有运行过emerge netselect,就运行安装。然后运行netselect rsync.gentoo.org。一分钟左右以后,netselect会输出一个IP地址。拿到这个地址,并带上两个冒号把他作为rsync唯一的参数,如:rsync 1.2.3.4::。你应该可以从主页信息中找到镜像站,并根据此更新你的/etc/make.conf

A: 不行。压缩会占用服务器太多的资源,因此我们强迫性的在rsync1.us.gentoo.org阻止压缩。请不要在同步于这个服务器时试图使用压缩。

A: 请查看《脚本样例》那一节。

A: 还是请你参考《脚本样例》那一节。

现在,镜像我们Portage树需要250Mb左右,因此这个不会造成空间紧张;留下500Mb的空间以备逐渐增大的空间。建立一个Portage树镜像很简单,首先,确保你的镜像站已经安装了rsync。然后,按照下面的样子设置你的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]
#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镜像的主机的信息和管理员联系方法。如果你被批准为一个官方的同步镜像,你的主机将会取得一个类似如下形式的别名:rsync[num].[country code].gentoo.org

这个命令会帮助你杀死过时的由于连接问题的同步进程。杀死这些进程是很重要的,因为他们会被看作是“最大连接数”中的合法连接。你可以通过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),并会影响到另一个用户。为防止出现这种情况,你可以使用下面perl脚本t,它会扫描你的同步日志文件,找出每天连接次数已经超过N次的IP地址,并动态的创建一个rsyncd.conf文件,并将冒犯的IP地址添加到‘hosts deny’指令中。下面一行控制N等于多少:

@badhosts=grep {$hash{$_}>4} keys %hash;

如果你使用这个脚本,请记住每天循环更新你的日志文件,并且根据你rsyncd.con文件的位置修改这个脚本。这个脚本在Gentoo Linux测试过,但是也应该适合在其他同时支持rysnc和perl的架构。

阅读(1013) | 评论(0) | 转发(0) |
0

上一篇:Ubuntu 镜像源

下一篇:wget参数用法详解

给主人留下些什么吧!~~