From de97ef305a09dc11300ea18aeacf7a6c7f1cde19 Mon Sep 17 00:00:00 2001 From: Mehdi Abaakouk Date: Wed, 3 May 2017 16:08:56 +0200 Subject: [PATCH] gnocchi: use redis as coordination url Currently gnocchi metricd is really slow making some tests timeout, because the tooz backend is mysql. And the futur autoscaling will reach the max connections of mysql by creating many tooz locks. This change switches to redis, this is one of the recommended backend to use (mysql is not). Change-Id: Iae81848e883f74b7f8f8f4cad58c2168e01b7321 --- Puppetfile | 4 ++++ README.md | 1 + external_modules.txt | 1 + fixtures/scenario001.pp | 5 +++++ manifests/config.pp | 2 ++ manifests/gnocchi.pp | 4 +++- manifests/redis.pp | 7 +++++++ 7 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 manifests/redis.pp diff --git a/Puppetfile b/Puppetfile index e5d811dec..2a29fbfce 100644 --- a/Puppetfile +++ b/Puppetfile @@ -238,3 +238,7 @@ mod 'corosync', :git => 'https://github.com/voxpupuli/puppet-corosync', :ref => 'v5.0.0' +mod 'redis', + :git => 'https://github.com/arioch/puppet-redis', + :ref => '1.2.4' + diff --git a/README.md b/README.md index e9315c342..8d6b14262 100644 --- a/README.md +++ b/README.md @@ -71,6 +71,7 @@ scenario](#all-in-one). | vitrage | X | | | | | | watcher | | | | X | | | bgpvpn-api | | | | X | | +| redis | X | | | | | When the Jenkins slave is created, the *run_tests.sh* script will be executed. This script will execute *install_modules.sh* that prepare /etc/puppet/modules diff --git a/external_modules.txt b/external_modules.txt index cf1b292a4..2d6d3932f 100644 --- a/external_modules.txt +++ b/external_modules.txt @@ -20,3 +20,4 @@ saz/puppet-memcached stankevich/puppet-python theforeman/puppet-dns voxpupuli/puppet-corosync +arioch/puppet-redis diff --git a/fixtures/scenario001.pp b/fixtures/scenario001.pp index a8dae02a1..c6c890457 100644 --- a/fixtures/scenario001.pp +++ b/fixtures/scenario001.pp @@ -20,11 +20,13 @@ case $::osfamily { # panko and vitrage are not packaged yet in debian/ubuntu $enable_panko = false $enable_vitrage = false + $enable_redis = false } 'RedHat': { $ipv6 = true $enable_panko = true $enable_vitrage = true + $enable_redis = true } default: { fail("Unsupported osfamily (${::osfamily})") @@ -64,6 +66,9 @@ include ::openstack_integration::aodh if $enable_vitrage { include ::openstack_integration::vitrage } +if $enable_redis { + include ::openstack_integration::redis +} include ::openstack_integration::gnocchi include ::openstack_integration::ceph include ::openstack_integration::provision diff --git a/manifests/config.pp b/manifests/config.pp index 740e8fe08..702f4bf7a 100644 --- a/manifests/config.pp +++ b/manifests/config.pp @@ -32,12 +32,14 @@ class openstack_integration::config ( # different: https://bugs.launchpad.net/swift/+bug/1610064 $memcached_servers = ["inet6:[${host}]:11211"] $swift_memcached_servers = ["[${host}]:11211"] + $tooz_url = "redis://[${host}]:6379" } else { $host = '127.0.0.1' $rabbit_env = {} $ip_version = '4' $memcached_servers = ["${host}:11211"] $swift_memcached_servers = $memcached_servers + $tooz_url = "redis://${host}:6379" } # in URL, brackets are needed diff --git a/manifests/gnocchi.pp b/manifests/gnocchi.pp index 2bf7c36a8..3932eff5f 100644 --- a/manifests/gnocchi.pp +++ b/manifests/gnocchi.pp @@ -51,7 +51,9 @@ class openstack_integration::gnocchi { } class { '::gnocchi::client': } class { '::gnocchi::metricd': } - class { '::gnocchi::storage': } + class { '::gnocchi::storage': + coordination_url => $::openstack_integration::config::tooz_url, + } class { '::gnocchi::storage::ceph': ceph_username => 'openstack', ceph_keyring => '/etc/ceph/ceph.client.openstack.keyring', diff --git a/manifests/redis.pp b/manifests/redis.pp new file mode 100644 index 000000000..e9508e79b --- /dev/null +++ b/manifests/redis.pp @@ -0,0 +1,7 @@ +class openstack_integration::redis { + include ::openstack_integration::config + + class { '::redis': + bind => $::openstack_integration::config::host + } +}