鱿鱼和caching的DNF / YUM下载

对不起,如果这是一个新手问题。 我先试着描述一下情况,然后鱿鱼questin会进来。

目前的Fedora / Centos安装在/etc/yum.repos.conf中的正常configuration文件中有一个metalink,看起来像这样。

metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch 

这metalink实际上使yum / dnfselect一个“随机”的服务器网站(由服务器select由世界各地根据metalink的客户端的位置地理上随机)。
这也用于下载缓慢的情况下切换到下一个更好的网站。

我注意到,由于docker造成大量的下载,为什么我正在考虑所有机器必须使用的鱿鱼代理。 但是这个yum / dnf的“随机”策略令我感到担忧。 我明白fedora / centos的意图分配这个免费的仓库的负载,所以实际上我不想破坏这个策略

可以鱿鱼智能检测,客户端只是使用“另一个fedora / centos回购url”和智能caching? metalink列表本身似乎是相当稳定的(它只是改变了问题的顺序,但列表本身似乎是相同的)。

意图:不要存储1000个相同文件的副本,只是因为它来自不同的服务器。

我怎么用鱿鱼呢?

编辑:有人有使用这个http://wiki.squid-cache.org/Features/StoreIDcachingDNF / YUM的经验吗?

回答我自己的问题。 发现squid支持使用storeid_file_rewrite脚本处理这类问题。 唯一棘手的事情是获得一个有效的URL列表,代表相同的存储库。 似乎到目前为止工作得很好。

添加到squid.conf下面

 store_id_program /usr/lib64/squid/storeid_file_rewrite /etc/squid/fedora.db store_id_access allow localnet store_id_access deny all 

为了获得fedora.db的内容(在这个时候cachingfedora 25)是从镜像列表中获取url的一些技巧

 basearch="x86_64" releasever=25 mirrorlist="https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearc curl -s "$mirrorlist" >tmp.db 

您需要将“tmp.db”结果中的“url”转换为http://wiki.squid-cache.org/Features/StoreID/DB中解释的格式。 这可能会自动化(任何志愿者?)

然后你得到这样的“fedora.db”,在上面的squid.conf中使用。

 ^http:\/\/ftp\.halifax\.rwth-aachen\.de\/fedora\/linux\/releases\/25\/Everything\/(x86_64\/[a-zA-Z0-9\-\_\.\/]+rpm)$ http://repo.mirrors.squid.internal/fedora/25/$1 ^http:\/\/mirror2\.hs-esslingen\.de\/fedora\/linux\/releases\/25\/Everything\/(x86_64\/[a-zA-Z0-9\-\_\.\/]+rpm)$ http://repo.mirrors.squid.internal/fedora/25/$1 ^http:\/\/fedora\.tu-chemnitz\.de\/pub\/linux\/fedora\/linux\/releases\/25\/Everything\/(x86_64\/[a-zA-Z0-9\-\_\.\/]+rpm)$ http://repo.mirrors.squid.internal/fedora/25/$1 ... much more 

编辑:另类,一个更危险的path,但也许也足够了,一个更全局的模式匹配是这样的:

 \/fedora\/linux\/releases\/([0-9]+)\/Everything/x86_64\/(.*)$ http://repo.mirrors.squid.internal/fedora/releases/$1/$2 \/fedora\/linux\/updates\/([0-9]+)\/x86_64\/(.*)$ http://repo.mirrors.squid.internal/fedora/updates/$1/$2 

来源

您可以考虑使用baseurl,如下所示: http ://serverascode.com/2014/03/29/squid-cache-yum.html

所以使用:

baseurl=http://mirror.fedoraproject.org/fedora/$releasever/os/$basearch/

代替:

metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch

这样可以避免与metalink有关的问题。

如果你打算使用baseurl,我怀疑另一种实现你想做的事情的方式是使用apache或者nginx(我会选nginx)作为repo镜像的反向代理。

除非你将鱿鱼用于其他目的,否则我认为我可能更喜欢将nginx设置为本地镜像,而不是将互联网镜像用作后端/上游。