Hi Joe,

On Tue, Feb 19, 2019 at 08:45:48AM +0000, Joe K wrote:
> Hi Willy!
> 
> My use case is very similar to gitlab's review apps:
> https://gitlab.com/help/ci/review_apps/index.md,
> on some PRs I want to be able to start web apps each with its own subdomain
> which would register themselves with haproxy
> via a socket like this (I thought):
> 
> ```
> set server be_template/websrv<i> addr <app_host> port <app_port>
> set server be_template/websrv<i> state ready
> add map /usr/local/etc/haproxy/domain2server.map <COMMIT_REF_SLUG>.
> domain.com websrv<i>
> ```

I see, it totally makes sense indeed! In the past it was not possible
to dynamically create servers so there was little point in having such
dynamic rules since the config would have had to be restarted anyway.
But with this in mind I totally agree with your use case. At first
glance I'm not seeing anything that would cause trouble by adapting
use-server to support log-format style rules like use_backend does.
We could simply decide that the rule does nothing if the server is
not found, like use_backend does, and like use-server does when the
designated server is down.

I've looked at the code a bit. The only thing is that servers are
linked to the backend using a regular list, they are not placed in a
tree, so name lookups could be expensive when you have hundreds or
thousands of servers in a backend. But this limitation possibly is
acceptable for now.

I don't know if anyone is interested in trying to work on this. It's
not very difficult and is a good first contribution. Commit 702d44f
("MEDIUM: proxy: support use_backend with dynamic names") could serve
as an excellent guide to see how to proceed.

Regards,
Willy

Reply via email to