這篇文章主要介紹了以中山大學(xué)鏡像站為例談如何利用開源來(lái)搭建鏡像網(wǎng)站的方案,文中提的一些大學(xué)網(wǎng)站在GitHub上的開源同步工具都很實(shí)用,需要的朋友可以參考下
基本流程
服務(wù)器&帶寬&存儲(chǔ)
同步源選擇 ,架構(gòu)選擇
提供的服務(wù):ftp | http | rsync 3.官網(wǎng)獲取同步方法或工具,源列表(選擇上游源)
配置同步工具
定時(shí)同步 (crontable)
備份工作,監(jiān)控與報(bào)警,日常維護(hù),優(yōu)化
文檔編寫(Wiki),Submit MirrorsList
其他
0/8.服務(wù)器&帶寬&存儲(chǔ)
服務(wù)器: Linux ,maybe windows ?..orz
帶寬: 越大越好(上行帶寬太小無(wú)法提供更好的服務(wù),下行太小無(wú)法及時(shí)同步完整(按網(wǎng)絡(luò)情況分時(shí)段同步,同時(shí)盡量避開負(fù)載高峰))。 如果要對(duì)外服務(wù),需要一個(gè)公網(wǎng)IP,有域名更好。
儲(chǔ)存: 越大越好(如果是對(duì)外提供大量服務(wù),家用的硬盤估計(jì)撐不了一年)??煽紤]用SSD作為cache。
1/8.同步源選擇 ,架構(gòu)選擇
同步源選擇:
按需求選擇需要的發(fā)行版,穩(wěn)定性第一,多樣性第二,滿足需求即可。同時(shí)也要注意”性價(jià)比“(自用鏡像無(wú)需考慮),例如 OpenBSD之類的性價(jià)比可能很低 ,消耗大量的同步流量和磁盤空間可能性價(jià)比不是很大,同時(shí)例如大學(xué)中的鏡像站需要網(wǎng)絡(luò)中心的支持,所以需要考慮到校內(nèi)用戶的支持和熱度(學(xué)生支持度不 夠,nc的支持可能也會(huì)下降),同時(shí)校內(nèi)有一定熱度才好傳承,所以如果添加類似Ubuntu的發(fā)行版”性價(jià)比“會(huì)很高。 慎重選擇上線的發(fā)行版(自身資源估計(jì)),上線盡量保持穩(wěn)定。切勿隨意更換服務(wù)。注意預(yù)留足夠空間!
感謝中大IGI師兄以上給出的建議。推薦:《搭建linux mirror鏡像》
架構(gòu)選擇:
一個(gè)發(fā)行版可能保護(hù)多種架構(gòu),(例如debian :alpha、amd64、arm、armel、hppa、hurd-i386、i386、ia64、m68k、mipsel、mips、powerpc、s390、sh and sparc,source,debian現(xiàn)有oldstable,stable ,testing,unstable,還有experimental版本),所以需要按需求選擇需要同步的架構(gòu)(因?yàn)榇疟P空間不是無(wú)限的),一般來(lái)說(shuō)就選擇i386,amd64,外加source。
2/8.提供的服務(wù):ftp | http | rsync
FTP:vsftpd ?還有很多,不太了解,囧。
HTTP: Webserver建議選擇nginx或lighttpd,因?yàn)殓R像包含大量的靜態(tài)文件,這兩者據(jù)說(shuō)比Apache更有優(yōu)勢(shì), 記得cn99掛掉后,將Apache換到nginx了? 建議 :nginx, lighttpd
Rsync:為下游提供,例如清華,中科大有開放某些發(fā)行版,國(guó)內(nèi)提供rsync的鏡像站不多,主要是提供rsync會(huì)有很高的IO負(fù)載,一般承受不起。如果有意愿提供rsync,google即可。
3/8.官網(wǎng)獲取同步方法或工具,源列表(選擇上游源)
同步方法或工具: 一般就是Rsync,然后從上游拉東西,可以自己寫腳本,也可以用官方提供的工具,例如debian的ftpsync等。 切勿使用wget 等工具!不能保證文件link等屬性,也無(wú)法做到增量同步,浪費(fèi)資源!
清華的同步腳本:http://git.tuna.tsinghua.edu.cn/
北交Ideal的Mirror工具:https://github.com/ideal/mirror
(感謝ideal曾經(jīng)提供的幫助,有意愿搭建鏡像站的同學(xué)遇到 問(wèn)題可在Twitter上找到他)Rubygems,PyPI,npm也是同樣找尋或自己編寫同步腳本后工具,或做反向代理。除了主動(dòng)拉的,還有是官方主鏡像推送到官方其他鏡像,例如ArchlinuxARM。
ubuntu還有個(gè)同步工具 apt-mirror
上游源:
上發(fā)行版官網(wǎng)獲取MirrorsList,然后找尋提供rsync服務(wù)的鏡像,選擇上游源,一般選擇國(guó)內(nèi),日本,新加坡,臺(tái)灣等亞太地區(qū)的源。 注意:官方rsync可能只對(duì)指定IP開放(負(fù)載問(wèn)題)
4/8.配置同步工具
自己寫同步腳本 :
失敗郵件報(bào)警,同步鎖控制,兩步同步,其他rsync參數(shù)。
Rsync教程:讀 igi的同步腳本: http://www.igigo.net/archives/65
使用同步工具:
清華的同步腳本:http://git.tuna.tsinghua.edu.cn/
北交Ideal的Mirror工具:https://github.com/ideal/mirror/
PyPI,Rubygems,npm:
讀Rubygems和PyPI同步簡(jiǎn)單教程 : http://fangpeishi.com/post/da-jian-pypiji-rubygemsjing-xiang
讀npm同步教程 :http://maskray.me/blog/2012-11-21-tuna-npm-mirror
注意: 添加同步鎖,debian系需要兩步同步(先同步pool目錄)。
5/8.定時(shí)同步 (crontable)
定時(shí)同步: 把寫好的cron腳本丟進(jìn) /etc/cron.d/ 《定時(shí)自動(dòng)任務(wù)crontab使用教程》 注意:
/etc/cron.d the file names must conform to the filename requirements of run-parts: they must be entirely made up of let‐ters, digits and can only contain the special signs underscores (‘‘) and hyphens (‘-’). Any file that does not conform to theserequirements will not be executed by run-parts. For example, any file containing dots will be ignored. This is done to prevent cron from running any of the files that are left by the Debian package management system when han‐ dling files in /etc/cron.d/ as configuration files (i.e. files ending in .dpkg-dist, .dpkg-orig, and .dpkg-new). (特殊字符只可以使用’‘和’-’,另外以’.’開頭的文件會(huì)被忽略)
crontab腳本中注意path的配置,例如使用rubygems的同步工具碰到rake abort等問(wèn)題。
6/8.備份工作,監(jiān)控與報(bào)警,日常維護(hù),優(yōu)化
備份:
當(dāng)配置文件發(fā)生變化時(shí)候利用腳本將其備份到Dropbox. 監(jiān)控與報(bào)警:
用awk等工具對(duì)同步日記進(jìn)行分析。
配置郵件服務(wù)程序,例如exim4,在之前的腳本中添加出現(xiàn)異常時(shí)候發(fā)郵件。(移動(dòng)139郵箱有短信通知功能)。
部署監(jiān)控程序,例如MUNIN,對(duì)磁盤情況,網(wǎng)絡(luò)情況,負(fù)載情況等進(jìn)行監(jiān)控,以圖表的形式直觀呈現(xiàn)出來(lái)。
日常維護(hù):
當(dāng)出現(xiàn)同步異常失敗時(shí)(例如:上游down掉了,和上游的網(wǎng)絡(luò)異常了,磁盤異常等等),需要更換上游或者其他方法。
優(yōu)化: 主要是針對(duì)鏡像站大量的靜態(tài)文件進(jìn)行的優(yōu)化.以及觀察監(jiān)控對(duì)流量和負(fù)載進(jìn)行合理分配。
7/8.文檔編寫(Wiki),Submit MirrorsList
文檔編寫: 一個(gè)是為了將經(jīng)驗(yàn)積累,方便傳承,同時(shí)也是為了方便其他搭建鏡像站的朋友。例如建個(gè)wiki。
Submit your mirror to mirrorslist:
當(dāng)鏡像站足夠穩(wěn)定時(shí),可考慮提交到官方mirrorslist,讓更多的朋友知道,有小小的成就感也容易鼓勵(lì)自身和傳承。內(nèi)網(wǎng)的鏡像可在內(nèi)部交流平臺(tái)公開分享。
若是校園鏡像站需要注意宣傳,以得到更多師生的支持,同時(shí)方便傳承。
8/8.其他
如果是在大學(xué)內(nèi)要搭建一個(gè)鏡像站,需要獲取網(wǎng)絡(luò)中心的支持,可能需要:
一顆“耐”心;
注意傳承問(wèn)題 (校內(nèi)熱度將影響nc對(duì)鏡像站的支持程度,做好文檔,發(fā)展好師弟師妹,如果有個(gè)Linux協(xié)會(huì)啥的平臺(tái)組織最好不過(guò)了);
找靠譜老師支持(鏡像快死掉了的時(shí)候,老師可能能救活它),熟悉nc里的老師或領(lǐng)導(dǎo)(解決問(wèn)題更方便),記得鏡像站要幫助宣傳nc,記得感謝提供幫助的同學(xué),老師和組織;
穩(wěn)定為先。