--- /dev/null
+# Define some default values that can be overridden by system properties
+zookeeper.root.logger=INFO, CONSOLE
+zookeeper.console.threshold=INFO
+zookeeper.log.dir=/var/log/masterkey/lui
+zookeeper.log.file=zookeeper.log
+zookeeper.log.threshold=DEBUG
+zookeeper.tracelog.dir=/var/log/masterkey/lui
+zookeeper.tracelog.file=zookeeper_trace.log
+
+#
+# ZooKeeper Logging Configuration
+#
+
+# Format is "<default threshold> (, <appender>)+
+
+# DEFAULT: console appender only
+log4j.rootLogger=${zookeeper.root.logger}
+
+# Example with rolling log file
+#log4j.rootLogger=DEBUG, CONSOLE, ROLLINGFILE
+
+# Example with rolling log file and tracing
+#log4j.rootLogger=TRACE, CONSOLE, ROLLINGFILE, TRACEFILE
+
+#
+# Log INFO level and above messages to the console
+#
+log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
+log4j.appender.CONSOLE.Threshold=${zookeeper.console.threshold}
+log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
+log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n
+
+#
+# Add ROLLINGFILE to rootLogger to get log file output
+# Log DEBUG level and above messages to a log file
+log4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppender
+log4j.appender.ROLLINGFILE.Threshold=${zookeeper.log.threshold}
+log4j.appender.ROLLINGFILE.File=${zookeeper.log.dir}/${zookeeper.log.file}
+
+# Max log file size of 10MB
+log4j.appender.ROLLINGFILE.MaxFileSize=10MB
+# uncomment the next line to limit number of backup files
+#log4j.appender.ROLLINGFILE.MaxBackupIndex=10
+
+log4j.appender.ROLLINGFILE.layout=org.apache.log4j.PatternLayout
+log4j.appender.ROLLINGFILE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n
+
+
+#
+# Add TRACEFILE to rootLogger to get log file output
+# Log DEBUG level and above messages to a log file
+log4j.appender.TRACEFILE=org.apache.log4j.FileAppender
+log4j.appender.TRACEFILE.Threshold=TRACE
+log4j.appender.TRACEFILE.File=${zookeeper.tracelog.dir}/${zookeeper.tracelog.file}
+
+log4j.appender.TRACEFILE.layout=org.apache.log4j.PatternLayout
+### Notice we are including log4j's NDC here (%x)
+log4j.appender.TRACEFILE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L][%x] - %m%n
--- /dev/null
+tickTime=2000
+dataDir=/var/lib/masterkey/lui/zookeeper
+clientPort=2181
+# initLimit=5
+# syncLimit=2
+# server.1=zookeeper1:2888:3888
+# server.2=zookeeper2:2888:3888
+# server.3=zookeeper3:2888:3888
files
*.substvars
*.log
+*.debhelper
The Local Unified Index is a index that contains multiple logical indexes
(subdatabases). The underlying index is a Solr/Lucene 6 index configured
to use a specific LUI schema.
+
+Package: masterkey-lui-zookeeper
+Architecture: all
+Depends: openjdk-7-jdk, ${misc:Depends}
+Description: Local Unified Index (Zookeeper)
+ The Local Unified Index is a index that contains multiple logical indexes
+ (subdatabases). The underlying index is a Solr/Lucene 5 index configured
+ to use a specific LUI schema. This package provides an installation
+ of Apache Zookeeper suitable for a lui-solr cluster.
--- /dev/null
+#!/usr/bin/env bash
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This script should be sourced into other zookeeper
+# scripts to setup the env variables
+
+# We use ZOOCFGDIR if defined,
+# otherwise we use /etc/zookeeper
+# or the conf directory that is
+# a sibling of this script's directory
+
+ZOOBINDIR=/usr/share/masterkey/lui/zookeeper/bin
+ZOOKEEPER_PREFIX="${ZOOBINDIR}/.."
+ZOOCFGDIR=/etc/masterkey/lui/zookeeper
+ZOO_LOG_DIR=/var/log/masterkey/lui
+ZOOPIDDIR=/var/lib/masterkey/lui
+ZOOPIDFILE=${ZOOPIDDIR}/zookeeper_server.pid
+
+JMXDISABLE=1
+JVMFLAGS="-Xmx512m -Xms256m"
+
+if [ "x$ZOOCFGDIR" = "x" ]
+then
+ if [ -e "${ZOOKEEPER_PREFIX}/conf" ]; then
+ ZOOCFGDIR="$ZOOBINDIR/../conf"
+ else
+ ZOOCFGDIR="$ZOOBINDIR/../etc/zookeeper"
+ fi
+fi
+
+if [ "x$ZOOCFG" = "x" ]
+then
+ ZOOCFG="zoo.cfg"
+fi
+
+ZOOCFG="$ZOOCFGDIR/$ZOOCFG"
+
+if [ -f "$ZOOCFGDIR/java.env" ]
+then
+ . "$ZOOCFGDIR/java.env"
+fi
+
+if [ "x${ZOO_LOG_DIR}" = "x" ]
+then
+ ZOO_LOG_DIR="."
+fi
+
+if [ "x${ZOO_LOG4J_PROP}" = "x" ]
+then
+ ZOO_LOG4J_PROP="INFO,CONSOLE"
+fi
+
+if [ "$JAVA_HOME" != "" ]; then
+ JAVA="$JAVA_HOME/bin/java"
+else
+ JAVA=java
+fi
+
+#add the zoocfg dir to classpath
+CLASSPATH="$ZOOCFGDIR:$CLASSPATH"
+
+for i in "$ZOOBINDIR"/../src/java/lib/*.jar
+do
+ CLASSPATH="$i:$CLASSPATH"
+done
+
+#make it work in the binary package
+if [ -e "${ZOOKEEPER_PREFIX}"/share/zookeeper/zookeeper-*.jar ]; then
+ for i in "$ZOOKEEPER_PREFIX"/share/zookeeper/*.jar
+ do
+ CLASSPATH="$i:$CLASSPATH"
+ done
+else
+ #release tarball format
+ for i in "$ZOOBINDIR"/../zookeeper-*.jar
+ do
+ CLASSPATH="$i:$CLASSPATH"
+ done
+ for i in "$ZOOBINDIR"/../lib/*.jar
+ do
+ CLASSPATH="$i:$CLASSPATH"
+ done
+fi
+
+#make it work for developers
+for d in "$ZOOBINDIR"/../build/lib/*.jar
+do
+ CLASSPATH="$d:$CLASSPATH"
+done
+
+#make it work for developers
+CLASSPATH="$ZOOBINDIR/../build/classes:$CLASSPATH"
+
+case "`uname`" in
+ CYGWIN*) cygwin=true ;;
+ *) cygwin=false ;;
+esac
+
+if $cygwin
+then
+ CLASSPATH=`cygpath -wp "$CLASSPATH"`
+fi
+
+#echo "CLASSPATH=$CLASSPATH"
--- /dev/null
+etc/default
+usr/share/masterkey/lui/dist
+usr/share/doc/masterkey-lui-zookeeper
+etc/masterkey/lui/zookeeper
+var/log/masterkey/lui
+var/lib/masterkey/lui/zookeeper
--- /dev/null
+#! /bin/sh
+
+# init script for lui-zookeeper
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+### BEGIN INIT INFO
+# Provides: lui-zookeeper
+# Required-Start: $remote_fs $syslog
+# Required-Stop: $remote_fs $syslog
+# Default-Start: 2 3 4 5
+# Default-Stop:
+# Short-Description: Apache ZooKeeper server for Index Data Local Unified Index (LUI)
+### END INIT INFO
+
+set -e
+
+# /etc/init.d/lui-zookeeper: start and stop the Apache ZooKeeper daemon
+
+umask 022
+
+. /etc/default/masterkey-lui-zookeeper
+
+. /lib/lsb/init-functions
+
+check_privsep_dir() {
+ # Create the PrivSep empty dir if necessary
+ if [ ! -d ${ZOOPIDDIR} ]; then
+ mkdir -p ${ZOOPIDDIR}
+ chown lui-solr:lui-solr ${ZOOPIDDIR}
+ chmod 0775 ${ZOOPIDDIR}
+ fi
+}
+
+# Are we running from init?
+run_by_init() {
+ ([ "$previous" ] && [ "$runlevel" ]) || [ "$runlevel" = S ]
+}
+
+check_for_no_start() {
+ # forget it if we're trying to start, and /etc/masterkey/lui/zookeeper/zookeeper_not_to_be_run exists
+ if [ -e /etc/masterkey/lui/zookeeper/zookeeper_not_to_be_run ]; then
+ if [ "$1" = log_end_msg ]; then
+ log_end_msg 0
+ fi
+ if ! run_by_init; then
+ log_action_msg "Apache ZooKeeper server not in use (/etc/zookeeper/zookeeper_not_to_be_run)"
+ fi
+ exit 0
+ fi
+}
+
+export PATH="${PATH:+$PATH:}/usr/sbin:/usr/bin"
+
+case "$1" in
+ start)
+ check_for_no_start
+ check_privsep_dir
+ log_daemon_msg "Starting Apache ZooKeeper server" "zookeeper"
+ if start-stop-daemon --start --quiet --oknodo --pidfile ${ZOOPIDFILE} -c lui-solr -x ${ZOOKEEPER_PREFIX}/bin/zkServer.sh start; then
+ log_end_msg 0
+ else
+ log_end_msg 1
+ fi
+ ;;
+ stop)
+ log_daemon_msg "Stopping Apache ZooKeeper server" "zookeeper"
+ if start-stop-daemon --stop --quiet --oknodo --pidfile ${ZOOPIDFILE}; then
+ log_end_msg 0
+ else
+ log_end_msg 1
+ fi
+ ;;
+
+ restart)
+ check_privsep_dir
+ log_daemon_msg "Restarting Apache ZooKeeper server" "zookeeper"
+ start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile ${ZOOPIDFILE}
+ check_for_no_start log_end_msg
+ if start-stop-daemon --start --quiet --oknodo --pidfile ${ZOOPIDFILE} -c lui-solr -x ${ZOOKEEPER_PREFIX}/bin/zkServer.sh start; then
+ log_end_msg 0
+ else
+ log_end_msg 1
+ fi
+ ;;
+
+ try-restart)
+ check_privsep_dir
+ log_daemon_msg "Restarting Apache ZooKeeper server" "zookeeper"
+ set +e
+ start-stop-daemon --stop --quiet --retry 30 --pidfile ${ZOOPIDFILE}
+ RET="$?"
+ set -e
+ case $RET in
+ 0)
+ # old daemon stopped
+ check_for_no_start log_end_msg
+ if start-stop-daemon --start --quiet --oknodo --pidfile ${ZOOPIDFILE} -c lui-solr -x ${ZOOKEEPER_PREFIX}/bin/zkServer.sh start; then
+ log_end_msg 0
+ else
+ log_end_msg 1
+ fi
+ ;;
+ 1)
+ # daemon not running
+ log_progress_msg "(not running)"
+ log_end_msg 0
+ ;;
+ *)
+ # failed to stop
+ log_progress_msg "(failed to stop)"
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+
+ status)
+ status_of_proc -p ${ZOOPIDFILE} ${JAVA_HOME}/bin/java zookeeper && exit 0 || exit $?
+ ;;
+
+ *)
+ log_action_msg "Usage: /etc/init.d/lui-zookeeper {start|stop|restart|try-restart|status}"
+ exit 1
+esac
+
+exit 0
--- /dev/null
+dist/zookeeper-*.tar.gz usr/share/masterkey/lui/dist
+conf/zookeeper/* etc/masterkey/lui/zookeeper
+doc/* usr/share/doc/masterkey-lui-zookeeper
--- /dev/null
+#!/bin/sh -e
+
+case "$1" in
+ configure|upgrade)
+ # Set directory permissions
+ chown -R lui-solr:lui-solr /var/lib/masterkey/lui
+ chown -R lui-solr:lui-solr /var/log/masterkey/lui
+ # Unpack zookeeper tarball
+ cd /usr/share/masterkey/lui
+ tar xzf dist/zookeeper-3.4.6.tar.gz
+ ln -s zookeeper-3.4.6 zookeeper
+ mkdir -p zookeeper/libexec
+ ln -s /etc/default/masterkey-lui-zookeeper zookeeper/libexec/zkEnv.sh
+
+ # Automatically added by dh_installinit
+ if [ -x "/etc/init.d/masterkey-lui-zookeeper" ]; then
+ update-rc.d masterkey-lui-zookeeper defaults >/dev/null
+ invoke-rc.d masterkey-lui-zookeeper start || exit $?
+ fi
+ # End automatically added section
+
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+ ;;
+
+ *)
+ echo "postinst called with unknown argument '$1'" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
--- /dev/null
+#!/bin/sh -e
+
+case "$1" in
+ purge|remove)
+ # Remove Zookeeper installation
+ rm -f /usr/share/masterkey/lui/zookeeper
+ rm -rf /usr/share/masterkey/lui/zookeeper-*
+
+ # Automatically added by dh_installinit
+ if [ "$1" = "purge" ] ; then
+ update-rc.d masterkey-lui-zookeeper remove >/dev/null
+ fi
+
+
+ # In case this system is running systemd, we make systemd reload the unit files
+ # to pick up changes.
+ if [ -d /run/systemd/system ] ; then
+ systemctl --system daemon-reload >/dev/null || true
+ fi
+ # End automatically added section
+
+ ;;
+ upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+ ;;
+
+ *)
+ echo "postrm called with unknown argument \`$1'" >&2
+ exit 1
+esac
+
+exit 0
--- /dev/null
+#!/bin/sh -e
+
+case "$1" in
+ install|upgrade)
+ # Create the solr user
+ adduser --system --shell /bin/bash --group --disabled-password --home /var/lib/masterkey/lui lui-solr
+
+ # Automatically added by dh_installinit
+ if [ -x "/etc/init.d/masterkey-lui-zookeeper" ]; then
+ invoke-rc.d masterkey-lui-zookeeper stop || exit $?
+ fi
+ # End automatically added section
+
+ ;;
+
+ abort-upgrade)
+ ;;
+
+ *)
+ echo "preinst called with unknown argument '$1'" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
--- /dev/null
+#!/bin/sh -e
+
+case "$1" in
+ remove|upgrade|deconfigure)
+
+ # Automatically added by dh_installinit
+ if [ -x "/etc/init.d/masterkey-lui-zookeeper" ]; then
+ invoke-rc.d masterkey-lui-zookeeper stop || exit $?
+ fi
+ # End automatically added section
+
+ ;;
+
+ failed-upgrade)
+ ;;
+
+ *)
+ echo "prerm called with unknown argument '$1'" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
--- /dev/null
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+
+Vagrant.configure(2) do |config|
+ # Define and configure SolrCloud cluster
+ cloudservers = {
+ "solr1" => "192.168.2.4",
+ "solr2" => "192.168.2.5"
+ }
+
+ cloudservers.each do |server_name, server_ip|
+ config.vm.define server_name do |cloudconfig|
+ cloudconfig.vm.box = "debian/contrib-jessie64"
+ cloudconfig.vm.host_name = server_name.to_s
+ cloudconfig.vm.network "private_network", ip: server_ip
+ cloudconfig.vm.provision "ansible" do |ansible|
+ ansible.playbook = "solr.yml"
+ end
+ end
+ end
+
+ # Zookeeper node
+ config.vm.define "zookeeper" do |zookeeper|
+ zookeeper.vm.box = "debian/contrib-jessie64"
+ zookeeper.vm.host_name = "zookeeper"
+ zookeeper.vm.network "private_network", ip: "192.168.2.3"
+ zookeeper.vm.provision "ansible" do |ansible|
+ ansible.playbook = "zookeeper.yml"
+ end
+ end
+
+ # Load balancer node
+ # config.vm.define "loadbalancer" do |loadbalancer|
+ # loadbalancer.vm.box = "debian/contrib-jessie64"
+ # loadbalancer.vm.host_name = "loadbalancer"
+ # loadbalancer.vm.network "private_network", ip: "192.168.2.2"
+ # end
+
+ # Disable the default shared folder, share out project folder as /vagrant for all boxes
+ config.vm.synced_folder ".", "/vagrant", disabled: true
+ config.vm.synced_folder "..", "/vagrant"
+
+end
--- /dev/null
+---
+- hosts: all
+
+ vars:
+
+ tasks:
+ - name: Update apt-cache
+ become: yes
+ apt: update-cache=yes
+
+ - name: Install dependencies from apt
+ become: yes
+ apt: name={{ item }} state=present
+ with_items:
+ - openjdk-7-jdk
+
+ - name: Create deployment environment
+ become: yes
+ file: path={{ item }} state=directory
+ with_items:
+ - /usr/share/masterkey/lui
+ - /var/lib/masterkey/lui/solr/lui
+ - /var/log/masterkey/lui
+ - /etc/masterkey/lui
+
+ - name: Create lui-solr account
+ become: yes
+ user: name=lui-solr state=present system=yes home=/var/lib/masterkey/lui
+
+ - name: Update permissions on deployment directories
+ become: yes
+ file: path={{ item }} owner=lui-solr recurse=yes
+ with_items:
+ - /var/lib/masterkey/lui
+ - /var/log/masterkey/lui
+
+ - name: Link Solr configuration
+ become: yes
+ file: src=/vagrant/conf/solr path=/etc/masterkey/lui/solr state=link
+
+ - name: Link Solr defaults
+ become: yes
+ file: src=/etc/masterkey/lui/solr/lui-solr.in.sh path=/etc/default/lui-solr.in.sh state=link
+
+ - name: Install Solr binary
+ become: yes
+ command: /vagrant/dist/install_solr_service.sh /vagrant/dist/solr-5.5.1.tgz -d /var/lib/masterkey/lui -i /usr/share/masterkey/lui -s lui-solr -u lui-solr -f creates=/usr/share/masterkey/lui/solr-5.5.1
+
+ - name: Remove extra files created by Solr install
+ become: yes
+ file: path={{ item }} state=absent
+ with_items:
+ - /var/lib/masterkey/lui/log4j.properties
+ - /var/lib/masterkey/lui/logs
+ - /var/lib/masterkey/lui/data/solr.xml
--- /dev/null
+---
+- hosts: all
+
+ vars:
+
+ tasks:
+ - name: Update apt-cache
+ become: yes
+ apt: update-cache=yes
+
+ - name: Install dependencies from apt
+ become: yes
+ apt: name={{ item }} state=present
+ with_items:
+ - openjdk-7-jdk
+
+ - name: Create deployment environment
+ become: yes
+ file: path={{ item }} state=directory
+ with_items:
+ - /usr/share/masterkey/lui
+ - /var/lib/masterkey/lui/zookeeper
+ - /var/log/masterkey/lui
+ - /etc/masterkey/lui
+
+ - name: Create lui-solr account
+ become: yes
+ user: name=lui-solr state=present system=yes home=/var/lib/masterkey/lui
+
+ - name: Update permissions on deployment directories
+ become: yes
+ file: path={{ item }} owner=lui-solr recurse=yes
+ with_items:
+ - /var/lib/masterkey/lui
+ - /var/log/masterkey/lui
+
+ - name: Install Zookeeper
+ become: yes
+ unarchive: src=/vagrant/dist/zookeeper-3.4.6.tar.gz dest=/usr/share/masterkey/lui copy=no creates=/usr/share/masterkey/lui/zookeeper-3.4.6
+
+ - name: Link Zookeeper
+ become: yes
+ file: src=/usr/share/masterkey/lui/zookeeper-3.4.6 path=/usr/share/masterkey/lui/zookeeper state=link
+
+ - name: Create Zookeeper libexec directory
+ become: yes
+ file: path=/usr/share/masterkey/lui/zookeeper/libexec state=directory
+
+ - name: Link Zookeeper config
+ become: yes
+ file: src=/vagrant/conf/zookeeper path=/etc/masterkey/lui/zookeeper state=link
+
+ - name: Link Zookeeper defaults into /etc/default
+ become: yes
+ file: src=/vagrant/debian/masterkey-lui-zookeeper.default path=/etc/default/masterkey-lui-zookeeper state=link
+
+ - name: Link Zookeeper defaults into /usr/share/masterkey/lui/zookeeper/libexec
+ become: yes
+ file: src=/etc/default/masterkey-lui-zookeeper path=/usr/share/masterkey/lui/zookeeper/libexec/zkEnv.sh state=link
+
+ - name: Link init script
+ become: yes
+ file: src=/vagrant/debian/masterkey-lui-zookeeper.init path=/etc/init.d/masterkey-lui-zookeeper state=link
+
+ - name: Enable and start service
+ become: yes
+ service: name=masterkey-lui-zookeeper enabled=yes state=started