Redundant Redmine Design?
I have a successful implementation of Redmine and really enjoying it. I'd like to take it to the next level by providing redundancy at most service levels. Would the following design be possible, from a Redmine webapp perspective? Or is this stretching it?
Clients connect to a network load balanced IP address. NLB is handled at the hardware level. At least two web servers respond (its own machines) to HTTP/S requests. Requests to Redmine/RAILS/Passenger are passed on to separate web application servers (two). Then, the webapp servers pass read/write DB access to a separate MySQL server acting as Master. The master MySQL server will write to one separate MySQL passive slave server. Master/Slave Dbs would replicate.
For now, the machines would be in same data center, except for the slave DB. In this way, I'm hoping to decouple the critical web application services (IP, HTTP, Redmine, Mysql) into multiple server machines. With this design, I'm hoping to survive some system outages. What do you think? Is anyone doing redundancy? Thanks!
RE: Redundant Redmine Design? - Added by Felix Schäfer about 8 years ago
Rails apps are (most of the time) stateless, in the case of Redmine, you can have multiple instances of it running on different machines provided they are configured with the same DB, the same cookie secret and access to a common folder for the attachments (the
files folder in the Redmine directory). What load balancing or other techniques you want to use doesn't (shouldn't) affect Redmine. Regarding the DB, as long as the state is consistent across all instances, Redmine doesn't care either, I'm not sure you can configure multiple DBs for failover in the database config though, so you might need some arbiter/load balancer between Redmine and the DBs too.
RE: Redundant Redmine Design? - Added by Joshua Villagomez almost 8 years ago
Great feedback. I think you're right about putting a load balancer between Redmine and the DB. That would make sense. So we shouldn't separate Apache and Rails? If so, then it's a matter of just load balancing the webapp servers and DB servers. Hoping won't be too difficult to setup, which in the end, we'd have a very redundant system.
RE: Redundant Redmine Design? - Added by Felix Schäfer almost 8 years ago
Joshua Villagomez wrote:
So we shouldn't separate Apache and Rails?
As I said: you can have multiple instances of Redmine running against the same DB/data, so you can have 2 machines running Redmine. Those two instances can either run on apache/passenger, or on passenger standalone, or on any other rails server, and you can put an apache with a reverse proxy for load balancing in front of those two, or any other load balancer you want.
If you're still unsure you've understood everything correctly, feel free to draw a diagram of the setup you're thinking about, and we can discuss that.