Filippo Giunchedi has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/231512

Change subject: cassandra: WIP support for multiple instances
......................................................................

cassandra: WIP support for multiple instances

add support files for multiple instances, namely systemd service file and
customizations to honour a specific instance, if any.

Bug: T95253
Change-Id: I359cd7a27003f5109dc5c5ac95624e684a3e8bb8
---
A modules/cassandra/files/cassandra.in.sh
A modules/cassandra/files/[email protected]
A modules/cassandra/files/nodetool-instance
M modules/cassandra/manifests/logging.pp
M modules/cassandra/templates/cassandra-env.sh.erb
M modules/cassandra/templates/logback.xml.erb
6 files changed, 76 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/12/231512/1

diff --git a/modules/cassandra/files/cassandra.in.sh 
b/modules/cassandra/files/cassandra.in.sh
new file mode 100644
index 0000000..b0f2624
--- /dev/null
+++ b/modules/cassandra/files/cassandra.in.sh
@@ -0,0 +1,28 @@
+# this file is similar to the stock /usr/share/cassandra/cassandra.in.sh
+# but we are not setting CASSANDRA_CONF here, it'll be overridden
+CASSANDRA_HOME=/usr/share/cassandra
+
+# The java classpath (required)
+if [ -n "$CLASSPATH" ]; then
+    CLASSPATH=$CLASSPATH:$CASSANDRA_CONF
+else
+    CLASSPATH=$CASSANDRA_CONF
+fi
+
+for jar in /usr/share/cassandra/lib/*.jar; do
+    CLASSPATH=$CLASSPATH:$jar
+done
+
+for jar in /usr/share/cassandra/*.jar; do
+    CLASSPATH=$CLASSPATH:$jar
+done
+
+CLASSPATH="$CLASSPATH:$EXTRA_CLASSPATH"
+
+
+# set JVM javaagent opts to avoid warnings/errors
+if [ "$JVM_VENDOR" != "OpenJDK" -o "$JVM_VERSION" \> "1.6.0" ] \
+      || [ "$JVM_VERSION" = "1.6.0" -a "$JVM_PATCH_VERSION" -ge 23 ]
+then
+    JAVA_AGENT="$JAVA_AGENT -javaagent:$CASSANDRA_HOME/lib/jamm-0.3.0.jar"
+fi
diff --git a/modules/cassandra/files/[email protected] 
b/modules/cassandra/files/[email protected]
new file mode 100644
index 0000000..38b343c
--- /dev/null
+++ b/modules/cassandra/files/[email protected]
@@ -0,0 +1,16 @@
+[Unit]
+Description=distributed storage system for structured data
+
+[Service]
+User=cassandra
+PIDFile=/var/run/cassandra/cassandra-%i.pid
+LimitNOFILE=100000
+LimitMEMLOCK=infinity
+ExecStart=/usr/sbin/cassandra -p /var/run/cassandra/cassandra-%i.pid
+Environment="CASSANDRA_INCLUDE=/etc/cassandra.in.sh"
+Environment="CASSANDRA_CONF=/etc/cassandra-%i"
+Environment="CASSANDRA_INSTANCE=%i"
+
+[Install]
+# XXX add umbrella service or target to start/stop all instances
+WantedBy=network.target
diff --git a/modules/cassandra/files/nodetool-instance 
b/modules/cassandra/files/nodetool-instance
new file mode 100644
index 0000000..c49120a
--- /dev/null
+++ b/modules/cassandra/files/nodetool-instance
@@ -0,0 +1,12 @@
+#!/bin/sh
+# symlink to /usr/bin/nodetool-<instance> to address the respective cassandra
+# instance
+set -e
+set -u
+
+me=$(basename $0)
+instance=${me#*-}
+
+export CASSANDRA_INCLUDE=/etc/cassandra.in.sh
+export CASSANDRA_CONF=/etc/cassandra-${instance}
+exec nodetool "$@"
diff --git a/modules/cassandra/manifests/logging.pp 
b/modules/cassandra/manifests/logging.pp
index 1b2f54a..45b8e62 100644
--- a/modules/cassandra/manifests/logging.pp
+++ b/modules/cassandra/manifests/logging.pp
@@ -15,6 +15,7 @@
 # [*logstash_port*]
 #   The logstash logging server port number.
 
+# XXX is logback-tools.xml needed?
 class cassandra::logging(
     $logstash_host  = 'logstash1003.eqiad.wmnet',
     $logstash_port  = 11514,
diff --git a/modules/cassandra/templates/cassandra-env.sh.erb 
b/modules/cassandra/templates/cassandra-env.sh.erb
index b182f3c..10dcb05 100644
--- a/modules/cassandra/templates/cassandra-env.sh.erb
+++ b/modules/cassandra/templates/cassandra-env.sh.erb
@@ -199,9 +199,11 @@
 #JVM_OPTS="$JVM_OPTS -Xmn${HEAP_NEWSIZE}"
 JVM_OPTS="$JVM_OPTS -XX:+HeapDumpOnOutOfMemoryError"
 
-# set jvm HeapDumpPath with CASSANDRA_HEAPDUMP_DIR
+CASSANDRA_HEAPDUMP_DIR=<%= @heap_dump_dir %>
 if [ "x$CASSANDRA_HEAPDUMP_DIR" != "x" ]; then
-    JVM_OPTS="$JVM_OPTS 
-XX:HeapDumpPath=$CASSANDRA_HEAPDUMP_DIR/cassandra-`date +%s`-pid$$.hprof"
+    now=$(date +%s)
+    JVM_OPTS="$JVM_OPTS 
-XX:HeapDumpPath=$CASSANDRA_HEAPDUMP_DIR/java_${now}.hprof"
+    JVM_OPTS="$JVM_OPTS 
-XX:ErrorFile=$CASSANDRA_HEAPDUMP_DIR/hs_err_${now}.log"
 fi
 
 
@@ -247,7 +249,13 @@
 # JVM_OPTS="$JVM_OPTS -Xloggc:/var/log/cassandra/gc-`date +%s`.log"
 # If you are using JDK 6u34 7u2 or later you can enable GC log rotation
 # don't stick the date in the log name if rotation is on.
+
+<% if @instance_name -%>
+JVM_OPTS="$JVM_OPTS -Xloggc:/var/log/cassandra/gc-<%= @instance_name %>.log"
+<% else -%>
 JVM_OPTS="$JVM_OPTS -Xloggc:/var/log/cassandra/gc.log"
+<% end -%>
+
 JVM_OPTS="$JVM_OPTS -XX:+UseGCLogFileRotation"
 JVM_OPTS="$JVM_OPTS -XX:NumberOfGCLogFiles=10"
 JVM_OPTS="$JVM_OPTS -XX:GCLogFileSize=10M"
diff --git a/modules/cassandra/templates/logback.xml.erb 
b/modules/cassandra/templates/logback.xml.erb
index a50329d..515af90 100644
--- a/modules/cassandra/templates/logback.xml.erb
+++ b/modules/cassandra/templates/logback.xml.erb
@@ -20,12 +20,21 @@
 <configuration scan="true">
   <jmxConfigurator />
   <appender name="FILE" 
class="ch.qos.logback.core.rolling.RollingFileAppender">
+<% if @instance_name -%>
+    <file>${cassandra.logdir}/system-<%= @instance_name %>.log</file>
+    <rollingPolicy 
class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${cassandra.logdir}/system-<%= @instance_name 
%>.log.%i.zip</fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>40</maxIndex>
+    </rollingPolicy>
+<% else -%>
     <file>${cassandra.logdir}/system.log</file>
     <rollingPolicy 
class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
       <fileNamePattern>${cassandra.logdir}/system.log.%i.zip</fileNamePattern>
       <minIndex>1</minIndex>
       <maxIndex>40</maxIndex>
     </rollingPolicy>
+<% end -%>
 
     <triggeringPolicy 
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
       <maxFileSize>50MB</maxFileSize>

-- 
To view, visit https://gerrit.wikimedia.org/r/231512
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I359cd7a27003f5109dc5c5ac95624e684a3e8bb8
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Filippo Giunchedi <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to