Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

We're developing an new server to replace an old one, and want to put the side by side for before & after tests - so that we can compare the end result and find the discrepancies.

The input to both services (old and new) is HTTP requests (mostly if not all GET, but possibly also POST), we need to have traffic coming to the old server duplicated and sent also to the new server (not instead). of course we will need to do some slight rewriting on the Hostname and port in the request to avoid an endless loop.

Old server is running on Apache (PHP), new one is Jetty (Java, Dropwizard)

There must be a way to do this, I just can't find the keywords for the Google search I guess...

share|improve this question
3  
Which response do you think you will want to return to the client? Because if you're copying all the data to the servers, then both servers will return data... Having proper testing requires a lot more than just copying data streams like this. –  Jenny D Jan 23 at 9:47
    
    
@JennyD I do not want any response to the user from the new server... that is a good point, and one we thought about (this is what made it impossible to do at the load balancer level with TCP/IP). –  Moshe Eshel Jan 23 at 13:46
    
@Iain I know about the option to replay captured traffic, that can also be done with replaying the access logs using JMeter, but this is something we will use only if the original option of duplication is impossible... –  Moshe Eshel Jan 23 at 13:48
2  
@MosheEshel Replaying captured traffic is pretty much the standard for this kind of testing and it's definitely what I would advise. –  Jenny D Jan 23 at 13:49
show 1 more comment

1 Answer

Although is not what you are asking for, I will suggest another approach to test the new server.

If you put a load balancer in front of both servers and play with the load balancing algorithms you can at the same time test the new server and gradually replace the old one. You can send 99% of the requests to the old server and the remaining one percent of requests will go to the new one where you can closely review if the service is working as expected.

If everything works fine you can increase the load gradually; 90%-10%, 80%-20%, and so on.

Hint: Check haproxy and the weight and static-rr options.

share|improve this answer
    
We considered this, but we can't yet deploy the back-end for this, so the traffic sent to the new server will be effectively lost - and we can't afford that, even on a level of 0.001% –  Moshe Eshel Jan 23 at 13:49
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.