cell_v2 multi-cell

- move nova dbsync from nova-api to nova-conductor
  - nova db is more tightly coupled to conductor/computes
  - we don't have a nova-api services on a CellController
  - super-conductor on Controller will sync cell0 db
- when additional cell
  - duplicate service node name hiera for transport_urls on cell stack
  - nova -> oslo_messaging_rpc_cell_node_names
  - neutron agent -> oslo_messaging_rpc_node_names
  - rabbit -> rabbit nodes are cell controllers

bp tripleo-multicell-basic

Co-Authored-By: Martin Schuppert <mschuppert@redhat.com>

Change-Id: I79c1080605611c5c7748a28d2afcc9c7275a2e5d
This commit is contained in:
Oliver Walsh 2018-09-06 23:58:00 +01:00 committed by Martin Schuppert
parent 92ce2bcaae
commit 035de7493d
6 changed files with 46 additions and 5 deletions

View File

@ -241,8 +241,10 @@ class tripleo::profile::base::database::mysql (
if hiera('neutron_api_enabled', false) {
include ::neutron::db::mysql
}
    if hiera('nova_conductor_enabled', false) {
      include ::nova::db::mysql
    }
if hiera('nova_api_enabled', false) {
include ::nova::db::mysql
include ::nova::db::mysql_api
}
if hiera('nova_placement_enabled', false) {

View File

@ -133,10 +133,16 @@ class tripleo::profile::base::neutron (
elsif $dhcp_agent_count > 0 {
$dhcp_agents_per_net = $dhcp_agent_count
}
if hiera('nova_is_additional_cell', undef) {
$oslomsg_rpc_hosts_real = delete($oslomsg_rpc_hosts, any2array(hiera('oslo_messaging_rpc_cell_node_names', undef)))
} else {
$oslomsg_rpc_hosts_real = $oslomsg_rpc_hosts
}
class { '::neutron' :
default_transport_url => os_transport_url({
'transport' => $oslomsg_rpc_proto,
'hosts' => $oslomsg_rpc_hosts,
'hosts' => $oslomsg_rpc_hosts_real,
'port' => $oslomsg_rpc_port,
'username' => $oslomsg_rpc_username,
'password' => $oslomsg_rpc_password,

View File

@ -117,6 +117,11 @@ class tripleo::profile::base::nova (
if $step >= 4 or ($step >= 3 and $sync_db) {
$oslomsg_rpc_use_ssl_real = sprintf('%s', bool2num(str2bool($oslomsg_rpc_use_ssl)))
$oslomsg_notify_use_ssl_real = sprintf('%s', bool2num(str2bool($oslomsg_notify_use_ssl)))
if hiera('nova_is_additional_cell', undef) {
$oslomsg_rpc_hosts_real = any2array(hiera('oslo_messaging_rpc_cell_node_names', undef))
} else {
$oslomsg_rpc_hosts_real = $oslomsg_rpc_hosts
}
include ::nova::config
include ::nova::logging
class { '::nova::cache':
@ -127,7 +132,7 @@ class tripleo::profile::base::nova (
class { '::nova':
default_transport_url => os_transport_url({
'transport' => $oslomsg_rpc_proto,
'hosts' => $oslomsg_rpc_hosts,
'hosts' => $oslomsg_rpc_hosts_real,
'port' => $oslomsg_rpc_port,
'username' => $oslomsg_rpc_username,
'password' => $oslomsg_rpc_password,

View File

@ -18,15 +18,31 @@
#
# === Parameters
#
# [*bootstrap_node*]
# (Optional) The hostname of the node responsible for bootstrapping tasks
# Defaults to hiera('nova_api_short_bootstrap_node_name')
#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
class tripleo::profile::base::nova::conductor (
$bootstrap_node = hiera('bootstrap_nodeid', undef),
$step = Integer(hiera('step')),
) {
include ::tripleo::profile::base::nova
include ::nova::db
if $::hostname == downcase($bootstrap_node) {
$sync_db = true
} else {
$sync_db = false
}
if $step >= 3 and $sync_db {
include ::nova::db::sync
}
if $step >= 4 {
include ::nova::conductor
}

View File

@ -149,7 +149,12 @@ class tripleo::profile::pacemaker::database::mysql_bundle (
# FQDN are lowercase in /etc/hosts, so are pacemaker node names
$galera_node_names_lookup = downcase(hiera('mysql_short_node_names', $::hostname))
$galera_fqdns_names_lookup = downcase(hiera('mysql_node_names', $::hostname))
# is this an additional nova cell?
if hiera('nova_is_additional_cell', undef) {
$galera_fqdns_names_lookup = downcase(hiera('mysql_cell_node_names', $::hostname))
} else {
$galera_fqdns_names_lookup = downcase(hiera('mysql_node_names', $::hostname))
}
if is_array($galera_node_names_lookup) {
$galera_nodes = join($galera_fqdns_names_lookup, ',')

View File

@ -95,9 +95,16 @@ class tripleo::profile::pacemaker::rabbitmq_bundle (
$step = Integer(hiera('step')),
$container_backend = 'docker',
) {
# is this an additional nova cell?
if hiera('nova_is_additional_cell', undef) {
$rpc_nodes_real = hiera('oslo_messaging_rpc_cell_node_names', [])
} else {
$rpc_nodes_real = $rpc_nodes
}
if $rpc_scheme == 'rabbit' {
$bootstrap_node = $rpc_bootstrap_node
$rabbit_nodes = $rpc_nodes
$rabbit_nodes = $rpc_nodes_real
} elsif $notify_scheme == 'rabbit' {
$bootstrap_node = $notify_bootstrap_node
$rabbit_nodes = $notify_nodes