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
