Enable mongodb replicaset

This patch allows HA on mongodb for ceilometer use.
This commit is contained in:
Yanis Guenane 2014-02-19 14:35:22 -05:00 committed by Emilien Macchi
parent f051901824
commit 4cf8809e4b
2 changed files with 46 additions and 12 deletions

View File

@ -29,10 +29,20 @@
# http://docs.mongodb.org/manual/reference/configuration-options/#nojournal
# Defaults to false
#
# [*replset_members*]
# (optional) Ceilometer Replica set members
# Default value in params
#
# [*mongo_primary*]
# (optional) MongoDB replicaset primary hostname
# Default value in params
#
class cloud::database::nosql(
$bind_ip = $os_params::internal_netif_ip,
$nojournal = false,
$bind_ip = $os_params::internal_netif_ip,
$nojournal = false,
$replset_members = $os_params::mongo_nodes,
$mongo_primary = $os_params::mongo_primary
) {
# bind_ip should be an array
@ -49,6 +59,28 @@ class cloud::database::nosql(
class { 'mongodb':
bind_ip => $bind_ip_real,
nojournal => $nojournal,
replset => 'ceilometer',
}
exec {'check_mongodb' :
command => "/usr/bin/mongo ${bind_ip}:27017",
logoutput => false,
tries => 60,
try_sleep => 5,
require => Service['mongodb'],
}
if $::hostname == $mongo_primary and !empty($replset_members) {
mongodb_replset{'ceilometer':
members => $replset_members,
before => Anchor['mongodb setup done'],
}
}
anchor {'mongodb setup done' :
require => Exec['check_mongodb'],
}
}

View File

@ -21,25 +21,27 @@ class cloud::telemetry::server(
$ks_keystone_internal_proto = $os_params::ks_keystone_internal_proto,
$ks_ceilometer_internal_port = $os_params::ks_ceilometer_internal_port,
$ks_ceilometer_password = $os_params::ks_ceilometer_password,
$ceilometer_database_connection = $os_params::ceilometer_database_connection,
$api_eth = $os_params::api_eth,
$mongo_nodes = $os_params::mongo_nodes,
$mongo_primary = $os_params::mongo_primary,
){
include 'cloud::telemetry'
$db_conn = regsubst($ceilometer_database_connection, 'mongodb:\/\/(\.*)', '\2')
exec {'check_mongodb' :
command => "/usr/bin/mongo ${db_conn}",
logoutput => false,
tries => 60,
try_sleep => 5,
$s_mongo_nodes = join($mongo_nodes, ',')
$db_conn = "mongodb://${s_mongo_nodes}/ceilometer?replicaSet=ceilometer"
if $::hostname == $mongo_primary {
$sync_db = true
} else {
$sync_db = false
}
Service <| title == 'mongodb' |> -> Exec['check_mongodb']
# Install MongoDB database
class { 'ceilometer::db':
database_connection => $ceilometer_database_connection,
require => Exec['check_mongodb'],
database_connection => $db_conn,
sync_db => $sync_db,
require => Anchor['mongodb setup done'],
}
# Install Ceilometer-collector