#!/bin/sh # # 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. # # # Start a cluster of brokers on local host, put the list of host port addresses # in cluster.ports # # Arguments: [-k] [-p port] HOST [HOST...] # -p port to start broker on, can be 0. Actual ports recorded in cluster.addr. # -k kill any qpidd processes owned by this user before starting. # # Start a broker on each named host. Name a host twice to start multiple brokers. # # You must be able to ssh to each host and be in group ais. # $QPIDD must be executable on each host. # Logs go to syslog on each host, with a unique prefix per broker. # QPIDD=${QPIDD:-$PWD/../qpidd} LIBQPIDCLUSTER=${LIBQPIDCLUSTER:-$PWD/../.libs/cluster.so} NAME=$USER # User name is default cluster name. RESTART=NO while getopts "kp:n:q:r" ARG ; do case $ARG in k) KILL=yes ;; p) PORT="$OPTARG" ;; n) NAME=$OPTARG ;; q) QPIDD=$OPTARG ;; l) LIBQPIDCLUSTER=$OPTARG ;; r) RESTART=yes ;; *) echo "Error parsing options: $ARG"; exit 1 ;; esac done shift `expr $OPTIND - 1` test -n "$PORT" && PORTOPT="-p $PORT" test "$KILL" = yes && KILL="$QPIDD --no-module-dir -q $PORTOPT ;" CLUSTER=${*:-$CLUSTER} # Use args or env test -z "$CLUSTER" && { echo Must specify at least one host; exit 1; } OPTS="-d $PORTOPT --load-module $LIBQPIDCLUSTER --cluster-name=$NAME --no-data-dir --auth=no --log-to-syslog --log-enable=info+" num=0 for h in $CLUSTER; do num=`expr $num + 1` # Give a unique log prefix to each node. cmd="$KILL $QPIDD $OPTS --log-prefix $num.$h" out=`echo "$cmd" | ssh $h newgrp ais` || { echo == $h error: $out ; exit 1; } if [ "$PORT" = 0 ] ; then p=$out; else p=$PORT; fi echo "$h $p" done