Add the option to store the InfluxDB WAL in memory
This change adds a new option to the Fuel UI to store the InfluxDB WAL
files in memory. This greatly improves write performances but it may
lead to data loss in case of server crash.
The WAL partition will use 10% of the total RAM (but no more than 4GB).
DocImpact
Change-Id: I6153cd24322ef3eab53505bf4cb1f72d9594ec04
(cherry picked from commit 2c8b6c5e0b
)
This commit is contained in:
parent
088a4c9d14
commit
b8af6c7352
@ -41,6 +41,14 @@ $influxdb_password = $influxdb_grafana['influxdb_userpass']
|
||||
$influxdb_dbname = $influxdb_grafana['influxdb_dbname']
|
||||
|
||||
$retention_period = $influxdb_grafana['retention_period']
|
||||
if $influxdb_grafana['influxdb_in_memory_wal'] {
|
||||
$influxdb_wal_storage = 'memory'
|
||||
# Allocate 10% of the total RAM for the WAL partition (but no more than 4GB)
|
||||
$influxdb_wal_size = min(4 * 1024 * 1024 * 1024, $::memorysize_mb * 1024 * 0.1)
|
||||
} else {
|
||||
$influxdb_wal_storage = 'disk'
|
||||
$influxdb_wal_size = 0
|
||||
}
|
||||
|
||||
# Parameters related to MySQL
|
||||
$host = $influxdb_grafana['mysql_host']
|
||||
@ -126,6 +134,8 @@ lma::corosync_roles:
|
||||
# from 1 or 2 nodes to 3 nodes.
|
||||
lma::influxdb::replication_factor: 3
|
||||
lma::influxdb::retention_period: <%= @retention_period %>
|
||||
lma::influxdb::wal::storage: <%= @influxdb_wal_storage %>
|
||||
lma::influxdb::wal::size: <%= @influxdb_wal_size %>
|
||||
|
||||
lma::influxdb::admin_username: "root"
|
||||
lma::influxdb::admin_password: <%= @influxdb_admin_password %>
|
||||
|
@ -15,6 +15,7 @@
|
||||
notice('fuel-plugin-influxdb-grafana: influxdb.pp')
|
||||
|
||||
$data_directory = hiera('lma::influxdb::data_dir')
|
||||
$wal_dir = "${data_directory}/wal"
|
||||
|
||||
# We set raft_nodes only for the non-primary node. The primary node will be
|
||||
# started as the first node and it will be the leader of the Raft cluster.
|
||||
@ -37,11 +38,33 @@ file { $data_directory:
|
||||
require => User['influxdb'],
|
||||
}
|
||||
|
||||
if hiera('lma::influxdb::wal::storage') == 'memory' {
|
||||
$wal_size = hiera('lma::influxdb::wal::size')
|
||||
file { $wal_dir:
|
||||
ensure => directory,
|
||||
owner => 'influxdb',
|
||||
group => 'influxdb',
|
||||
require => File[$data_directory],
|
||||
}
|
||||
|
||||
mount { $wal_dir:
|
||||
ensure => mounted,
|
||||
device => 'tmpfs',
|
||||
atboot => true,
|
||||
options => "size=${wal_size},rw",
|
||||
fstype => 'tmpfs',
|
||||
remounts => false,
|
||||
before => Class['lma_monitoring_analytics::influxdb'],
|
||||
require => File[$wal_dir],
|
||||
}
|
||||
}
|
||||
|
||||
# We cannot mix IP addresses and hostnames otherwise the Raft cluster won't
|
||||
# start. We have to stick with IP addresses because hostnames map to the
|
||||
# managament network space.
|
||||
class { 'lma_monitoring_analytics::influxdb':
|
||||
base_directory => $data_directory,
|
||||
wal_dir => $wal_dir,
|
||||
hostname => hiera('lma::influxdb::listen_address'),
|
||||
raft_nodes => $raft_nodes,
|
||||
version => '0.11.1-1',
|
||||
|
@ -16,6 +16,7 @@
|
||||
|
||||
class lma_monitoring_analytics::influxdb (
|
||||
$base_directory = $lma_monitoring_analytics::params::influxdb_dir,
|
||||
$wal_dir = undef,
|
||||
$hostname = undef,
|
||||
$raft_nodes = undef,
|
||||
$version = undef,
|
||||
@ -25,11 +26,17 @@ class lma_monitoring_analytics::influxdb (
|
||||
validate_array($raft_nodes)
|
||||
}
|
||||
|
||||
if $wal_dir {
|
||||
$_wal_dir = $wal_dir
|
||||
} else {
|
||||
$_wal_dir = "${base_directory}/wal"
|
||||
}
|
||||
|
||||
class { '::influxdb':
|
||||
data_dir => "${base_directory}/data",
|
||||
meta_dir => "${base_directory}/meta",
|
||||
hh_dir => "${base_directory}/hh",
|
||||
wal_dir => "${base_directory}/wal",
|
||||
wal_dir => $_wal_dir,
|
||||
snapshot => true,
|
||||
hostname => $hostname,
|
||||
raft_nodes => $raft_nodes,
|
||||
|
@ -52,6 +52,13 @@ attributes:
|
||||
source: '^[\S]{4,}$'
|
||||
error: "You must provide a password with at least 4 characters"
|
||||
|
||||
influxdb_in_memory_wal:
|
||||
value: false
|
||||
label: 'Store WAL files in memory'
|
||||
description: 'Store the Write-Ahead-Log (WAL) files in memory instead of disk. This will improve the write performances but data may be lost in case of server crash.'
|
||||
weight: 61
|
||||
type: "checkbox"
|
||||
|
||||
grafana_username:
|
||||
value: 'lma'
|
||||
label: 'User name'
|
||||
|
Loading…
Reference in New Issue
Block a user