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.
Thanks,
Shawn