We are running two Red Hat 7 servers, one to run CF 2016 (Server A) and one to run Apache 2.4.6 (Server B). I’ve read instructions on how to get CF to run in distributed mode, but I’m not having any luck getting it to work. Is there a walkthrough on how to go about it?
I’ve installed CF on the Apache server (Server B) to get the connectors set correctly, and changed the workers.properties file to point to Server A, ensuring the cfusion.port is the same on both servers. On Server B I’ve installed our homegrown CF application, complete with Application.cfm and index.cfm files but when browsing to Server B it returns an error: ERR_EMPTY_RESPONSE
What am I missing? (I know I’m missing a lot!)
Thanks for any help you can provide
I'm going to recommend that you not use distributed mode. Instead, I think you should set up Apache as a reverse proxy, and have it talk to the built-in CF web server on the other server. This is a more standard and less fragile way to set up a static web server that talks to an application server. There are plenty of resources on how to set up Apache as a reverse proxy, and those resources aren't specific to CF - they would work with any application server.
That said, if you are going to use distributed mode you need to have the application itself installed on both servers, and located in the same place on the filesystem on both servers.
Dave Watts, Eidolon LLC
I've read a little about the reverse-proxy, but I'm not sure we can do that in our environment. From what I've been told (and this could be wrong) it's not recommended to use the built-in CF web server in a production environment. It also raised some eyebrows from our security team when I mentioned it, though they didn't give me any specifics on why they were concerned.
I currently have CF installed on both, with the filesystem structures mirroring one another. I know I'm missing a step (or ten) when it comes to configuring them to talk.
Thanks again for the info. I'll revisit that possible solution with our security guys while I continue to tackle the distributed mode option as well.
There's no technical reason why you couldn't use a reverse proxy. It's not recommended to use the built-in CF web server as a production web server, but (a) this isn't really because of its performance but rather its lack of features, and (b) you wouldn't be using it as a production web server anyway. You'd be using Apache on your public-facing server. That said, you could put Apache on both servers and nothing would really change. You could have Apache on the public-facing server reverse proxying CF requests to Apache on the internal server for resolution. It just means you have to add one more software component that's not really needed. But it wouldn't hurt anything.
I'm a bit surprised that your security guys wouldn't prefer the reverse proxy approach. That's the industry-recommended approach to solving this problem, and no one has ever heard of distributed mode outside of the CF world as far as I know. But if you really want to use distributed mode, you should be able to see in the connector log files on the public-facing server if it's trying to send the requests to the internal server, and you should be able to see in the regular log files on the internal server whether it's receiving them. But again, it's fragile, not well documented, and not well known outside the CF world (or even inside the CF world).
Dave Watts, Eidolon LLC
I can't get a good answer out of them, and I honestly don't have the energy or time to fight with them about it unfortunately.
Meanwhile, they've now allowed me to run CF on the same machine as Apache, so I'm looking at that route instead.
I really appreciate all your help and knowledge.