Update to use oslo.messaging services for RPC and Notify

This introduces oslo.messaging variables that define the RPC and
Notify transports for the OpenStack services. These parameters replace
the rabbitmq values and are used to generate the messaging
transport_url for the service. The association of the messaging
backend server to the oslo.messaging services will then be transparent
to the octavia service.

This patch:
* Add oslo.messaging variable for RPC and Notify to defaults
* Update transport_url generation
* Add oslo.messaging to tests inventory
* Update tests
* Add release note

Change-Id: Ibfd9b5325bf89414439a1a516d1bbde0896904b5
This commit is contained in:
Andrew Smith 2018-06-12 13:18:57 -04:00
parent caa2100206
commit 1ee708ffb6
6 changed files with 80 additions and 38 deletions

View File

@ -62,23 +62,23 @@ octavia_db_max_overflow: 20
octavia_db_pool_size: 120 octavia_db_pool_size: 120
octavia_db_pool_timeout: 30 octavia_db_pool_timeout: 30
## RabbitMQ info ## Oslo Messaging
## Configuration for RPC communications # RPC
octavia_rabbitmq_userid: octavia octavia_oslomsg_rpc_transport: rabbit
octavia_rabbitmq_vhost: /octavia octavia_oslomsg_rpc_servers: 127.0.0.1
octavia_rabbitmq_servers: 127.0.0.1 octavia_oslomsg_rpc_port: 5672
octavia_rabbitmq_use_ssl: False octavia_oslomsg_rpc_use_ssl: False
octavia_rabbitmq_port: 5672 octavia_oslomsg_rpc_userid: octavia
octavia_oslomsg_rpc_vhost: /octavia
## Configuration for notifications communication, i.e. [oslo_messaging_notifications]
octavia_rabbitmq_telemetry_userid: "{{ octavia_rabbitmq_userid }}"
octavia_rabbitmq_telemetry_password: "{{ octavia_rabbitmq_password }}"
octavia_rabbitmq_telemetry_vhost: "{{ octavia_rabbitmq_vhost }}"
octavia_rabbitmq_telemetry_port: "{{ octavia_rabbitmq_port }}"
octavia_rabbitmq_telemetry_servers: "{{ octavia_rabbitmq_servers }}"
octavia_rabbitmq_telemetry_use_ssl: "{{ octavia_rabbitmq_use_ssl }}"
# Notify
octavia_oslomsg_notify_transport: rabbit
octavia_oslomsg_notify_servers: 127.0.0.1
octavia_oslomsg_notify_port: 5672
octavia_oslomsg_notify_use_ssl: False
octavia_oslomsg_notify_userid: octavia
octavia_oslomsg_notify_vhost: /octavia
## octavia User / Group ## octavia User / Group
octavia_system_user_name: octavia octavia_system_user_name: octavia
@ -180,7 +180,8 @@ octavia_services:
octavia_required_secrets: octavia_required_secrets:
- keystone_auth_admin_password - keystone_auth_admin_password
- octavia_container_mysql_password - octavia_container_mysql_password
- octavia_rabbitmq_password - octavia_oslomsg_rpc_password
- octavia_oslomsg_notify_password
- octavia_service_password - octavia_service_password
- memcached_encryption_key - memcached_encryption_key
@ -251,18 +252,19 @@ octavia_sync_provisioning_status: False
# OSA is architected to use vHosts for queues so we need to post events # OSA is architected to use vHosts for queues so we need to post events
# into the Neutron queue for them to be picked up # into the Neutron queue for them to be picked up
neutron_rabbitmq_userid: neutron neutron_oslomsg_rpc_userid: neutron
neutron_rabbitmq_vhost: /neutron neutron_oslomsg_rpc_vhost: /neutron
neutron_rabbitmq_port: 5672 neutron_oslomsg_rpc_transport: rabbit
neutron_rabbitmq_servers: 127.0.0.1 neutron_oslomsg_rpc_port: 5672
neutron_rabbitmq_use_ssl: False neutron_oslomsg_rpc_servers: 127.0.0.1
neutron_rabbitmq_password: changeme neutron_oslomsg_rpc_use_ssl: False
neutron_oslomsg_rpc_password: changeme
# For additional security use a different user on the Neutron queue # For additional security use a different user on the Neutron queue
# for Octavia with restricted access to only the event streamer # for Octavia with restricted access to only the event streamer
# queues # queues
octavia_neutron_rabbitmq_userid: "{{ neutron_rabbitmq_userid }}" octavia_neutron_oslomsg_rpc_userid: "{{ neutron_oslomsg_rpc_userid }}"
octavia_neutron_rabbitmq_password: "{{ neutron_rabbitmq_password }}" octavia_neutron_oslomsg_rpc_password: "{{ neutron_oslomsg_rpc_password }}"
# this controls if Octavia should add an anti-affinity hint to make sure # this controls if Octavia should add an anti-affinity hint to make sure
# two amphora are not placed pn the same host (the most common setup of # two amphora are not placed pn the same host (the most common setup of

