[rabbitmq-discuss] RabbitMQ - live upgrade

Dave Greggory davegreggory at yahoo.com
Thu Aug 12 13:49:31 BST 2010


Thanks, Matthew. 

It's good to hear that we won't need to upgrade the clients to the new client API. 

The reason I said it will try to re-cluster is because we use the cluster config file to automatically cluster when nodes start up fresh. 

I figured as much for the nodes themselves. 

On Aug 11, 2010, at 10:11 AM, Matthew Sackman <matthew at rabbitmq.com> wrote:

> Hi Dave,
> 
> On Wed, Aug 11, 2010 at 10:01:20AM -0400, Dave Greggory wrote:
>> We have two nodes in the cluster and they can talk to each other
>> directly (obviously). They're both 1.8.1 and say we want to upgrade
>> them one at a time to 1.new version without affecting clients. If we
>> take down 1 node out of the load balancer then clients will connect to
>> the other node when they detect the connection loss. Now we can
>> shutdown this first node and upgrade it.
> 
> That would work, but obviously any queues that are declared on the node
> that is now down will be unavailable.
> 
>> Will we lose any of the persisted messages in the downed node due to
>> the new persister and/or mnesia differences?
> 
> Yes. You will lose all persisted messages. And all declared queues,
> exchanges, bindings, vhosts and users.
> 
>> when we bring up the newly upgraded node, it will attempt to cluster
>> itself with the still up second node with old version? Can only very
>> bad things happen in this situation?
> 
> Hmmm, I'm not sure if it will try to recluster. If it does, it'll
> certainly fail. You can not cluster between rabbit with different
> versions of rabbit (well, actually, you probably can sometimes, but the
> outcome is undefined at best). Don't do this.
> 
>> Other than being very quick on the trigger finger and downing the
>> second node as we're bringing up the first node, are there any other
>> solutions?
> 
> Yes, build a new cluster, then switch your producers over to the new
> cluster (where they must create new queues, exchanges etc etc). Have
> your consumers continue to drain the old cluster, and then when the old
> cluster is empty, switch the consumers to the new cluster.
> 
>> Or will the new version just not work without having to upgrade client
>> API (java) and restsrting clients?
> 
> There is no requirement to touch your clients. The on-the-wire AMQP
> protocol has not changed. There have been changes and likely
> improvements to the clients but I don't believe there should be any
> problems with 1.8.1 clients connecting to the next released version of
> the RabbitMQ broker.
> 
> Matthew


More information about the rabbitmq-discuss mailing list