Hi Shawn. On 01.03.22 23:09, Shawn Heisey wrote:
I was thinking about ways to help pinpoint problems a client is having connecting to services. And a thought occurred to me. Is there any kind of software available that can stand up a broken HTTP server, such that it is broken in very specific and configurable ways? Imagine a bit of software that can listen on a port and exhibit configurable failure scenarios. Including but certainly not limited to these: * SSL negotiation issues * Simulate dropped packets by ignoring incoming packets or failing to send outgoing packets. * Timeouts, delays, no response, or incorrect behavior at various phases: ** TCP ** SSL ** GET/HEAD/POST Does anything like this already exist? It would be an awesome troubleshooting tool. Configure it to fail in some way, have a client try connecting to it with their software, and if they get the same error that they do when trying it with the real server, then you've possibly pinpointed what the problem on the real server is, without diving into logs or packet captures. And the client may not know anything about the software they're using other than "it works fine connecting to XXX", making them an exceedingly unreliable source of information. So I'm not interested in something that can analyze network traffic or logs. I can already do that. I am imagining a server that can intentionally misbehave. And here's why I am asking my question on the haproxy mailing list: I think haproxy itself would serve as the perfect starting point for this idea. Imagine having configuration directives for haproxy that tell it to intentionally misbehave, either on the frontend or the backend. It could run side by side with a production instance, on another port or on another machine, with a nearly identical config to production that has misbehave configuration directives. Side note: I think haproxy would be a perfect fit at $DAY_JOB to replace a couple of problematic pieces of software, but I until I understand better how that software is configured, I can't mention it as a possible solution. I really like haproxy. Please keep up the good work. I'm looking for ways I can contribute to the project's success.
I don't know such a tool but this sounds like a interesting project Idea. Maybe some parts could be done via LUA but as HAProxy internally handle a lot of errors it could be tricky to force HAProxy do behave "weird" and not standard compliant. http://www.arpalert.org/src/haproxy-lua-api/2.5/index.html As you can see in the repo from Tim https://github.com/TimWolla/h-app-roxy that HAProxy and lua can be a quite powerful combination.
Thanks, Shawn
Regards Alex