View File

@ -0,0 +1,20 @@
---
features:
- Support separate oslo.messaging services for RPC and Notifications
to enable operation of separate and different messaging backend servers.
deprecations:
- |
The rabbitmq server parameters have been replaced by corresponding
oslo.messaging RPC and Notify parameters in order to abstract the
messaging service from the actual backend server deployment.
- octavia_oslomsg_rpc_servers replaces octavia_rabbitmq_servers
- octavia_oslomsg_rpc_port replaces octavia_rabbitmq_port
- octavia_oslomsg_rpc_use_ssl replaces octavia_rabbitmq_use_ssl
- octavia_oslomsg_rpc_userid replaces octavia_rabbitmq_userid
- octavia_oslomsg_rpc_vhost replaces octavia_rabbitmq_vhost
- octavia_oslomsg_notify_servers replaces octavia_rabbitmq_telemetry_servers
- octavia_oslomsg_notify_port replaces octavia_rabbitmq_telemetry_port
- octavia_oslomsg_notify_use_ssl replaces octavia_rabbitmq_telemetry_use_ssl
- octavia_oslomsg_notify_userid replaces octavia_rabbitmq_telemetry_userid
- octavia_oslomsg_notify_vhost replaces octavia_rabbitmq_telemetry_vhost
- octavia_oslomsg_notify_password replaces octavia_rabbitmq_telemetry_password

View File

@ -25,7 +25,10 @@ auth_strategy = {{ octavia_auth_strategy }}
# For HA, specify queue nodes in cluster, comma delimited: # For HA, specify queue nodes in cluster, comma delimited:
# transport_url = rabbit://<user>:<pass>@server01,<user>:<pass>@server02/<vhost> # transport_url = rabbit://<user>:<pass>@server01,<user>:<pass>@server02/<vhost>
transport_url = rabbit://{% for host in octavia_rabbitmq_servers.split(',') %}{{ octavia_rabbitmq_userid }}:{{ octavia_rabbitmq_password }}@{{ host }}:{{ octavia_rabbitmq_port }}{% if not loop.last %},{% else %}/{{ octavia_rabbitmq_vhost }}{% endif %}{% endfor %} transport_url = {{ octavia_oslomsg_rpc_transport }}://{% for host in octavia_oslomsg_rpc_servers.split(',') %}{{ octavia_oslomsg_rpc_userid }}:{{ octavia_oslomsg_rpc_password }}@{{ host }}:{{ octavia_oslomsg_rpc_port }}{% if not loop.last %},{% else %}/{{ octavia_oslomsg_rpc_vhost }}{% if octavia_oslomsg_rpc_use_ssl | bool %}?ssl=1{% else %}?ssl=0{% endif %}{% endif %}{% endfor %}
[oslo_messaging_notifications]
transport_url = {{ octavia_oslomsg_notify_transport }}://{% for host in octavia_oslomsg_notify_servers.split(',') %}{{ octavia_oslomsg_notify_userid }}:{{ octavia_oslomsg_notify_password }}@{{ host }}:{{ octavia_oslomsg_notify_port }}{% if not loop.last %},{% else %}/{{ octavia_oslomsg_notify_vhost }}{% if octavia_oslomsg_notify_use_ssl | bool %}?ssl=1{% else %}?ssl=0{% endif %}{% endif %}{% endfor %}
[api_settings] [api_settings]
bind_host = 0.0.0.0 bind_host = 0.0.0.0
@ -43,7 +46,7 @@ allow_tls_terminated_listeners = {{ octavia_tls_listener_enabled }}
# pre Ocata # pre Ocata
[oslo_messaging_rabbit] [oslo_messaging_rabbit]
ssl = {{ octavia_rabbitmq_use_ssl }} ssl = {{ octavia_oslomsg_rpc_use_ssl }}
rpc_conn_pool_size = {{ octavia_rpc_conn_pool_size }} rpc_conn_pool_size = {{ octavia_rpc_conn_pool_size }}
[database] [database]
@ -241,7 +244,7 @@ event_stream_topic = neutron_lbaas_event
# Put it into the Neutron queue # Put it into the Neutron queue
{% if octavia_event_streamer|bool %} {% if octavia_event_streamer|bool %}
event_stream_transport_url = rabbit://{% for host in neutron_rabbitmq_servers.split(',') %}{{ octavia_neutron_rabbitmq_userid }}:{{ octavia_neutron_rabbitmq_password }}@{{ host }}:{{ neutron_rabbitmq_port }}{% if not loop.last %},{% else %}/{{ neutron_rabbitmq_vhost }}{% endif %}{% endfor %} event_stream_transport_url = {{ neutron_oslomsg_rpc_transport }}://{% for host in neutron_oslomsg_rpc_servers.split(',') %}{{ octavia_neutron_oslomsg_rpc_userid }}:{{ octavia_neutron_oslomsg_rpc_password }}@{{ host }}:{{ neutron_oslomsg_rpc_port }}{% if not loop.last %},{% else %}/{{ neutron_oslomsg_rpc_vhost }}{% if neutron_oslomsg_rpc_use_ssl | bool %}?ssl=1{% else %}?ssl=0{% endif %}{% endif %}{% endfor %}
{% endif %} {% endif %}

