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