From 5adb4d407b665d0ac4fc660e68b9c9f8022ab803 Mon Sep 17 00:00:00 2001 From: Ilya Tyaptin Date: Tue, 26 Jan 2016 16:45:17 +0300 Subject: [PATCH] Add alarms and notification agents coordination In this patch next features have been implemented: 1. Set a notification workload_partitioning to True, for turning on notification agents partitioning 2. Change alarm evaluator resource configuration in pacemaker to run it on each controller node Change-Id: Id74094d64b6c24aa4c4f4ff5d9a5cd2610425c60 --- .../puppet/modules/redis/manifests/main.pp | 63 ++++++++++++++++++- 1 file changed, 61 insertions(+), 2 deletions(-) diff --git a/deployment_scripts/puppet/modules/redis/manifests/main.pp b/deployment_scripts/puppet/modules/redis/manifests/main.pp index baa84ba..1212343 100644 --- a/deployment_scripts/puppet/modules/redis/manifests/main.pp +++ b/deployment_scripts/puppet/modules/redis/manifests/main.pp @@ -116,6 +116,7 @@ class redis::main ( 'coordination/backend_url' : value => redis_backend_url($redis_hosts, $redis_sentinel_port, $timeout); 'coordination/heartbeat' : value => '1.0'; 'coordination/check_watchers' : value => $timeout; + 'notification/workload_partitioning': value => true } if $primary_controller { @@ -125,7 +126,14 @@ class redis::main ( onlyif => 'pcs resource show p_ceilometer-agent-central > /dev/null 2>&1', } + exec {'remove_old_resource_alarm_evaluator': + path => '/usr/sbin:/usr/bin:/sbin:/bin', + command => 'pcs resource delete p_ceilometer-alarm-evaluator --wait=120', + onlyif => 'pcs resource show p_ceilometer-alarm-evaluator > /dev/null 2>&1', + } + Exec['remove_old_resource_central_agent'] -> Cluster::Corosync::Cs_service["$::ceilometer::params::agent_central_service_name"] + Exec['remove_old_resource_alarm_evaluator'] -> Cluster::Corosync::Cs_service["$::ceilometer::params::alarm_evaluator_service_name"] } file {'redis_ocf_script': @@ -152,6 +160,22 @@ class redis::main ( hasrestart => false, } + cluster::corosync::cs_service { "$::ceilometer::params::alarm_evaluator_service_name": + ocf_script => 'ceilometer-alarm-evaluator', + csr_parameters => {}, + csr_metadata => undef, + csr_complex_type => 'clone', + csr_ms_metadata => { 'interleave' => true }, + csr_mon_intr => '20', + csr_mon_timeout => '10', + csr_timeout => '60', + service_name => $::ceilometer::params::alarm_evaluator_service_name, + package_name => $::ceilometer::params::alarm_evaluator_package_name, + service_title => 'ceilometer-alarm-evaluator', + primary => $primary_controller, + hasrestart => false, + } + cluster::corosync::cs_service { 'redis': ocf_script => 'redis-server', csr_parameters => {}, @@ -172,7 +196,8 @@ class redis::main ( File['redis_ocf_script'] -> Cluster::Corosync::Cs_service['redis'] -> Ceilometer_config <||> -> - Cluster::Corosync::Cs_service["$::ceilometer::params::agent_central_service_name"] + Cluster::Corosync::Cs_service["$::ceilometer::params::agent_central_service_name"] -> + Cluster::Corosync::Cs_service["$::ceilometer::params::alarm_evaluator_service_name"] if !$primary_controller { exec {'waiting-for-agent-up-on-primary': @@ -182,6 +207,13 @@ class redis::main ( path => '/usr/sbin:/usr/bin:/sbin:/bin', } + exec {'waiting-for-evaluator-up-on-primary': + tries => 10, + try_sleep => 30, + command => "pcs resource | grep -A 1 p_${::ceilometer::params::alarm_evaluator_service_name} | grep Started > /dev/null 2>&1", + path => '/usr/sbin:/usr/bin:/sbin:/bin', + } + exec {'waiting-for-redis-up-on-primary': tries => 10, try_sleep => 30, @@ -197,6 +229,14 @@ class redis::main ( provider => 'pacemaker', } + service {"p_${::ceilometer::params::alarm_evaluator_service_name}": + enable => true, + ensure => 'running', + hasstatus => true, + hasrestart => true, + provider => 'pacemaker', + } + service {"p_${::redis::params::service}": enable => true, ensure => 'running', @@ -210,7 +250,9 @@ class redis::main ( Cluster::Corosync::Cs_service['redis'] -> Exec['waiting-for-agent-up-on-primary'] -> Ceilometer_config <||> -> - Cluster::Corosync::Cs_service["$::ceilometer::params::agent_central_service_name"] + Cluster::Corosync::Cs_service["$::ceilometer::params::agent_central_service_name"] -> + Exec['waiting-for-evaluator-up-on-primary'] -> + Cluster::Corosync::Cs_service["$::ceilometer::params::alarm_evaluator_service_name"] } service { 'ceilometer-agent-central': @@ -218,4 +260,21 @@ class redis::main ( name => $::ceilometer::params::agent_central_service_name, enable => false, } + + service { 'ceilometer-alarm-evaluator': + ensure => 'stopped', + name => $::ceilometer::params::alarm_evaluator_service_name, + enable => false, + } + + service { 'ceilometer-agent-notification': + ensure => 'running', + name => $::ceilometer::params::agent_notification_service_name, + enable => true, + hasstatus => true, + hasrestart => true, + } + + Ceilometer_config <||> ~> Service['ceilometer-agent-notification'] + }