You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by si...@apache.org on 2013/03/18 00:40:07 UTC

svn commit: r1457598 - in /zookeeper/bookkeeper/trunk: CHANGES.txt bookkeeper-server/bin/bookkeeper-cluster.sh

Author: sijie
Date: Sun Mar 17 23:40:07 2013
New Revision: 1457598

URL: http://svn.apache.org/r1457598
Log:
BOOKKEEPER-573: Script to start a bookkeeper cluster (ivank via sijie)

Added:
    zookeeper/bookkeeper/trunk/bookkeeper-server/bin/bookkeeper-cluster.sh
Modified:
    zookeeper/bookkeeper/trunk/CHANGES.txt

Modified: zookeeper/bookkeeper/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/CHANGES.txt?rev=1457598&r1=1457597&r2=1457598&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/CHANGES.txt (original)
+++ zookeeper/bookkeeper/trunk/CHANGES.txt Sun Mar 17 23:40:07 2013
@@ -48,6 +48,8 @@ Trunk (unreleased changes)
 
       BOOKKEEPER-585: Auditor logs noisily when a ledger has been deleted (ivank via sijie)
 
+      BOOKKEEPER-573: Script to start a bookkeeper cluster (ivank via sijie)
+
 Release 4.2.0 - 2013-01-14
 
   Non-backward compatible changes:

Added: zookeeper/bookkeeper/trunk/bookkeeper-server/bin/bookkeeper-cluster.sh
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/bin/bookkeeper-cluster.sh?rev=1457598&view=auto
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/bin/bookkeeper-cluster.sh (added)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/bin/bookkeeper-cluster.sh Sun Mar 17 23:40:07 2013
@@ -0,0 +1,135 @@
+#!/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.
+# */
+
+
+BINDIR=`dirname "$0"`
+BK_HOME=`cd $BINDIR/..;pwd`
+if [ -f $BK_HOME/conf/bkenv.sh ]
+then
+ . $BK_HOME/conf/bkenv.sh
+fi
+
+BKCFG=$BK_HOME/conf/bk_server.conf
+CLUSTER=$BK_HOME/conf/bookies
+usage() {
+    cat <<EOF
+Usage: bookkeeper-cluster.sh (start|stop|kill)
+
+The list of hosts in the cluster must be available in
+$CLUSTER
+with one hostname per line.
+
+BookKeeper must be installed in the same location on each host.
+EOF
+}
+
+if [ ! -f $CLUSTER ]; then
+    echo -e "\nCluster file ($CLUSTER) does not exist\n"
+    usage
+    exit 1
+fi
+
+NUMHOSTS=$(wc -l $CLUSTER | awk '{print $1}')
+if [ "$NUMHOSTS" = "0" ]; then
+    echo -e "\nCluster file ($CLUSTER) is empty\n"
+    usage
+    exit 1
+fi
+
+bookies_list() {
+    $BINDIR/bookkeeper shell listbookies 2> /dev/null
+}
+
+bookies_available() {
+    bookies_list | wc -l
+}
+
+start() {
+    for B in `cat $CLUSTER`; do
+	echo "Starting bookie on $B"
+	ssh $B $BINDIR/bookkeeper-daemon.sh start bookie
+    done
+
+    BOOKIESSTARTED=0
+    COUNT=0
+
+    while [ $BOOKIESSTARTED -lt $NUMHOSTS ];  do
+	sleep 1
+	COUNT=$(($COUNT+1))
+	if [ $COUNT = 20 ]; then
+	    echo "Could not start all bookies"
+	    exit 1
+	fi
+
+	BOOKIESSTARTED=$(bookies_available)
+
+	echo "$BOOKIESSTARTED bookies started"
+    done
+}
+
+stop() {
+    for B in `cat $CLUSTER`; do
+	echo "Stopping bookie on $B"
+	ssh $B $BINDIR/bookkeeper-daemon.sh stop bookie $FORCE
+    done
+
+    COUNT=0
+    BOOKIESSTARTED=$NUMHOSTS
+    while [ $BOOKIESSTARTED -gt 0 ];  do
+	sleep 1
+	
+	COUNT=$((COUNT+1))
+	if [ $COUNT = 20 ]; then
+	    echo "Couldn not stop all bookies. $BOOKIESSTARTED still running"
+	    exit 2
+	fi
+
+	BOOKIESSTARTED=$(bookies_available)
+    done
+}
+
+status() {
+    BOOKIESSTARTED=$(bookies_available)
+    echo "$BOOKIESSTARTED bookies running"
+    COUNT=1
+    for b in $(bookies_list); do
+	echo "$COUNT: $b"
+	COUNT=$(($COUNT+1))
+    done
+}
+
+case $1 in
+    start)
+	start
+	;;
+    stop)
+	stop
+	;;
+    kill)
+	FORCE="-force"
+	stop
+	;;
+    status)
+	status
+	;;
+    *)
+	usage
+	;;
+esac