Ottomata has submitted this change and it was merged.
Change subject: Puppetize systemd override for Kafka LimitNOFILE
......................................................................
Puppetize systemd override for Kafka LimitNOFILE
/etc/default/kafka's KAFKA_NOFILES_ULIMIT is not useable
by the systemd service file installed by the latest WMF
Kafka package, so we need to puppetized a custom systemd
override file to set this.
Bug: T106581
Change-Id: I10f41d0d3a19b15374ded800f0d6cd12573c9fa9
---
M manifests/defaults.pp
M manifests/server.pp
M templates/kafka.default.erb
A templates/kafka.systemd.override.conf.erb
4 files changed, 47 insertions(+), 4 deletions(-)
Approvals:
Ottomata: Looks good to me, approved
jenkins-bot: Verified
diff --git a/manifests/defaults.pp b/manifests/defaults.pp
index d9d01ef..d8bd296 100644
--- a/manifests/defaults.pp
+++ b/manifests/defaults.pp
@@ -83,7 +83,9 @@
$consumer_properties_template = 'kafka/consumer.properties.erb'
$log4j_properties_template = 'kafka/log4j.properties.erb'
$server_properties_template = 'kafka/server.properties.erb'
+ $server_systemd_override_template =
'kafka/kafka.systemd.override.conf.erb'
$server_default_template = 'kafka/kafka.default.erb'
$mirror_default_template = 'kafka/kafka-mirror.default.erb'
+
}
diff --git a/manifests/server.pp b/manifests/server.pp
index aa4b873..d098a6d 100644
--- a/manifests/server.pp
+++ b/manifests/server.pp
@@ -177,8 +177,9 @@
$jvm_performance_opts =
$kafka::defaults::jvm_performance_opts,
$server_properties_template =
$kafka::defaults::server_properties_template,
+ $systemd_override_template =
$kafka::defaults::server_systemd_override_template,
$default_template =
$kafka::defaults::server_default_template,
- $log4j_properties_template =
$kafka::defaults::log4j_properties_template
+ $log4j_properties_template =
$kafka::defaults::log4j_properties_template,
) inherits kafka::defaults
{
# Kafka class must be included before kafka::server.
@@ -205,6 +206,33 @@
}
else {
$broker_port = $kafka::defaults::default_broker_port
+ }
+
+ # Debian Jessie (and greater) has systemd, and the WMF Kafka .deb
+ # package installs a systemd service file. It is not possible
+ # to set number open files ulimit via /etc/default/kafka wth systemd,
+ # so we need to install a custom systemd override file.
+ $use_systemd = $::lsbdistid == 'Debian' and $::lsbmajdistrelease >= 8
+ if $use_systemd {
+ file { '/etc/systemd/system/kafka.service.d':
+ ensure => 'directory',
+ }
+ file { '/etc/systemd/system/kafka.service.d/override.conf':
+ content => template($systemd_override_template),
+ }
+ # systemd needs a reload to pick up changes to this file.
+ exec { 'systemd-reload-for-kafka-override':
+ command => '/bin/systemctl daemon-reload',
+ refreshonly => true,
+ subscribe =>
File['/etc/systemd/system/kafka.service.d/override.conf'],
+ }
+ $kafka_service_systemd_require =
[Exec['systemd-reload-for-kafka-override']]
+ }
+ else {
+ # Puppet hack. Puppet flattens nested arrays.
+ # If we aren't using systemd, then we don't want
+ # the Kafka service below to require the systemd exec.
+ $kafka_service_systemd_require = []
}
# Render out Kafka Broker config files.
@@ -245,13 +273,16 @@
}
service { 'kafka':
ensure => 'running',
+ hasrestart => true,
+ hasstatus => true,
require => [
File['/etc/kafka/server.properties'],
File['/etc/kafka/log4j.properties'],
File['/etc/default/kafka'],
File[$log_dirs],
- ],
- hasrestart => true,
- hasstatus => true,
+ # This will be an empty array if we
+ # aren't using systemd.
+ $kafka_service_systemd_require,
+ ]
}
}
diff --git a/templates/kafka.default.erb b/templates/kafka.default.erb
index c13b29e..7fedb5b 100644
--- a/templates/kafka.default.erb
+++ b/templates/kafka.default.erb
@@ -26,7 +26,13 @@
#CLASSPATH=""
<% end -%>
+<%
+# This ulimit setting here only works with SysV init scripts, not with
+# systemd on newer Debian distros. You'll need to use a systemd override
+# file if you want to set this with systemd.
+if not @use_systemd -%>
KAFKA_NOFILES_ULIMIT=<%= @nofiles_ulimit %>
+<% end -%>
# The default JMX_PORT for Kafka Brokers is 9999.
# Set JMX_PORT to something else to override this.
diff --git a/templates/kafka.systemd.override.conf.erb
b/templates/kafka.systemd.override.conf.erb
new file mode 100644
index 0000000..e2d37f0
--- /dev/null
+++ b/templates/kafka.systemd.override.conf.erb
@@ -0,0 +1,4 @@
+[Service]
+
+# Increase limit on number of open files.
+LimitNOFILE=<%= @nofiles_ulimit %>
--
To view, visit https://gerrit.wikimedia.org/r/232319
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I10f41d0d3a19b15374ded800f0d6cd12573c9fa9
Gerrit-PatchSet: 7
Gerrit-Project: operations/puppet/kafka
Gerrit-Branch: master
Gerrit-Owner: Ottomata <[email protected]>
Gerrit-Reviewer: Ottomata <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits