Set redis file descriptor limit when run via pacemaker

The current redis file descriptor limit is 4096 because of two reasons:
- It is run via the redis user
- It is not started via systemd which has explicit LimitNOFILE set to
  10240 (which matches the default configuration of maximum 10000
  clients)

Create an /etc/security/limits.d/redis.conf file in order to increase
the fd limit value  With this change we correctly get the following
limits:
[root@overcloud-controller-0 ~]# pcs status |grep -A2 redis
 Master/Slave Set: redis-master [redis]
     Masters: [ overcloud-controller-2 ]
     Slaves: [ overcloud-controller-0 overcloud-controller-1 ]

[root@overcloud-controller-0 ~]# cat /proc/`pgrep redis`/limits | grep open
Max open files            10240                10240   files

Previously this limit was set to 4096.

Change-Id: I7691581bad92ad9442cecd82cf44f5ac78ed169f
Closes-Bug: #1635334
This commit is contained in:
Michele Baldessari 2016-10-21 10:02:39 +02:00
parent 0b9c8fb56a
commit 03a68a5c8c

View File

@ -31,10 +31,16 @@
# for more details.
# Defaults to hiera('step')
#
# [*redis_file_limit*]
# (Optional) The file limit to put in /etc/security/limits.d/redis.conf
# for when redis is managed by pacemaker. Defaults to hiera('redis_file_limit')
# or 10240 (default in redis systemd limits)
#
class tripleo::profile::pacemaker::database::redis (
$bootstrap_node = hiera('bootstrap_nodeid'),
$enable_load_balancer = hiera('enable_load_balancer', true),
$step = hiera('step'),
$redis_file_limit = hiera('redis_file_limit', 10240),
) {
if $::hostname == downcase($bootstrap_node) {
$pacemaker_master = true
@ -44,6 +50,17 @@ class tripleo::profile::pacemaker::database::redis (
if $step >= 1 {
include ::redis
# Until puppet-redis grows support for /etc/security/limits.conf/redis.conf
# https://github.com/arioch/puppet-redis/issues/130
# we best explicitely set the file limit only in the pacemaker profile
# (the base profile does not need it as it is using systemd which has
# the limits set there)
file { '/etc/security/limits.d/redis.conf':
content => inline_template("redis soft nofile <%= @redis_file_limit %>\nredis hard nofile <%= @redis_file_limit %>\n"),
owner => '0',
group => '0',
mode => '0644',
}
if $pacemaker_master and hiera('stack_action') == 'UPDATE' {
tripleo::pacemaker::resource_restart_flag { 'redis-master':