Hi Willy,

On Thu, 13 Mar 2025 at 18:33, Willy Tarreau <w...@1wt.eu> wrote:
>
> OK, I never thought about all of this!
>
> > For example case 1:
> > An admin configures private resolvers in TCP mode to avoid issues with
> > bigger response sizes, however unbeknownst to him TCP mode is not
> > available/reachable for unrelated issues. The same name servers are
> > configured in /etc/resolv.conf, so libc is able to resolve the private
> > server IPs without issues, because libc uses UDP before falling back
> > to TCP.
>
> I generally agree (though I don't know how frequent this is). Also
> this raises the point of the relevance of parse-resolv-conf then:
> if discrepancies are this common, should we also discourage from
> using this option ?

I don't dislike parse-resolv-conf, I think it's useful for cloud deployments.

It can work fine with libc resolution disabled, we just need to make
that clear imo.



> > I really want to drive home the point that this is not *only* about
> > different DNS servers, but also about different resolution behavior
> > when using the same DNS servers, because our code and libc code is not
> > the same.
>
> Totally got it now, thank you.
>
> I'm fine then with generally discouraging people from using the two at
> once.
>
> Maybe we could think about changing the default init-addr over the
> long term when resolvers are used (not sure this is easy to do, think
> about defaults). Or maybe we could add another variant of libc, such as
> "opt-libc" which would be libc only if resolvers is not used, and switch
> to that by default. What do you think ?
>
> The only problem is that I'd like to be able to emit a warning before
> changing that, and we probably don't want to force everyone to specify
> init-addr everywhere if we'd want to change a default later. Or maybe
> the resolution error should detect that resolvers are there and report
> that the setting changed. It would not be super cool but it could help
> users avoid serious traps.

Yes, ideally we would do more than just doc updates, but indeed
considering that every backend server can have a different resolver
config this could be non trivial.

Perhaps we could start with just a configuration warning when a
backend server is haproxy resolver enabled but libc still enabled for
the server?

We just have to keep in mind that this is really a per server config knob.



> And the other thing is to improve the doc. I'm pretty sure I'm far from
> being the only one around not thinking about all these "details" between
> libc and resolvers.

My attempt in this patch was sparse:

+  - disabling libc based initial name resolution with the "init-addr" server
+    setting is recommended to avoid using two different name resolution
+    strategies, as their behavior will diverge.


I'm not sure if making it dense is beneficial or if it just becomes
more confusing. If I make the FQDN / search domain example, people
will just think that it doesn't impact them if they run a full FQDN
config, yet it is just one of many examples and it will never be
possible to predict / list them all.


Perhaps just elaborating a little bit like:

+  - disabling libc based initial name resolution with the "init-addr" server
+    setting is recommended to avoid using two different name resolution
+    strategies, as their behavior will diverge. Due to the possible
+    behavior difference, initial libc resolution may hide problems related
+    to haproxy resolver.


It would be useful to get some user feedback regarding this topic.



Regards,

Lukas


Reply via email to