Enable mongodb replicaset
This patch allows HA on mongodb for ceilometer use.
This commit is contained in:
parent
f051901824
commit
4cf8809e4b
@ -29,10 +29,20 @@
|
|||||||
# http://docs.mongodb.org/manual/reference/configuration-options/#nojournal
|
# http://docs.mongodb.org/manual/reference/configuration-options/#nojournal
|
||||||
# Defaults to false
|
# 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(
|
class cloud::database::nosql(
|
||||||
$bind_ip = $os_params::internal_netif_ip,
|
$bind_ip = $os_params::internal_netif_ip,
|
||||||
$nojournal = false,
|
$nojournal = false,
|
||||||
|
$replset_members = $os_params::mongo_nodes,
|
||||||
|
$mongo_primary = $os_params::mongo_primary
|
||||||
) {
|
) {
|
||||||
|
|
||||||
# bind_ip should be an array
|
# bind_ip should be an array
|
||||||
@ -49,6 +59,28 @@ class cloud::database::nosql(
|
|||||||
class { 'mongodb':
|
class { 'mongodb':
|
||||||
bind_ip => $bind_ip_real,
|
bind_ip => $bind_ip_real,
|
||||||
nojournal => $nojournal,
|
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'],
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -21,25 +21,27 @@ class cloud::telemetry::server(
|
|||||||
$ks_keystone_internal_proto = $os_params::ks_keystone_internal_proto,
|
$ks_keystone_internal_proto = $os_params::ks_keystone_internal_proto,
|
||||||
$ks_ceilometer_internal_port = $os_params::ks_ceilometer_internal_port,
|
$ks_ceilometer_internal_port = $os_params::ks_ceilometer_internal_port,
|
||||||
$ks_ceilometer_password = $os_params::ks_ceilometer_password,
|
$ks_ceilometer_password = $os_params::ks_ceilometer_password,
|
||||||
$ceilometer_database_connection = $os_params::ceilometer_database_connection,
|
|
||||||
$api_eth = $os_params::api_eth,
|
$api_eth = $os_params::api_eth,
|
||||||
|
$mongo_nodes = $os_params::mongo_nodes,
|
||||||
|
$mongo_primary = $os_params::mongo_primary,
|
||||||
){
|
){
|
||||||
|
|
||||||
include 'cloud::telemetry'
|
include 'cloud::telemetry'
|
||||||
|
|
||||||
$db_conn = regsubst($ceilometer_database_connection, 'mongodb:\/\/(\.*)', '\2')
|
$s_mongo_nodes = join($mongo_nodes, ',')
|
||||||
exec {'check_mongodb' :
|
$db_conn = "mongodb://${s_mongo_nodes}/ceilometer?replicaSet=ceilometer"
|
||||||
command => "/usr/bin/mongo ${db_conn}",
|
|
||||||
logoutput => false,
|
if $::hostname == $mongo_primary {
|
||||||
tries => 60,
|
$sync_db = true
|
||||||
try_sleep => 5,
|
} else {
|
||||||
|
$sync_db = false
|
||||||
}
|
}
|
||||||
Service <| title == 'mongodb' |> -> Exec['check_mongodb']
|
|
||||||
|
|
||||||
# Install MongoDB database
|
# Install MongoDB database
|
||||||
class { 'ceilometer::db':
|
class { 'ceilometer::db':
|
||||||
database_connection => $ceilometer_database_connection,
|
database_connection => $db_conn,
|
||||||
require => Exec['check_mongodb'],
|
sync_db => $sync_db,
|
||||||
|
require => Anchor['mongodb setup done'],
|
||||||
}
|
}
|
||||||
|
|
||||||
# Install Ceilometer-collector
|
# Install Ceilometer-collector
|
||||||
|
Loading…
x
Reference in New Issue
Block a user