Hi folks,
Thanks for taking the time...
I've been thinking of doing this for a while now and finally have some time! Before investing that time, I would like to make sure this is a path that makes sense, or see if a better options exist... I have no experience of Linux and will hopefully get alternatives if my idea is not a 'production' worthy option... (Probably time I start using Linux anyway!)
Ok, what I currently have:
- Cloudflare points requests to us.
- Our firewall gets the traffic from Cloudflare, then allows the traffic through to IIS webservers IF the traffic meets the rules we have in place.
- IIS serves content.
What I want to do (obviously, as a lab, then as a test with actual test copies of our sites, then a staging test for in depth testing by our test team, before being released to production (far away if its even a solid plan)...
- Cloudflare points requests to us.
- Firewall checks the traffic based on our rules.
- Traffic routes to CentOS, with HAProxy.
- HAProxy looks at custom header added by Cloudflare "HTTP_CF_CONNECTING_IP", which is the clients origin IP, and points them to an IIS web server.
- Web server responds.
- Any following requests from same client route to same web server, unless that web server is unavailable.
So... thoughts? Would CentOS with HAProxy be suitable to crack this? Is it a poor choice compared to other options?
I've looked at load balance options in Windows, but that doesn't look to do what I want. For example, I don't think you can get Windows Load Balancer to check for the custom header and route that client to the same web server until its unavailable. All Windows has is 'affinity', but in a test that points all Cloudflare traffic to the same web server as its all from 'Cloudflare' - didn't check the custom header... and couldn't see a way to make it!
I've also looked at Citrix NetScaler, and I think that could check the header, but compared to CentOS/HAProxy, I do not know if they are even comparable options...
I love to learn and have no issues being told i'm waaaayyyyy off of a good idea if that's the case - so where would you suggest I look based on what i'm trying to do for a solution that could eventually be production?
Thanks,
Jim