On Sat, Oct 07, 2023 at 02:55:03PM +0200, Aleksandar Lazic wrote: > Hm, this makes me thinking to have also some mode like mysql,mqtt, what ever > to use it for monitoring or any other purpose.
Good point indeed, these were among the ones that were already discussed in the past. But you get the point, my goal is that we can have something that is not necessarily HTTP just because it's not raw TCP. > Maybe this will then bring up SPOE to a level where the body of a request > can be scanned and bring it to a full WAF level or as WASM filter. It's unrelated. The "mode" defines what processing is being done between both ends and how exchanges are done. The filters like the SPOE one are inserted into an existing protocol. > Are there any plans to have something similar to XDS ( > https://www.envoyproxy.io/docs/envoy/latest/api-docs/xds_protocol ) for > dynamic configs at runtime, similar to the socket api and Data Plane API? I used to have such plans a long time ago and even participated to a few udpapi meetings. But at this point I think it's not haproxy's job to perform service discovery, as such mechanisms do not try to replace the load balancers but the humans who configure them. As such it should be a layer on top of it, which currently is represented by the dataplane API, though it could also be anything on top of the dpapi which relies on the dpapi's capabilities. There are multiple reasons for this, the first one being that some changes might be too invasive and require a reload, so the process cannot do that on itself, and another reason is that some discovery code might be readily available in other high-level languages such as Go and not yet in C. A third reason is that those layers do not evolve at the same speed and are not of interest to the same developers. So it's much easier to keep the roles apart and keep haproxy as a pure dataplane that moves bits very fast, and maintain the control plane outside of it. The haproxy developers' time would be much better invested by tightening the relation between dpapi and haproxy in order to ease runtime communication between the two than by spending years implementing the intersection between each new discovery protocol and what can really be done. That's also why I said earlier that I want to eventually remove a part of the DNS code that currently does too much. DNS is not bad when it consists in resolving the address of your server, but it's bad when it's used as the poor man's solution to fill a farm and delivers inconsistent farms between multiple LBs, while saner mechanisms exist. Cheers, Willy