weaveworks / weave

Simple, resilient multi-host containers networking and more.
https://www.weave.works
Apache License 2.0
6.62k stars 670 forks source link

Rolling upgrades #403

Open squaremo opened 9 years ago

squaremo commented 9 years ago

https://botbot.me/freenode/weavenetwork/2015-02-18/?msg=32237468&page=1

Any thoughts on how I may perform a rolling update of weave without taking the whole cluster down?

rade commented 9 years ago

Bounce each node in turn. The new nodes won't be able to talk to the old ones IF the protocol revision has changed, so you end up with a sort of rolling partition which eventually disappears. We could do better, but not easily, so we'd need some evidence that what we have isn't enough.

rade commented 9 years ago

A few things we could do to improve the situation...

  1. Maintain release branches and ship non-protocol-changing bug fix updates on them.
  2. Switch to a major/minor scheme for the protocol version, with minor version changes being considered compatible.
  3. Make the protocol resilient to "extra stuff", so that we can introduce some additions w/o bumping the major version.

However, some bug fixes / changes are simply too intrusive to maintain compatibility.

rade commented 9 years ago

We did (1) for the first time with the 0.11.1 release. We create release branches "just in time", i.e. when we need them, rather than at the time of the release.