Skip to content
Snippets Groups Projects
add-balancer.sh 2.83 KiB
Newer Older
benedikt.kroening's avatar
benedikt.kroening committed
#!/bin/bash
#
# Copyright (C) 2019 OX Software GmbH
# 
# This file is part of OX Automation.
#
# OX Automation is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OX Automation is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# 
# See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OX Automation. If not, see <http://www.gnu.org/licenses/>.
#
#
# Authors:
# Benedikt Kroening <benedikt.kroening@open-xchange.com>
#
set -e
SCRIPT_DIR="$( cd "$(dirname "$0")" ; pwd -P)"
# sourcing some commonly used functions and executing basic checks
source ${SCRIPT_DIR}/../../lib/common.bash
checkRootPrivileges
detectDistribution
# sourcing the default configuration to use
#source ${SCRIPT_DIR}/config/config
exportProperties ${SCRIPT_DIR}/../config
 
BALANCER_NAME=oxcluster
BALANCER_HOST="https://localhost:8009"
BALANCER_ROUTE=singlenode
benedikt.kroening's avatar
benedikt.kroening committed
BALANCER_PRIORITY=50
benedikt.kroening's avatar
benedikt.kroening committed

## Help text
show_usage() {
echo -n "
  $0 [OPTIONS]

benedikt.kroening's avatar
benedikt.kroening committed
    Available options:
      -n | --name <name>     Balancer name
      -b | --balancer <host> Balancer host
      -p | --priority <n>    Load priority of the balancer
      -r | --route <route>   The backend route name used when setting the node up
benedikt.kroening's avatar
benedikt.kroening committed

"
}

### reading config from command line; overriding defaults
POSITIONAL=()
while [[ $# -gt 0 ]]
do
key="$1"

case $key in
    -h|--help)
    show_usage
    exit 0
    shift
    ;;
    --debug)
    echo "WARNING: Debug flag set (--debug)"
    set -x
    shift
    ;;
    -n|--name)
    BALANCER_NAME="$2"
    shift
    shift
    ;;
    -b|--balancer)
    BALANCER_HOST="$2"
    shift
    shift
    ;;
benedikt.kroening's avatar
benedikt.kroening committed
    -p|--priority)
    BALANCER_PRIORITY="$2"
    shift
    shift
    ;;
benedikt.kroening's avatar
benedikt.kroening committed
    -r|--route)
    BALANCER_ROUTE="$2"
    shift
    shift
    ;;
    # -f|--file)
    # FILE_NAME="$2"
    # shift
    # shift
    # ;;
    *) # unknown option
    echo "Unknonwn option: $1"
    POSITIONAL+=("$1") # save it in an array for later
    shift 
    ;;
esac
done
set -- "${POSITIONAL[@]}" # restore positional parameters

benedikt.kroening's avatar
benedikt.kroening committed
FILE_NAME="${BALANCER_PRIORITY}_${BALANCER_NAME}-balancer.conf"
benedikt.kroening's avatar
benedikt.kroening committed

echo "Creating balancer at $FILE_NAME with following config:"
set | grep BALANCER_


echo "
<Proxy balancer://${BALANCER_NAME}>
  Order Deny,Allow
  Allow from all
  BalancerMember ${BALANCER_HOST} timeout=100 smax=0 ttl=60 retry=60 loadfactor=50 keepalive=On route=${BALANCER_ROUTE}
  ProxySet stickysession=JSESSIONID|jsessionid scolonpathdelim=On
  SetEnv proxy-initial-not-pooled
  SetEnv proxy-sendchunked
</Proxy>
" > "${HTTPD_CONF_PATH}/${FILE_NAME}"

apachectl restart