Load balancing operates at a different layer than APIs, with various
implementations available, such as etcd and Zookeeper. I’d prefer to avoid
introducing additional complexity at the web service API level.

Yufei


On Mon, Dec 9, 2024 at 8:35 AM Jean-Baptiste Onofré <j...@nanthrax.net> wrote:

> Hi Vladimir,
>
> As you said, today, it's possible to use a LB in front of multiple
> instances (using nginx, ELB, ...).
> I think it's pretty easy to setup and at "infrastructure" level.
>
> As it's possible to plug the HTTP5 client in Iceberg REST client, I
> think it's possible to inject PoolingHttpClientConnectionManager with
> multiple routes/host.
>
> I'm still prefer to define this at "infra" level (to decouple
> endpoints definition from the pure client).
>
> Regards
> JB
>
>
> On Mon, Dec 9, 2024 at 5:10 PM Vladimir Ozerov <voze...@querifylabs.com>
> wrote:
> >
> > Hi,
> >
> > Catalog is a critical part of Iceberg infrastructure and may require
> highly available setup. In similar services (e.g., HMS, etc) this is often
> done as follows:
> >
> > Start several service instances
> > Decide which one is coordinator via etcd, Zookeper, Ratis, etc
> > Expose HA endpoint to a client: multiple endpoints OR a single endpoint
> via proxy
> >
> > Currently, there is no way to expose multiple endpoints to a REST
> server. This may work in some cases if you hide multiple REST server
> instances behind a proxy/balancer. But this proxy requires own HA setup,
> which complicates the overall deployment.
> >
> > I'd like to ask the community whether we can extend REST specification
> with multiple endpoints to support HA REST catalog without proxies. This
> extension could contain two essential parts:
> >
> > How to provide multiple endpoints to RESTSessionCatalog. This could be
> encoded into URL or as additional property
> >  Some additional headers and/or error codes to allow a REST server
> instance communicate peer endpoints and the current coordinator
> >
> > A very rough example how this can work in practice. Configuration:
> >
> > mycatalog.endpoint=https://host1
> > mycatalog.endpoints=https://host1,https://host2,https://host3
> >
> > REST server response headers with additional endpoints:
> >
> > X-HA-Coordinator: https://host2
> > X-HA-Endpoints: https://host1,https://host2,https://host3
> >
> > WDYT?
> >
> > Regards,
> > Vladimir
>

Reply via email to