Seamless at DNS discovery and seamless reload

I wonder that connection lost occur or not (seamless, graceful or not)

  • when a existing server disappears at a A record from DNS discovery
  • when a new server appears at a A record from DNS discovery

I tested them found that there is no connection lost.
But I still wonder it’s really seamless and how it works.
However it is hard to find their answer at document HAProxy version 2.5-dev0 - Configuration Manual. It looks there is no answer about below questions, at the document.

  1. When a existing server disappears or a new server appears at a A record from DNS discovery, HAProxy process reloads its configure?

  2. If it’s not, HAProxy process just modify its ip from a A record, like echo "set server address" | socat stdio /var/run/hapee-lb.sock? If then, set server address is always seamless?

  1. DNS discovery does not use reloads.
  2. Yes, that’s a good comparison, the DNS discovery updates the server similarly to how a set server address would update the IP address.

The important thing is: the list of configured servers in a backend is only used for new connections, established connections (or in HTTP mode in flight transactions) are never interrupted, because the routing decision is only made once.

1 Like

Thank you so much again. :bowing_man:
Then although the list of configured servers are updated through set server address, established connections at a server on outdated backend can close gracefully because they are never interrupted.
Is it correct?

Yes correct.

There are differences between HTTP mode (this applies to a HTTP transaction, since there is no 1:1 connection relationships) and TCP mode (this applies to an actual connection - since there is a 1:1 releationship between a connection on the frontend and a connection on the backend), but the point is that the client will not be see anything surprising, only you use “stop/restart” commands (killing haproxy) or use something like shutdown session on the admin socket.

1 Like

I see. I appreciate your reply!

  • although there is difference of 1:1 connection in HTTP mode and TCP mode, connections are not lost at Two modes when DNS remove a server in A record. is it correct?
  • You mean at HTTP mode, each http connection is handled by http-reuse connection pool and there is no 1:1 connection relations?
  • Could you explain the words only you use “stop/restart” commands (killing haproxy) or use something like shutdown session on the admin socket.? It mean the client only notice when the haproxy stop/restart or shutdown session?

No client will never notice anything, everything is gracefully handled in a reload or DNS update situation. Only if you stop, restart or shutdown a session manually on the admin socket will the client be disconnected and the in flight data interrupted.

1 Like

I understand. Thanks for your detailed explanation!