OpenStack projects use an open standard for messaging middleware known as AMQP. This messaging middleware enables the OpenStack services that run on multiple servers to talk to each other. OpenStack Oslo RPC supports three implementations of AMQP: RabbitMQ, Qpid, and ZeroMQ.
OpenStack Oslo RPC uses RabbitMQ
by default. Use these options to configure the
RabbitMQ message system. The
rpc_backend
option is optional as long as
RabbitMQ is the default messaging
system. However, if it is included in the configuration, you must
set it to
heat.openstack.common.rpc.impl_kombu
.
rpc_backend = heat.openstack.common.rpc.impl_kombu
Use these options to configure the
RabbitMQ messaging system. You can
configure messaging communication for different installation
scenarios, tune retries for RabbitMQ, and define the size of the
RPC thread pool. To monitor notifications through RabbitMQ, you
must set the notification_driver
option to
heat.notifier.rabbit_notifier
in the
heat.conf
file:
Configuration option = Default value | Description |
---|---|
[DEFAULT] | |
kombu_ssl_ca_certs = | (StrOpt) SSL certification authority file (valid only if SSL enabled) |
kombu_ssl_certfile = | (StrOpt) SSL cert file (valid only if SSL enabled) |
kombu_ssl_keyfile = | (StrOpt) SSL key file (valid only if SSL enabled) |
kombu_ssl_version = | (StrOpt) SSL version to use (valid only if SSL enabled). valid values are TLSv1, SSLv23 and SSLv3. SSLv2 may be available on some distributions |
rabbit_ha_queues = False | (BoolOpt) use H/A queues in RabbitMQ (x-ha-policy: all).You need to wipe RabbitMQ database when changing this option. |
rabbit_host = localhost | (StrOpt) The RabbitMQ broker address where a single node is used |
rabbit_hosts = $rabbit_host:$rabbit_port | (ListOpt) RabbitMQ HA cluster host:port pairs |
rabbit_max_retries = 0 | (IntOpt) maximum retries with trying to connect to RabbitMQ (the default of 0 implies an infinite retry count) |
rabbit_password = guest | (StrOpt) the RabbitMQ password |
rabbit_port = 5672 | (IntOpt) The RabbitMQ broker port where a single node is used |
rabbit_retry_backoff = 2 | (IntOpt) how long to backoff for between retries when connecting to RabbitMQ |
rabbit_retry_interval = 1 | (IntOpt) how frequently to retry connecting with RabbitMQ |
rabbit_use_ssl = False | (BoolOpt) connect over SSL for RabbitMQ |
rabbit_userid = guest | (StrOpt) the RabbitMQ userid |
rabbit_virtual_host = / | (StrOpt) the RabbitMQ virtual host |
Use these options to configure the
Qpid messaging system for OpenStack
Oslo RPC. Qpid is not the default
messaging system, so you must enable it by setting the
rpc_backend
option in the
heat.conf
file:
rpc_backend=heat.openstack.common.rpc.impl_qpid
This critical option points the compute nodes to the
Qpid broker (server). Set the
qpid_hostname
option to the host name where
the broker runs in the heat.conf
file.
Note | |
---|---|
The |
qpid_hostname = hostname.example.com
If the Qpid broker listens on a
port other than the AMQP default of 5672
, you
must set the qpid_port
option to that
value:
qpid_port = 12345
If you configure the Qpid broker to require authentication, you must add a user name and password to the configuration:
qpid_username = username qpid_password = password
By default, TCP is used as the transport. To enable SSL, set
the qpid_protocol
option:
qpid_protocol = ssl
Use these additional options to configure the Qpid messaging driver for OpenStack Oslo RPC. These options are used infrequently.
Configuration option = Default value | Description |
---|---|
[DEFAULT] | |
qpid_heartbeat = 60 | (IntOpt) Seconds between connection keepalive heartbeats |
qpid_hostname = localhost | (StrOpt) Qpid broker hostname |
qpid_hosts = $qpid_hostname:$qpid_port | (ListOpt) Qpid HA cluster host:port pairs |
qpid_password = | (StrOpt) Password for qpid connection |
qpid_port = 5672 | (IntOpt) Qpid broker port |
qpid_protocol = tcp | (StrOpt) Transport to use, either 'tcp' or 'ssl' |
qpid_sasl_mechanisms = | (StrOpt) Space separated list of SASL mechanisms to use for auth |
qpid_tcp_nodelay = True | (BoolOpt) Disable Nagle algorithm |
qpid_topology_version = 1 | (IntOpt) The qpid topology version to use. Version 1 is what was originally used by impl_qpid. Version 2 includes some backwards-incompatible changes that allow broker federation to work. Users should update to version 2 when they are able to take everything down, as it requires a clean break. |
qpid_username = | (StrOpt) Username for qpid connection |
Use these options to configure the
ZeroMQ messaging system for
OpenStack Oslo RPC. ZeroMQ is not the
default messaging system, so you must enable it by setting the
rpc_backend
option in the
heat.conf
file:
Configuration option = Default value | Description |
---|---|
[DEFAULT] | |
rpc_zmq_bind_address = * | (StrOpt) ZeroMQ bind address. Should be a wildcard (*), an ethernet interface, or IP. The "host" option should point or resolve to this address. |
rpc_zmq_contexts = 1 | (IntOpt) Number of ZeroMQ contexts, defaults to 1 |
rpc_zmq_host = oslo | (StrOpt) Name of this node. Must be a valid hostname, FQDN, or IP address. Must match "host" option, if running Nova. |
rpc_zmq_ipc_dir = /var/run/openstack | (StrOpt) Directory for holding IPC sockets |
rpc_zmq_matchmaker = heat.openstack.common.rpc.matchmaker.MatchMakerLocalhost | (StrOpt) MatchMaker driver |
rpc_zmq_port = 9501 | (IntOpt) ZeroMQ receiver listening port |
rpc_zmq_topic_backlog = None | (IntOpt) Maximum number of ingress messages to locally buffer per topic. Default is unlimited. |
Use these common options to configure the RabbitMQ, Qpid, and ZeroMq messaging drivers:
Configuration option = Default value | Description |
---|---|
[DEFAULT] | |
amqp_auto_delete = False | (BoolOpt) Auto-delete queues in amqp. |
amqp_durable_queues = False | (BoolOpt) Use durable queues in amqp. |
control_exchange = heat | (StrOpt) AMQP exchange to connect to if using RabbitMQ or Qpid |
default_notification_level = INFO | (StrOpt) Default notification level for outgoing notifications |
default_publisher_id = None | (StrOpt) Default publisher_id for outgoing notifications |
fake_rabbit = False | (BoolOpt) If passed, use a fake RabbitMQ provider |
list_notifier_drivers = ['heat.openstack.common.notifier.no_op_notifier'] | (MultiStrOpt) List of drivers to send notifications |
notification_driver = [] | (MultiStrOpt) Driver or drivers to handle sending notifications |
notification_topics = notifications | (ListOpt) AMQP topic used for OpenStack notifications |
Configuration option = Default value | Description |
---|---|
[DEFAULT] | |
allowed_rpc_exception_modules = nova.exception, cinder.exception, exceptions | (ListOpt) Modules of exceptions that are permitted to be recreated upon receiving exception data from an rpc call. |
engine_life_check_timeout = 2 | (IntOpt) RPC timeout for the engine liveness check that is used for stack locking. |
matchmaker_heartbeat_freq = 300 | (IntOpt) Heartbeat frequency |
matchmaker_heartbeat_ttl = 600 | (IntOpt) Heartbeat time-to-live. |
rpc_backend = heat.openstack.common.rpc.impl_kombu | (StrOpt) The messaging module to use, defaults to kombu. |
rpc_cast_timeout = 30 | (IntOpt) Seconds to wait before a cast expires (TTL). Only supported by impl_zmq. |
rpc_conn_pool_size = 30 | (IntOpt) Size of RPC connection pool |
rpc_response_timeout = 60 | (IntOpt) Seconds to wait for a response from call or multicall |
rpc_thread_pool_size = 64 | (IntOpt) Size of RPC thread pool |
[matchmaker_ring] | |
ringfile = /etc/oslo/matchmaker_ring.json | (StrOpt) Matchmaker ring file (JSON) |
[rpc_notifier2] | |
topics = notifications | (ListOpt) AMQP topic(s) used for OpenStack notifications |
Configuration option = Default value | Description |
---|---|
[DEFAULT] | |
onready = None | (StrOpt) onready allows you to send a notification when the heat processes are ready to serve. This is either a module with the notify() method or a shell command. To enable notifications with systemd, one may use the 'systemd-notify --ready' shell command or the 'heat.common.systemd' notification module. |
publish_errors = False | (BoolOpt) publish error events |