Making Discourse maintenance windows smaller

Hey everyone,

During the last maintenance window I thought of a way we could reduce downtime during the regular discourse upgrades.

Currently, we update one of the servers, push the image to our registry and then download it on the other server. This takes roughly 20 minutes. Since we have docker which uses containers to run the app, and the updated images are pushed to our private registry, we could make an AWS (or even HP Cloud?) micro instance which will mirror the production servers but not be in the load balancer. We can use this server to create the updated image, then simply pull then down to the two prod servers. This should reduce downtime to however long it takes the server to download the ~1.5GB image. We could potentially make the latter bit into a simple puppet run so its one command to update the servers.

What are people’s thoughts? Anything I’m missing that will stop this from working?

2 Likes

I don’t see any immediate problems with this idea.

I like this idea a lot.

Problem: When we build the images, it’ll upgrade the DB.