FYI, Facebook runs Katran in production: https://code.facebook.com/posts/1906146702752923/open-sourci...
This is an interesting question the answer to which is definitely not certain :)
The problem this solves is is when you are using haproxy but need redundancy or a single server is no longer capable of handling the load and you need to scale out to 2+ servers.
You could run 4 haproxy servers and use round robin DNS to load balance between them, but as they say, this has the problem of:
> compared to DNS it doesn't need to wait for TTL to redirect traffic from failed L7 lb.
Many people likely use anycast/ECMP for this case, but that has the other issue they mention:
> compared to anycast-based solution, L4 lbs are more resilient to the networking related issues (which triggers mass ECMP reshuffle)/ enable better handling of adding/removing of L7 lbs from the pool as well as provide better support for unequal load balancing.
Please describe how HAProxy running in l4 mode is a solution to this problem.
There are also various other benefits, but network layer balancers do have their own share of downsides as well. Like you need to have pretty big control over your infra in order to use them (generally speaking it's not feasible to use them in public clouds), configuration is more complex, they won't do TLS for you etc.
[0] https://www.haproxy.com/blog/layer-4-load-balancing-nat-mode...