Support geographical load-balancing

Hello guys !

Let’s imagine that one Kong gateway is targetting several upstream servers.

Today, there are several load balancing algorithms (round robin, consistent hash, least con), but to my knowledge, none of them address the problematic of geographical proximity of the upstream servers.

Thing is, if an application wants to be multi-cloud (high availability, no dependency on one given region/provider, etc.), it can be that upstream servers are spread over the world.

In this case, we might want to preferably target upstream servers not geographically too far of the current gateway (current gateway is important, because we might be in cluster mode).

This is similar to what global load-balancing companies are doing (think Cloudflare), but if Kong could do it itself, it would be great.

I understand there are several issues:

  • For instance how to reconciliate geographical proximity with the fact that the closest upstream server might be really busy and it might not be a so good idea to cascade a request to it
  • Another example would be that the closest upstream server is not necessarily the one with the lowest latency, so, some king of “ping” result must probably be kept somewhere and renewed regularly

Maybe other folks have ideas about this ?

Cheers.