diff options
author | Christophe Romain <christophe.romain@process-one.net> | 2015-11-20 14:52:36 +0100 |
---|---|---|
committer | Christophe Romain <christophe.romain@process-one.net> | 2015-11-20 14:52:36 +0100 |
commit | 4480749a52e6673bf58fcbae145197cd95363b4e (patch) | |
tree | 84f0149d2b855b90773550ad14e97a566b8331f2 /tools | |
parent | Merge pull request #840 from cenobites/mod_ping (diff) | |
parent | Allow longer command execution time (diff) |
Merge branch 'cluster_fix'
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/joincluster | 153 | ||||
-rwxr-xr-x | tools/leavecluster | 109 |
2 files changed, 0 insertions, 262 deletions
diff --git a/tools/joincluster b/tools/joincluster deleted file mode 100755 index 7db63993..00000000 --- a/tools/joincluster +++ /dev/null @@ -1,153 +0,0 @@ -#!/bin/sh - -# Add the current ejabberd node in a cluster - -# copyright (c) 2010-2015 ProcessOne - -# Return Code: -# 0 : groovy baby -# 10 : ejabberdctl not found -# 11 : erl not found -# 12 : erlc not found -# 20 : database dir can not be created -# 21 : database dir not writable -# 22 : temporary dir can not be created -# 30 : network issue -# 31 : node names incompatibility - -error() -{ - echo "Error: $1" >&2 - exit $2 -} - -[ -z $NO_WARNINGS ] && { - echo "--------------------------------------------------------------------" - echo "" - echo "ejabberd cluster configuration" - echo "" - echo "This ejabberd node will be configured for use in an ejabberd cluster." - echo "IMPORTANT: all local data from the database will be lost, and" - echo "cluster database will be initialized. All data from the master" - echo "node will be replicated to this one." - echo "" - echo "--------------------------------------------------------------------" - echo "Press any key to continue, or Ctrl+C to stop now" - read foo - echo "" -} - -[ $# -eq 0 ] && { - echo "Make sure you have a running remote master ejabberd node" - echo "Before continuing, you must copy the ~/.erlang.cookie file from" - echo "remote master node and check ejabberd.cfg compatibility." - echo "e.g. hosts definition must match on all nodes" - echo "" - echo "The remote master node name is defined as ERLANG_NODE into" - echo "ejabberdctl.cfg on that remote node." - echo "" - echo -n "Remote master node name: " - read REMOTE - echo "" -} || { - echo "Using passed parameter for remote master node name: $1" - REMOTE=$1 -} - -PA=/tmp/clustersetup_$$ -CTL=$(which ejabberdctl) -[ -x "$CTL" ] || { - HERE=`which "$0"` - BASE=`dirname $HERE`/.. - ROOTDIR=`cd $BASE; pwd` - PATH=$ROOTDIR/bin:$PATH - PA=$ROOTDIR/clustersetup_$$ - CTL=$(which ejabberdctl) -} -echo "Using commands:" -[ -x "$CTL" ] && echo $CTL || error "can't find ejabberdctl" 10 - -exec $CTL stop 2>/dev/null >/dev/null -ERLC=${ERL}c - -[ -x $ERL ] && echo $ERL || error "can't find erl" 11 -[ -x $ERLC ] && echo $ERLC || error "can't find erlc" 12 -echo "" - -NAME=-name -[ "$ERLANG_NODE" = "${ERLANG_NODE%.*}" ] && NAME=-sname -CLUSTERSETUP=clustersetup -CLUSTERSETUP_ERL=$PA/$CLUSTERSETUP.erl - -REMOTENAME=-name -[ "$REMOTE" = "${REMOTE%.*}" ] && REMOTENAME=-sname -[ "$REMOTENAME" = "$NAME" ] || { - echo "IMPORTANT!: node names are incompatible" - echo "Remote node name is $REMOTE" - echo "Local node name is $ERLANG_NODE" - echo "" - echo "Both node names must be short or fqdn names." - echo "Using short and fqdn names is impossible." - echo "" - error "incompatible node names" 31 -} - -set -o errexit -set -o nounset - -[ -d $SPOOL_DIR ] && rm -Rf $SPOOL_DIR/* || mkdir -p $SPOOL_DIR || error "$SPOOL_DIR cannot be created" 20 -[ -w $SPOOL_DIR ] || error "$SPOOL_DIR directory is not writable" 21 -mkdir -p $PA || error "$PA cannot be created" 22 -cd $PA -cat <<EOF > $CLUSTERSETUP_ERL --module($CLUSTERSETUP). - --export([start/0]). - -set_table_copy(Table, _Node, {badrpc, Reason}) -> - io:format("Error: cannot get storage type for table ~p on node $REMOTE:~n ~p~n",[Table, Reason]); -set_table_copy(Table, Node, Type) -> - io:format("setting table ~p to mode ~p~n",[Table, Type]), - case mnesia:add_table_copy(Table, Node, Type) of - {aborted, _} -> - mnesia:change_table_copy_type(Table, Node, Type); - _ -> - ok - end. - -set_tables({badrpc, Reason}) -> - io:format("ERROR: cannot get tables list on $REMOTE : ~p~n",[Reason]); -set_tables([]) -> - ok; -set_tables([schema | Tables]) -> - set_tables(Tables); -set_tables([s2s | Tables]) -> - set_tables(Tables); -set_tables([session | Tables]) -> - set_tables(Tables); -set_tables([Table | Tables]) -> - set_table_copy(Table, node(), - rpc:call('$REMOTE', mnesia, table_info, [Table, storage_type])), - set_tables(Tables). - -start() -> - io:format("~n",[]), - R = case net_adm:ping('$REMOTE') of - pong -> - set_table_copy(schema, node(), disc_copies), - set_tables(rpc:call('$REMOTE', mnesia, system_info, [tables])), - 0; - pang -> - io:format("node ~p is not reachable, please check epmd port, and FIREWALL_WINDOW ports~n", ['$REMOTE']), - 1 - end, - halt(R). -EOF - -$ERLC -o $PA $CLUSTERSETUP_ERL -$ERL $NAME $ERLANG_NODE -pa $PA $KERNEL_OPTS -mnesia extra_db_nodes "['$REMOTE']" dir "\"$SPOOL_DIR\"" -s mnesia -s $CLUSTERSETUP start -cd - -rm -Rf $PA - -echo "End." -echo "Check that there is no error in the above messages." diff --git a/tools/leavecluster b/tools/leavecluster deleted file mode 100755 index 73602044..00000000 --- a/tools/leavecluster +++ /dev/null @@ -1,109 +0,0 @@ -#!/bin/sh - -# Remove the current ejabberd node in a cluster - -# copyright (c) 2010-2015 ProcessOne - -# Return Code: -# 0 : groovy baby -# 10 : ejabberdctl not found -# 11 : erl not found -# 12 : erlc not found -# 22 : temporary dir can not be created - -error() -{ - echo "Error: $1" >&2 - exit $2 -} - -[ -z $NO_WARNINGS ] && { - echo "--------------------------------------------------------------------" - echo "" - echo "ejabberd cluster configuration" - echo "" - echo "This ejabberd node will be removed from the cluster." - echo "IMPORTANT: this node will be stopped. At least one other clustered" - echo "node must be running." - echo "" - echo "--------------------------------------------------------------------" - echo "Press any key to continue, or Ctrl+C to stop now" - read foo - echo "" -} - -PA=/tmp/clustersetup_$$ -CTL=$(which ejabberdctl) -[ -x "$CTL" ] || { - HERE=`which "$0"` - BASE=`dirname $HERE`/.. - ROOTDIR=`cd $BASE; pwd` - PATH=$ROOTDIR/bin:$PATH - PA=$ROOTDIR/clustersetup_$$ - CTL=$(which ejabberdctl) -} -echo "Using commands:" -[ -x "$CTL" ] && echo $CTL || error "can't find ejabberdctl" 10 - -exec $CTL stop 2>/dev/null >/dev/null -ERLC=${ERL}c - -[ -x $ERL ] && echo $ERL || error "can't find erl" 11 -[ -x $ERLC ] && echo $ERLC || error "can't find erlc" 12 -echo "" - -$CTL stopped - -CLUSTERSETUP=clustersetup -CLUSTERSETUP_ERL=$PA/$CLUSTERSETUP.erl - -set -o errexit -set -o nounset - -mkdir -p $PA || error "$PA cannot be created" 22 -cd $PA -cat <<EOF > $CLUSTERSETUP_ERL --module($CLUSTERSETUP). - --export([start/0]). - -del_table_copy(Table, Node) -> - case mnesia:del_table_copy(Table, Node) of - {aborted, Reason} -> io:format("Error: can not remove ~p table: ~p~n", [Table, Reason]); - _ -> io:format("table ~p removed from cluster~n", [Table]) - end. - -del_tables([],_) -> - ok; -del_tables([schema | Tables], Node) -> - del_tables(Tables, Node); -del_tables([Table | Tables], Node) -> - del_table_copy(Table, Node), - del_tables(Tables, Node). - -start() -> - io:format("~n",[]), - Removed = node(), - case mnesia:system_info(running_db_nodes)--[Removed] of - [] -> io:format("Error: no other node running in the cluster~n"); - Nodes -> - del_tables(mnesia:system_info(local_tables), Removed), - mnesia:stop(), - case rpc:call(hd(Nodes), mnesia, del_table_copy, [schema, Removed]) of - {badrpc,Reason} -> io:format("Error: can not unregister node ~p from cluster: ~p~n", [Removed, Reason]); - {aborted,Reason} -> io:format("Error: can not unregister node ~p from cluster: ~p~n", [Removed, Reason]); - {atomic, ok} -> - mnesia:delete_schema([Removed]), - io:format("node ~p removed from cluster~n", [Removed]) - end - end, - halt(0). -EOF - -$ERLC -o $PA $CLUSTERSETUP_ERL -$ERL $NAME $ERLANG_NODE -pa $PA $KERNEL_OPTS -mnesia dir "\"$SPOOL_DIR\"" -s mnesia -s $CLUSTERSETUP start -cd - -rm -Rf $PA - -echo "End." -echo "Check that there is no error in the above messages." |