cinder/releasenotes/notes/support-zmq-messaging-41085787156fbda1.yaml
Michał Dulko df647d0ccd Use oslo.messaging topics for multibackend
We've built our multibackend support by abusing oslo.messaging's
Target.server and appending '@backend-name' prefix to the hostname.
This made implementation easier, as we're simply treating multibackends
as totally separated services.

While this worked in RabbitMQ, zmq is communicating explicitly using
hostnames, so appending anything to hostname in Target.server breaks
communication.

This commit modifies the messaging layer of cinder-volume to use
Target.topic to distinguish backends. This is done by:

* Making cinder-volume listen on new RPC server, with Target.server
  set to raw hostname, and topic is set to 'cinder-volume.host@backend'.
  'cinder-volume' prefix is added to keep compatibility with Newton's
  services (we're relying on how RabbitMQ transport is implemented in
  oslo.messaging).
* Note that old RPC server listening on 'cinder-volume' topic is left
  there, as we need it to recieve fanout messages from scheduler.
* When sending a message to cinder-volume, we're sending it using
  Target.topic to route it to correct host and backend. For backward
  compatibility it's controlled by conditional based on RPC version pin.

Closes-Bug: 1630975
Related-Bug: 1440631
Implements: cinder-zeromq-support
Change-Id: I22efbeb97e11838139e2b33226d1c10094d27c1d
2016-12-21 09:40:01 +01:00

4 lines
87 B
YAML

---
features:
- Added support for ZMQ messaging layer in multibackend configuration.