VOResource 1.1: Mirrors?

Thomas Boch thomas.boch at astro.unistra.fr
Wed Jun 1 18:07:17 CEST 2016


Hi Markus,

as you can guess, that's a topic of interest for CDS (VizieR has 7 
mirrors, Simbad has one mirror and HiPS might have several mirrors).

The use cases I had in mind are the following:
- in case the main VizieR service is down, how can a sophisticated 
client find an alternative access URL to query the service?
VizieR services are mirrored in 7 places around the world, but this 
knowledge is not inside the registry. Hence, if the main site breaks, 
VizieR is totally unreachable from a VO point of view, which is too bad 
as working mirrors are there.
- find the nearest (in term of network latency) mirror for a given service.


My comments inline:


>
> (2) Design goal
>
> It'd be fairly important to me to keep "simple" service discovery
> possible.  So, I'd say the design goal for mirrors in the Registry
> would be
>
>    "Let advanced clients or other parts of the VO infrastructure
>    figure out the possible access URLs so it can select one close to
>    them.  Plain clients should just be directed to a primary site."

agreed. Whatever we do, it should not break any existing (simple) client.
>
>
> (3) Alternatives
>
> My suspicion is that the Registry is not the ideal component if your
> goal is geographical load balancing or even some sort of fallback
> scheme.  Here's some other ways I'm aware of:
>
> (a) I guess most commercial services use some sort of GeoIP, i.e., the
> DNS responses depend on the geographic location.  So, for instance
> here in Baden-Württemberg www.google.de (at the moment) resolves to
> 2a00:1450:4013:c01::5e, wheres in Saxonia it is
> 2a00:1450:4001:817::2003.  I've never set something like that up
> before, but I'd be surprised if it was hard.
>
> [...]

GeoDNS would be I think the ideal solution to this problem. It is a 
general solution to a problem that goes well beyond the IVOA registry.
But that requires some technical know-how and to have the full mastery 
of your DNS records, which might not be trivial.
>
> (b) A redirector.  I think some content delivery networks work like
> this.  The access URL then points to
> http://redirector.example.org/svcs/stars, and based on an arbitrary
> heuristics, that one would then, respond with a 301 or 303 redirect
> to a mirror.  In terms of advantages and disadvantages, that's a bit
> like (a), except it would be easier for a client to insist on using
> the main site -- it just would go directly there.  If it's smart
> enough to figure out there is a primary site, it stands to reason
> that it knows its URL, too.
I don't really like this option :
- the redirector becomes a single point of failure
- each query has to go through it, slowing down the whole thing
- very basic clients do not handle redirections quite well

>
> (c) Do nothing.  Perhaps with faster networks and more fiber in the
> oceans, there's not much point any more in putting a large effort
> into mirrors and their maintenance, which always is a bit of a pain.

That's what I was thinking until trying to access our services at 
Strasbourg from countries with sub-optimal network or with high latency 
connection. In those cases, being able to target a nearby mirror does 
make a difference.
Now, I also agree that managing distributed mirrors is a pain but which 
is still worth it.
>
>
>
> (4) VOResource solutions
>
> Here's what I've worked out so far how mirrors could work within the
> registry infrastructure.
>
> (a) accessURL attributes
>
> One could use an attribute to say what's the primary site and what's
> a mirror.  So, perhaps:
>
>    <capability standardID="ivo://example/whatever">
>      <interface std="True">
>        <accessURL use="base" priority="primary"
>          >http://example.eu/svc/stars?</accessURL>
>        <accessURL use="base" priority="fallback"
>          >http://example.za/svc/stars?</accessURL>
>        <accessURL use="base" priority="mirror"
>          >http://example.cn/svc/stars?</accessURL>
>      </interface>
>      <param ...
>    </capability>
>
> [...]
>
> (b) have a separate element, perhaps like this:
>
>    <capability standardID="ivo://example/whatever">
>      <interface std="True">
>        <accessURL use="base">http://example.eu/svc/stars?</accessURL>
>        <mirrorURL>http://example.za/svc/stars?</mirrorURL>
>        <mirrorURL>http://example.cn/svc/stars?</mirrorURL>
>      </interface>
>      <param ...
>    </capability>
>
> I guess something like that would be my winner if we decided to go
> ahead with VOResource mirrors.


This option has my preference too, as it introduces a new element and 
minimizes the risk of a basic client using by mistake the mirror 
accessURL (though you might argue it also introduces a schema change).
>
> Is there any metadata that should go ahead with mirrorURL if we went
> this way?  Perhaps something to help make a choice between the
> mirrors without having to ping them all?

Well, pinging all the mirror alternatives with a basic query (SR=0 for 
cone search) might not be that bad.
Aladin Desktop is doing this kind of things at startup when testing the 
nearest HiPS mirror.

That's all for now.

Thomas
>
>
> (5) Another issue with mirrors: Availability


> If we decide mirrors need to be described interoperably (i.e., make
> the VO mirror-aware), there's a second problem: VOSI availability,
> i.e., the endpoint that says whether a given service is up and if
> not, when one should try again.
>
> Currently, it's modelled as a separated capability, i.e., the
> capabilities of a service with mirrors would look like this:
>
>    <capability standardID="ivo://example/whatever">
>      <interface std="True">
>        <accessURL use="base">http://example.eu/svc/stars?</accessURL>
>        <mirrorURL>http://example.za/svc/stars?</mirrorURL>
>        <mirrorURL>http://example.cn/svc/stars?</mirrorURL>
>      </interface>
>      <param ...
>    </capability>
>
>    <capability standardID="ivo://ivoa.net/std/VOSI#availability">
>      <interface xsi:type="vs:ParamHTTP">
>        <accessURL use="full">http://av.example.eu/av/stars</accessURL>
>      </interface>
>    </capability>
>
> The availability schema doesn't let you specify the status of mirrors
> (or, for that matter, alternative interfaces) yet; including
> additional mirrorURLs probably isn't terribly helpful because it'd be
> hard to match query URL and availability URL.
>
> If we were serious about mirrors, we'd hence need to fix
> availability, too.  This would be a good moment for that because VOSI
> is being reviewed as we speak.   But someone would have to volunteer
> for actually doing it.
>
> Thanks for making it down here,
>
>           Markus


-- 
Thomas Boch
Ingénieur de Recherche

   CDS/Observatoire Astronomique   Phone  : 33 (0)3 68 85 24 42
   11, rue de l'Universite         Fax    : 33 (0)3 68 85 24 17
   F-67000 Strasbourg              Email  : thomas.boch at astro.unistra.fr
   France                          http://cdsweb.u-strasbg.fr/~boch


More information about the registry mailing list