On Mon, 10 Jun 2019, Daniel Watson wrote:
>I am interested in setting up my OWN mirrorlist like
>http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock
>where it pulls a few local mirrors, but mine would be statically set
>with 3 or 4 different location URL's
There isn't much magic to the response, it is a list of sources for the
specified repository (sample below). You might look at the MirrorBrain
project, though likely it is overkill and you can just use trivial
server-side code (e.g., PHP or Node.js) for the index that inspects the
provided parameters (release, arch, etc.) and responds with the related
list of statically defined mirror URLs (perhaps randomized) or a subset
if large. The CentOS project provides a subset of their 600+ mirrors,
typically 10, and sorted in a preference and geographic order as closely
matching the origin of the request as makes sense (sample below from
west coast of the us). You might do similar even if your list is short,
when the east coast makes the request you send the list with the URLs
for east coast servers first but when the west coast requests the list
has west coast servers first. If you want the name
mirrorlist.centos.org to lead to your mirrorlist provider then you need
to arrange for the name to resolve to your servers -- I suggest at least
two but perhaps more if you have a good deal of diversity -- or perhaps
look into using Spacewalk.
$ curl
'http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock'
http://mirrors.xtom.com/centos/7.6.1810/os/x86_64/
http://mirror.scalabledns.com/centos/7.6.1810/os/x86_64/
http://sjc.edge.kernel.org/centos/7.6.1810/os/x86_64/
http://linux.mirrors.es.net/centos/7.6.1810/os/x86_64/
http://mirror.hostduplex.com/centos/7.6.1810/os/x86_64/
http://mirrors.ocf.berkeley.edu/centos/7.6.1810/os/x86_64/
http://centos.mirror.ndchost.com/7.6.1810/os/x86_64/
http://repos.lax.quadranet.com/centos/7.6.1810/os/x86_64/
http://repos-lax.psychz.net/centos/7.6.1810/os/x86_64/
http://mirrors.oit.uci.edu/centos/7.6.1810/os/x86_64/
Which is pretty clear, but just in case I'll diagram the dynamic
portions using the final result (monospace font):
arch ---------------------------------------v
repo ------------------------------------v
release ------------------------v
http://mirrors.oit.uci.edu/centos/7.6.1810/os/x86_64/
/mark