View File

@ -11,6 +11,12 @@ openstack1
swift-storage1 swift-storage1
octavia1 octavia1
[oslomsg_rpc_all]
infra1
[oslomsg_notify_all]
infra1
[rabbitmq_all] [rabbitmq_all]
infra1 infra1
@ -148,4 +154,4 @@ swift_obj
[swift_remote_all] [swift_remote_all]
[utility_all] [utility_all]
infra1 infra1

View File

@ -46,12 +46,20 @@ octavia_galera_address: "{{ test_galera_host }}"
octavia_galera_database: octavia octavia_galera_database: octavia
octavia_galera_user: octavia octavia_galera_user: octavia
octavia_container_mysql_password: "secrete" octavia_container_mysql_password: "secrete"
octavia_rabbitmq_password: "{{ rabbitmq_password }}" octavia_oslomsg_rpc_transport: "{{ oslomsg_rpc_transport }}"
octavia_rabbitmq_userid: octavia octavia_oslomsg_rpc_password: "{{ oslomsg_rpc_password }}"
octavia_rabbitmq_vhost: /octavia octavia_oslomsg_rpc_userid: octavia
octavia_rabbitmq_servers: "{{ rabbitmq_servers }}" octavia_oslomsg_rpc_vhost: /octavia
octavia_rabbitmq_use_ssl: "{{ rabbitmq_use_ssl }}" octavia_oslomsg_rpc_servers: "{{ oslomsg_rpc_servers }}"
octavia_rabbitmq_port: "{{ rabbitmq_port }}" octavia_oslomsg_rpc_use_ssl: "{{ oslomsg_rpc_use_ssl }}"
octavia_oslomsg_rpc_port: "{{ oslomsg_rpc_port }}"
octavia_oslomsg_notify_transport: "{{ oslomsg_notify_transport }}"
octavia_oslomsg_notify_password: "{{ oslomsg_notify_password }}"
octavia_oslomsg_notify_userid: octavia
octavia_oslomsg_notify_vhost: /octavia
octavia_oslomsg_notify_servers: "{{ oslomsg_notify_servers }}"
octavia_oslomsg_notify_ssl: "{{ oslomsg_notify_use_ssl }}"
octavia_oslomsg_notify_port: "{{ oslomsg_notify_port }}"
octavia_standalone: False octavia_standalone: False
octavia_swift_temp_url_secret_key: secrete octavia_swift_temp_url_secret_key: secrete
octavia_keystone_auth_plugin: password octavia_keystone_auth_plugin: password

View File

@ -16,10 +16,13 @@
remote_user: root remote_user: root
gather_facts: true gather_facts: true
pre_tasks: pre_tasks:
- include: common/ensure-rabbitmq.yml - include: common/ensure-oslomsg.yml
vhost_name: "{{ octavia_rabbitmq_vhost }}" rpc_vhost: "{{ octavia_oslomsg_rpc_vhost }}"
user_name: "{{ octavia_rabbitmq_userid }}" rpc_user: "{{ octavia_oslomsg_rpc_userid }}"
user_password: "{{ octavia_rabbitmq_password }}" rpc_password: "{{ octavia_oslomsg_rpc_password }}"
notify_vhost: "{{ octavia_oslomsg_notify_vhost }}"
notify_user: "{{ octavia_oslomsg_notify_userid }}"
notify_password: "{{ octavia_oslomsg_notify_password }}"
- include: common/create-grant-db.yml - include: common/create-grant-db.yml
db_name: "{{ octavia_galera_database }}" db_name: "{{ octavia_galera_database }}"
db_password: "{{ octavia_container_mysql_password }}" db_password: "{{ octavia_container_mysql_password }}"