We have a pretty basic load balancing setup with 3 web servers behind a load balancer connected to the same db server and pointing their wp-content/uploads folder to an nfs share.
We have the first server rsynching the wordpress files across the other 2 in a cron job to keep the servers in sync (all wp-admin stuff is done on the first server)
I’m wondering what the best way is to upgrade the entire cluster at once with minimal downtime.
If I update wordpress on the first server, will the db versioning cause the other 2 servers to stop working? Or can I just update the first server then rsync the files across without any downtime?
I don’t think the database schema ever changes so drastically that the versions of wordpress on box 2 + 3 would be prevented from reading from the DB after you’ve updated on box 1, however it depends what version you are upgrading from.
Why not set a similar environment locally and test upgrading site 1, while still trying to visit site 2.
Normally, it would be cleaner to not have some boxes run code that is potentially out of sync, but on the other hand, if the WP web boxes are only doing read operations, what is the worst case scenario? That a few pages display error messages? You probably want to have the WordPress code files locally for IO performance. Maybe you could pre-deploy the update to a different directory and switch them all by changing a symlink on all web boxes?