OpenStack projects use an open standard for messaging middleware known as AMQP. This messaging middleware enables the OpenStack services which will exist across multiple servers to talk to each other. OpenStack Oslo RPC supports two implementations of AMQP: RabbitMQ and Qpid.
OpenStack Oslo RPC uses RabbitMQ by
default. This section discusses the configuration options that are
relevant when RabbitMQ is used. The
rpc_backend
option is not required as long as
RabbitMQ is the default messaging system.
However, if it is included the configuration, it must be set to
nova.rpc.impl_kombu
.
rpc_backend=nova.rpc.impl_kombu
The following tables describe the rest of the options that
can be used when RabbitMQ is used
as the messaging system. You can configure the messaging
communication for different installation scenarios as well as
tune RabbitMQ's retries and the size of the RPC thread pool.
If you want to monitor notifications through RabbitMQ, you
must set the notification_driver
option in
nova.conf
to
nova.notifier.rabbit_notifier
. The default
for sending usage data is 60 seconds plus a randomized 0-60 seconds.
Configuration option=Default value | (Type) Description |
rabbit_durable_queues=False | (BoolOpt)use durable queues in RabbitMQ |
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 |
Configuration option=Default value | (Type) Description |
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) |
This section discusses the configuration options that are relevant
if Qpid is used as the messaging system for
OpenStack Oslo RPC. Qpid is not the default
messaging system, so it must be enabled by setting the
rpc_backend
option in
nova.conf
.
rpc_backend=nova.rpc.impl_qpid
This next critical option points the compute nodes to the
Qpid broker (server). Set
qpid_hostname
in nova.conf
to
be the hostname where the broker is running.
Note | |
---|---|
The - |
qpid_hostname=hostname.example.com
If the Qpid broker is listening on a
port other than the AMQP default of 5672
, you will
need to set the qpid_port
option:
qpid_port=12345
If you configure the Qpid broker to require authentication, you will need to add a username and password to the configuration:
qpid_username=username qpid_password=password
By default, TCP is used as the transport. If you would like to
enable SSL, set the qpid_protocol
option:
qpid_protocol=ssl
The following table lists the rest of the options used by the Qpid messaging driver for OpenStack Oslo RPC. It is not common that these options are used.
Configuration option=Default value | (Type) Description |
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_username= | (StrOpt)Username for qpid connection |
This section lists options that are common between both the RabbitMQ and Qpid messaging drivers.
Configuration option=Default value | (Type) Description |
amqp_rpc_single_reply_queue=False | (BoolOpt)Enable a fast single reply queue if using AMQP based RPC like RabbitMQ or Qpid. |
control_exchange=openstack | (StrOpt)AMQP exchange to connect to if using RabbitMQ or Qpid |
matchmaker_heartbeat_freq=300 | (IntOpt)Heartbeat frequency |
matchmaker_heartbeat_ttl=600 | (IntOpt)Heartbeat time-to-live. |
matchmaker_ringfile=/etc/nova/matchmaker_ring.json | (StrOpt)Matchmaker ring file (JSON) |
rpc_backend=nova.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_driver_queue_base=cells.intercell | (StrOpt)Base queue name to use when communicating between cells. Various topics by message type will be appended to this. |
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 |