Ori.livneh has uploaded a new change for review.
https://gerrit.wikimedia.org/r/149800
Change subject: Nutcracker: move declaration to role::mediawiki; parametrize
......................................................................
Nutcracker: move declaration to role::mediawiki; parametrize
* Set owner / group / mode for config files.
* Only override nutcracker's default mbuf-size if caller requests it.
* Don't declare defaults. Especially if they conflict with nutcracker's!
* Don't assume a single server pool. Nutcracker supports arbitrarily many.
We'll probably want to exploit this to ease the migration to a UNIX domain
socket (if we choose to do that).
* Move declaration to role::mediawiki / role::beta.
* Fix Icinga alert to expect a single process.
Change-Id: Ifb4d25506ad5dddf046c3e6ba03f30541850d2be
---
M manifests/role/beta.pp
M manifests/role/mediawiki.pp
M modules/mediawiki/manifests/init.pp
M modules/nutcracker/manifests/init.pp
M modules/nutcracker/manifests/monitoring.pp
M modules/nutcracker/templates/config.yml.erb
A modules/nutcracker/templates/default.erb
7 files changed, 107 insertions(+), 80 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/operations/puppet
refs/changes/00/149800/1
diff --git a/manifests/role/beta.pp b/manifests/role/beta.pp
index 86ea004..ae0ab1f 100644
--- a/manifests/role/beta.pp
+++ b/manifests/role/beta.pp
@@ -110,6 +110,26 @@
check_command =>
'check_http_url!commons.wikimedia.beta.wmflabs.org|http://commons.wikimedia.beta.wmflabs.org/wiki/Main_Page',
}
+ class { '::nutcracker':
+ mbuf_size => '64k',
+ pools => {
+ 'memcached' => {
+ auto_eject_hosts => true,
+ distribution => 'ketama',
+ hash => 'md5',
+ listen => '127.0.0.1:11212',
+ preconnect => true,
+ server_connections => 2,
+ server_failure_limit => 3,
+ timeout => 250,
+ servers => [
+ '10.68.16.14:11211',
+ '10.68.16.15:11211',
+ ],
+ },
+ },
+ }
+
# Beta application servers have some ferm DNAT rewriting rules (bug
# 45868) so we have to explicitly allow http (port 80)
ferm::service { 'http':
diff --git a/manifests/role/mediawiki.pp b/manifests/role/mediawiki.pp
index 0543ced..724306d 100644
--- a/manifests/role/mediawiki.pp
+++ b/manifests/role/mediawiki.pp
@@ -10,6 +10,40 @@
include ::mediawiki
include ::nutcracker::monitoring
+ class { '::nutcracker':
+ mbuf_size => '64k',
+ pools => {
+ 'memcached' => {
+ auto_eject_hosts => true,
+ distribution => 'ketama',
+ hash => 'md5',
+ listen => '127.0.0.1:11212',
+ preconnect => true,
+ server_connections => 2,
+ server_failure_limit => 3,
+ timeout => 250,
+ servers => [
+ '10.64.0.180:11211:1',
+ '10.64.0.181:11211:1',
+ '10.64.0.182:11211:1',
+ '10.64.0.183:11211:1',
+ '10.64.0.184:11211:1',
+ '10.64.0.185:11211:1',
+ '10.64.0.186:11211:1',
+ '10.64.0.187:11211:1',
+ '10.64.0.188:11211:1',
+ '10.64.0.189:11211:1',
+ '10.64.0.190:11211:1',
+ '10.64.0.191:11211:1',
+ '10.64.0.192:11211:1',
+ '10.64.0.193:11211:1',
+ '10.64.0.194:11211:1',
+ '10.64.0.195:11211:1',
+ ],
+ },
+ },
+ }
+
$log_aggregator = 'fluorine.eqiad.wmnet:8420'
class { '::mediawiki::php': fatal_log_file => "udp://${log_aggregator}" }
class { '::mediawiki::syslog': apache_log_aggregator => $log_aggregator }
diff --git a/modules/mediawiki/manifests/init.pp
b/modules/mediawiki/manifests/init.pp
index 9482091..49db762 100644
--- a/modules/mediawiki/manifests/init.pp
+++ b/modules/mediawiki/manifests/init.pp
@@ -13,36 +13,6 @@
mode => '0444',
}
- if $::realm == 'labs' {
- $mw_mc_server_list = [
- '10.68.16.14:11211', # deployment-memc02.eqiad.wmflabs
- '10.68.16.15:11211', # deployment-memc03.eqiad.wmflabs
- ]
- } else {
- $mw_mc_server_list = [
- '10.64.0.180:11211', # mc1001
- '10.64.0.181:11211', # mc1002
- '10.64.0.182:11211', # mc1003
- '10.64.0.183:11211', # mc1004
- '10.64.0.184:11211', # mc1005
- '10.64.0.185:11211', # mc1006
- '10.64.0.186:11211', # mc1007
- '10.64.0.187:11211', # mc1008
- '10.64.0.188:11211', # mc1009
- '10.64.0.189:11211', # mc1010
- '10.64.0.190:11211', # mc1011
- '10.64.0.191:11211', # mc1012
- '10.64.0.192:11211', # mc1013
- '10.64.0.193:11211', # mc1014
- '10.64.0.194:11211', # mc1015
- '10.64.0.195:11211', # mc1016
- ]
- }
-
- class { '::nutcracker':
- server_list => $mw_mc_server_list,
- }
-
# Increase scheduling priority of SSHD
file { '/etc/init/ssh.override':
content => "nice -10\n",
diff --git a/modules/nutcracker/manifests/init.pp
b/modules/nutcracker/manifests/init.pp
index c64700d..179cb93 100644
--- a/modules/nutcracker/manifests/init.pp
+++ b/modules/nutcracker/manifests/init.pp
@@ -6,61 +6,68 @@
#
# === Parameters
#
-# [*config_parameters*]
-# Non-standard config parameters for the memcached section of
-# the configuration.
+# [*mbuf_size*]
+# When set, will determine the size of nutcracker's mbufs.
+# The default is 16384. See <https://github.com/twitter/twemproxy
+# /blob/b2cd3ad/notes/recommendation.md> for a discussion of this
+# option.
#
-# [*server_list*]
-# List of the servers (in IP:PORT format) that will be used as
-# backends for memcached.
+# [*pools*]
+# A hash defining a nutcracker server pool.
+# See <https://github.com/twitter/twemproxy#configuration>.
#
# === Examples
#
-# class { 'nutcracker':
-# server_list => ['192.168.0.1:11211', '192.168.0.2:11211'],
+# class { '::nutcracker':
+# pools => {
+# 'parser' => {
+# listen => '127.0.0.1:11211',
+# distribution => 'ketama',
+# hash => 'md5',
+# timeout => 250,
+# servers => ['10.64.0.180:11211:1', '10.64.0.181:11211:1'],
+# },
+# },
# }
#
-class nutcracker( $server_list, $config_parameters = {} ) {
- tag 'nutcracker'
+class nutcracker(
+ $pools,
+ $mbuf_size = undef,
+ $ensure = present,
+) {
+ validate_hash($pools)
- $default_config = {
- 'listen' => '127.0.0.1:11212',
- 'hash' => 'md5',
- 'distribution' => 'ketama',
- 'timeout' => 250,
- 'preconnect' => 'true', # this is quoted on purpose
- 'redis' => 'false',# same here
- 'auto_eject_hosts' => 'true', # same here
- 'server_retry_timeout' => 30000,
- 'server_failure_limit' => 3,
- 'server_connections' => 2,
- }
-
- $config = merge($default_config, $config_parameters)
-
- package { 'nutcracker': }
-
- file { '/etc/default/nutcracker':
- ensure => present,
- content => 'DAEMON_OPTS="--mbuf-size=65536 --stats-port=22223"',
- require => Package['nutcracker'],
+ package { 'nutcracker':
+ ensure => $ensure,
}
file { '/etc/nutcracker/nutcracker.yml':
- ensure => present,
- mode => '0444',
+ ensure => $ensure,
content => template('nutcracker/config.yml.erb'),
- require => File['/etc/default/nutcracker'],
-# notify => Service['nutcracker'],
+ owner => 'root',
+ group => 'root',
+ mode => '0444',
+ require => Package['nutcracker'],
+ # notify => Service['nutcracker'],
+ }
+
+ if $ensure == 'present' and versioncmp($::puppetversion, '3.5') >= 0 {
+ File['/etc/nutcracker/nutcracker.yml'] {
+ validate_cmd => '/usr/sbin/nutcracker --test-conf %',
+ }
+ }
+
+ file { '/etc/default/nutcracker':
+ ensure => $ensure,
+ content => template('nutcracker/default.erb'),
+ owner => 'root',
+ group => 'root',
+ mode => '0444',
+ # notify => Service['nutcracker'],
}
service { 'nutcracker':
- ensure => running,
+ ensure => ensure_service($ensure),
provider => 'upstart',
- require => [
- File['/etc/default/nutcracker'],
- File['/etc/nutcracker/nutcracker.yml'],
- Package['nutcracker'],
- ],
}
}
diff --git a/modules/nutcracker/manifests/monitoring.pp
b/modules/nutcracker/manifests/monitoring.pp
index 499bf22..94b5252 100644
--- a/modules/nutcracker/manifests/monitoring.pp
+++ b/modules/nutcracker/manifests/monitoring.pp
@@ -5,7 +5,7 @@
class nutcracker::monitoring {
nrpe::monitor_service { 'nutcracker':
description => 'nutcracker process',
- nrpe_command => '/usr/lib/nagios/plugins/check_procs -c 1:2 -u
nutcracker -C nutcracker',
+ nrpe_command => '/usr/lib/nagios/plugins/check_procs -c 1:1 -u
nutcracker -C nutcracker',
}
nrpe::monitor_service { 'nutcracker_port':
diff --git a/modules/nutcracker/templates/config.yml.erb
b/modules/nutcracker/templates/config.yml.erb
index 3ffcaca..988404d 100644
--- a/modules/nutcracker/templates/config.yml.erb
+++ b/modules/nutcracker/templates/config.yml.erb
@@ -1,8 +1 @@
-memcached:
-<% @config.sort.each do |k,v| -%>
- <%= k %>: <%= v %>
-<%- end -%>
- servers:
- <%- @server_list.each do |server| -%>
- - <%= server %>:1
- <%- end -%>
+<%= scope.function_ordered_yaml([@pools]).gsub(/^---/, '') %>
diff --git a/modules/nutcracker/templates/default.erb
b/modules/nutcracker/templates/default.erb
new file mode 100644
index 0000000..417b7b8
--- /dev/null
+++ b/modules/nutcracker/templates/default.erb
@@ -0,0 +1,3 @@
+# Default settings for nutcracker.
+# This file is managed by Puppet.
+<%- if @mbuf_size -%>DAEMON_OPTS="--mbuf-size=<%= scope.function_to_bytes
[@mbuf_size] %>"<%- end %>
--
To view, visit https://gerrit.wikimedia.org/r/149800
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ifb4d25506ad5dddf046c3e6ba03f30541850d2be
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Ori.livneh <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits