Support for the detach-database plugin

This patch adds the support when the database is deployed on a dedicated
node [1].

[1] https://github.com/openstack/fuel-plugin-detach-database

Change-Id: If800d9d09204a1456640863a3ed3c5dc66d29017
Closes-Bug: #1547089
This commit is contained in:
Guillaume Thouvenin 2016-04-27 14:21:26 +02:00
parent 6dc87065fb
commit 2d72b53784
8 changed files with 96 additions and 27 deletions

View File

@ -15,11 +15,12 @@
notice('fuel-plugin-lma-collector: aggregator.pp')
prepare_network_config(hiera('network_scheme', {}))
$mgmt_address = get_network_role_property('management', 'ipaddr')
$lma_collector = hiera_hash('lma_collector')
$roles = node_roles(hiera('nodes'), hiera('uid'))
$is_controller = member($roles, 'controller') or member($roles, 'primary-controller')
$is_rabbitmq = roles_include(['standalone-rabbitmq', 'primary-standalone-rabbitmq'])
$mgmt_address = get_network_role_property('management', 'ipaddr')
$lma_collector = hiera_hash('lma_collector')
$roles = node_roles(hiera('nodes'), hiera('uid'))
$is_controller = member($roles, 'controller') or member($roles, 'primary-controller')
$is_rabbitmq = roles_include(['standalone-rabbitmq', 'primary-standalone-rabbitmq'])
$is_mysql_server = roles_include(['standalone-database', 'primary-standalone-database'])
$network_metadata = hiera_hash('network_metadata')
$controllers = get_nodes_hash_by_roles($network_metadata, ['primary-controller', 'controller'])
@ -29,7 +30,7 @@ $management_network = hiera('management_network_range')
$aggregator_port = 5565
$check_port = 5566
if $is_controller or $is_rabbitmq {
if $is_controller or $is_rabbitmq or $is_mysql_server {
# On nodes where pacemaker is deployed, make sure the LMA service is
# configured with the "pacemaker" provider
include lma_collector::params

View File

@ -25,6 +25,13 @@ $current_node_name = hiera('user_node_name')
$current_roles = hiera('roles')
$network_metadata = hiera_hash('network_metadata')
$detach_rabbitmq = hiera('detach-rabbitmq', {})
$detach_database = hiera('detach-database', {})
if $detach_database['metadata'] and $detach_database['metadata']['enabled'] {
$is_mysql_server = roles_include(['standalone-database', 'primary-standalone-database'])
} else {
$is_mysql_server = $is_controller
}
if $detach_rabbitmq['metadata'] and $detach_rabbitmq['metadata']['enabled'] {
$is_rabbitmq = roles_include(['standalone-rabbitmq', 'primary-standalone-rabbitmq'])
@ -121,10 +128,10 @@ lma_collector::heka { 'metric_collector':
}
# The LMA collector service is managed by Pacemaker on nodes that are
# running RabbitMQ and on controller nodes.
# running RabbitMQ and database in detached mode and also on controller nodes.
# We use pacemaker_wrappers::service to reconfigure the service resource
# to use the "pacemaker" service provider
if $is_controller or $is_rabbitmq {
if $is_controller or $is_rabbitmq or $is_mysql_server {
# TODO(all): remove this include from the manifest
include lma_collector::params
@ -328,6 +335,12 @@ if $elasticsearch_mode != 'disabled' {
require => Class['lma_collector'],
}
if $is_mysql_server {
class { 'lma_collector::logs::mysql':
require => Class['lma_collector'],
}
}
if $is_rabbitmq {
class { 'lma_collector::logs::rabbitmq':
require => Class['lma_collector'],
@ -367,6 +380,23 @@ case $influxdb_mode {
require => Class['lma_collector'],
}
if $is_mysql_server {
$nova = hiera_hash('nova', {})
class { 'lma_collector::collectd::mysql':
username => 'nova',
password => $nova['db_password'],
require => Class['lma_collector::collectd::base'],
}
lma_collector::collectd::dbi_mysql_status { 'mysql_status':
username => 'nova',
dbname => 'nova',
password => $nova['db_password'],
require => Class['lma_collector::collectd::base'],
}
}
class { 'lma_collector::influxdb':
server => $influxdb_server,
database => $influxdb_database,

View File

@ -16,13 +16,14 @@ notice('fuel-plugin-lma-collector: cinder.pp')
include lma_collector::params
$ceilometer = hiera_hash('ceilometer', {})
$lma_collector = hiera_hash('lma_collector')
$roles = node_roles(hiera('nodes'), hiera('uid'))
$is_controller = member($roles, 'controller') or member($roles, 'primary-controller')
$is_rabbitmq = roles_include(['standalone-rabbitmq', 'primary-standalone-rabbitmq'])
$ceilometer = hiera_hash('ceilometer', {})
$lma_collector = hiera_hash('lma_collector')
$roles = node_roles(hiera('nodes'), hiera('uid'))
$is_controller = member($roles, 'controller') or member($roles, 'primary-controller')
$is_rabbitmq = roles_include(['standalone-rabbitmq', 'primary-standalone-rabbitmq'])
$is_mysql_server = roles_include(['standalone-database', 'primary-standalone-database'])
if $is_controller or $is_rabbitmq {
if $is_controller or $is_rabbitmq or $is_mysql_server {
# On nodes where pacemaker is deployed, make sure the LMA service is
# configured with the "pacemaker" provider
include lma_collector::params

View File

@ -20,13 +20,14 @@ $lma = hiera_hash('lma_collector', {})
$roles = node_roles(hiera('nodes'), hiera('uid'))
$is_controller = member($roles, 'controller') or member($roles, 'primary-controller')
$is_rabbitmq = roles_include(['standalone-rabbitmq', 'primary-standalone-rabbitmq'])
$is_mysql_server = roles_include(['standalone-database', 'primary-standalone-database'])
$alarms_definitions = $lma['alarms']
if $alarms_definitions == undef {
fail('Alarms definitions not found. Check files in /etc/hiera/override.')
}
if $is_controller or $is_rabbitmq {
if $is_controller or $is_rabbitmq or $is_mysql_server {
# On nodes where pacemaker is deployed, make sure the LMA service is
# configured with the "pacemaker" provider
include lma_collector::params

View File

@ -266,7 +266,6 @@ if ! $storage_options['objects_ceph'] {
# Logs
if $lma_collector['elasticsearch_mode'] != 'disabled' {
class { 'lma_collector::logs::mysql': }
class { 'lma_collector::logs::pacemaker': }
}
@ -358,17 +357,6 @@ if $influxdb_mode != 'disabled' {
cpu_allocation_ratio => 8.0,
}
class { 'lma_collector::collectd::mysql':
username => 'nova',
password => $nova['db_password'],
}
lma_collector::collectd::dbi_mysql_status{ 'mysql_status':
username => 'nova',
dbname => 'nova',
password => $nova['db_password'],
}
class { 'lma_collector::collectd::haproxy':
socket => $haproxy_socket,
# Ignore internal stats ('Stats' for 6.1, 'stats' for 7.0) and lma proxies

View File

@ -27,6 +27,10 @@ if ($plugin_data) {
$detach_rabbitmq = hiera('detach-rabbitmq', {})
$detach_rabbitmq_enabled = $detach_rabbitmq['metadata'] and $detach_rabbitmq['metadata']['enabled']
# detach_database_enabled is used in templates
$detach_database = hiera('detach-database', {})
$detach_database_enabled = $detach_database['metadata'] and $detach_database['metadata']['enabled']
$elasticsearch_mode = $plugin_data['elasticsearch_mode']
$monitor_elasticsearch = $elasticsearch_mode ? {
'local' => true,

View File

@ -91,6 +91,32 @@ lma_collector:
window: 120
periods: 0
function: avg
- name: 'cpu-critical-mysql'
description: 'The CPU usage is too high (MySQL node)'
severity: 'critical'
enabled: 'true'
trigger:
logical_operator: 'or'
rules:
- metric: cpu_idle
relational_operator: '<='
threshold: 5
window: 120
periods: 0
function: avg
- name: 'cpu-warning-mysql'
description: 'The CPU usage is high (MySQL node)'
severity: 'warning'
enabled: 'true'
trigger:
logical_operator: 'or'
rules:
- metric: cpu_idle
relational_operator: '<='
threshold: 15
window: 120
periods: 0
function: avg
- name: 'cpu-critical-storage'
description: 'The CPU usage is too high (storage node)'
severity: 'critical'
@ -705,7 +731,11 @@ lma_collector:
node_cluster_roles:
controller: ['primary-controller', 'controller']
<% if @detach_database_enabled -%>
mysql-nodes: ['primary-standalone-database', 'standalone-database']
<% else -%>
mysql-nodes: ['primary-controller', 'controller']
<% end -%>
compute: ['compute']
storage: ['cinder', 'ceph-osd']
<% if @monitor_elasticsearch -%>
@ -721,7 +751,11 @@ lma_collector:
<% else -%>
rabbitmq: ['primary-controller', 'controller']
<% end -%>
<% if @detach_database_enabled -%>
mysql: ['primary-standalone-database', 'standalone-database']
<% else -%>
mysql: ['primary-controller', 'controller']
<% end -%>
apache: ['primary-controller', 'controller']
nova-api: ['primary-controller', 'controller']
nova-logs: ['primary-controller', 'controller', 'compute']
@ -757,6 +791,10 @@ lma_collector:
root-fs: ['root-fs-critical', 'root-fs-warning']
<% end -%>
mysql-nodes:
<% if @detach_database_enabled -%>
cpu: ['cpu-critical-mysql', 'cpu-warning-mysql']
root-fs: ['root-fs-critical', 'root-fs-warning']
<% end -%>
mysql-fs: ['mysql-fs-critical', 'mysql-fs-warning']
compute:
cpu: ['cpu-critical-compute', 'cpu-warning-compute']

View File

@ -409,6 +409,10 @@ lma_collector:
policy: majority_of_members
group_by: hostname
members:
<% if @detach_database_enabled -%>
- cpu
- root-fs
<% end -%>
- mysql-fs
compute:
policy: majority_of_members
@ -461,7 +465,9 @@ lma_collector:
- mysqld-tcp
- mysql
- mysql-nodes
<% if not @detach_database_enabled -%>
- controller
<% end -%>
haproxy:
policy: highest_severity
group_by: member