Skip to content

Instantly share code, notes, and snippets.

@mazgi
Last active August 29, 2015 14:04
Show Gist options
  • Save mazgi/37e859026e0c0f9decfd to your computer and use it in GitHub Desktop.
Save mazgi/37e859026e0c0f9decfd to your computer and use it in GitHub Desktop.
ZooKeeper on Gentoo
#!/sbin/runscript
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
description="ZooKeeper daemon"
ZOOKEEPER_NAME="${SVCNAME##*.}"
if [ -n "${ZOOKEEPER_NAME}" -a "${SVCNAME}" != "zookeeper" ]; then
description="${description} for ${ZOOKEEPER_NAME}"
ZOOKEEPER_PID="/var/run/zookeeper/zookeeper.${ZOOKEEPER_NAME}.pid"
ZOOKEEPER_CONF_DEFAULT="/etc/zookeeper/${ZOOKEEPER_NAME}.conf"
else
ZOOKEEPER_PID="/var/run/zookeeper/zookeeper.pid"
ZOOKEEPER_CONF_DEFAULT="/etc/zookeeper/zookeeper.conf"
fi
ZOOKEEPER_CONF="${ZOOKEEPER_CONF:-${ZOOKEEPER_CONF_DEFAULT}}"
ZOOKEEPER_EXEC="${ZOOKEEPER_EXEC:-/usr/local/cdh5/zookeeper/current/bin/zkServer.sh}"
LD_PRELOAD_OPTS=""
if [ -f "/usr/lib64/libjemalloc.so" ]; then
LD_PRELOAD_OPTS="/usr/lib64/libjemalloc.so"
fi
#depend() {
#}
start() {
ebegin "Starting ${SVCNAME}"
local piddir="${ZOOKEEPER_PID%/*}"
checkpath -d --owner zookeeper:zookeeper --mode 0755 "$piddir"
if [ $? -ne 0 ]; then
eerror "Directory $piddir for pidfile does not exist and cannot be created"
return 1
fi
start-stop-daemon \
--start \
--user zookeeper \
--pidfile "${ZOOKEEPER_PID}" \
--env LD_PRELOAD="${LD_PRELOAD_OPTS}" \
--env JAVA_OPTS="${JAVA_OPTS} -Xms4G -Xmx4G" \
--env JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=128m -XX:PermSize=32m" \
--env JAVA_OPTS="${JAVA_OPTS} -verbose:gc -Xloggc:/var/log/zookeeper/${ZOOKEEPER_NAME}.gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps" \
--env JAVA_OPTS="${JAVA_OPTS} -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=10M" \
--env JAVA_OPTS="${JAVA_OPTS} -Dcom.sun.management.jmxremote" \
--env ZOOPIDFILE="${ZOOKEEPER_PID}" \
--env ZOOKEEPER_HOME="/usr/local/cdh5/zookeeper/current" \
--env ZOOKEEPER_CONF="/etc/zookeeper" \
--env ZOOCFGDIR="/etc/zookeeper" \
--env CLASSPATH="${CLASSPATH}:/etc/zookeeper:/usr/local/cdh5/zookeeper/current/*:/usr/local/cdh5/zookeeper/current/lib/*" \
--env ZOO_LOG_DIR="/var/log/zookeeper" \
--env ZOO_LOG4J_PROP="DEBUG,ROLLINGFILE" \
--env JVMFLAGS="-Dzookeeper.log.threshold=DEBUG" \
--exec /bin/bash -- -c "exec ${ZOOKEEPER_EXEC} start > /var/log/zookeeper/${ZOOKEEPER_NAME}.console.log 2>&1"
eend $?
}
stop() {
ebegin "Stopping ${SVCNAME}"
start-stop-daemon \
--stop \
--pidfile "${ZOOKEEPER_PID}" \
--exec /bin/bash -- -c "exec ${ZOOKEEPER_EXEC} stop >> /var/log/zookeeper/${ZOOKEEPER_NAME}.console.log 2>&1"
eend $?
}
@mazgi
Copy link
Author

mazgi commented Jul 17, 2014

Download && extract files

$ curl -LO http://archive.cloudera.com/cdh5/cdh/5/zookeeper-3.4.5-cdh5.0.2.tar.gz
$ sudo tar xvfp zookeeper-3.4.5-cdh5.0.2.tar.gz -C /usr/local/cdh5/zookeeper/
$ cd /usr/local/cdh5/zookeeper && sudo ln -s zookeeper-3.4.5-cdh5.0.2 current
$ sudo chown -R zookeeper:zookeeper .

Create directorys

# mkdir -p /var/lib/zookeeper
# chown zookeeper:zookeeper /var/lib/zookeeper

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment