[openstack-dev] [cinder][oslo] ZeroMQ support with multibackend
michal.dulko at intel.com
Thu Nov 24 10:34:39 UTC 2016
Cinder is lacking ZeroMQ messaging support in multibackend
configurations. This is due to the fact that we're abusing
``Target.server`` property by appending "@backend" suffix to the
hostname. This works just fine in RabbitMQ, as it routes messages using
queue names, but fails in ZeroMQ when 'server' property stops matching
There is a workaround for this in oslo.messaging , but it breaks
multibackend configrations, as backend A on a host can get message
addressed for the backend B on the same host.
We've seen tries , ,  to fix it, but these implementations
were based on doing special operations when ZeroMQ is configured. This
invalidates concept of oslo.messaging being an abstraction layer.
My current idea to fix this  is to switch whole multibackend message
routing from being based on ``Target.server`` to ``Target.topic``.
Implementation is based on keeping the old RPC server that listens on
"cinder-volume" topic for fanout messages and creating a new RPC server
which listens on "cinder-volume.host at backend" topic and "host" server.
This is fine with rolling upgrades, as '$topic.$server' is how server
queue names are built in oslo.messaging, so we'll still listen on old
Please note that only the messaging layer is being changed. Internally
volumes will still be seen as existing on "host at backend" servers.
I've added an experimental gate-tempest-dsvm-zeromq-multibackend job,
which passes fine on , but fails on master, which proves that the
Is anyone seeing dangers in this approach? If not - I'm asking for
reviews on .
More information about the OpenStack-dev