-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgarbd_service.sh
92 lines (77 loc) · 2.24 KB
/
garbd_service.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/bin/bash
ROOT_ID=0
INTERNAL_PORT=4567
LOG_FILE=/var/log/garbd.log
BIND_IP="0.0.0.0"
prog="garbd"
[ $UID -ne $ROOT_ID ] && {
echo "You must run script under root permission"
exit 1
}
rpm -qa | grep galera > /dev/null 2>&1
status=$?
[ ! $status -eq 0 ] && {
echo "You don't have galera installation. You must run yum install galera first"
exit 2
}
which $prog > /dev/null 2>&1
status=$?
[ ! $status -eq 0 ] && {
echo "I cannot find $prog binary on your system in PATH"
exit 2
}
group=$1
node1=$2
node2=$3
if [ -z "$group" ]; then
echo "Usage: $0 \"<group>\" \"<ip node1>\" \"<ip node2>\" {start|stop|forceStop|status}"
exit 3
fi
if [ -z "$node1" ]; then
echo "Usage: $0 \"<group>\" \"<ip node1>\" \"<ip node2>\" {start|stop|forceStop|status}"
exit 3
fi
if [ -z "$node2" ]; then
echo "Usage: $0 \"<group>\" \"<ip node1>\" \"<ip node2>\" {start|stop|forceStop|status}"
exit 3
fi
start(){
garbd -a gcomm://${node1}:${INTERNAL_PORT},${node2}:${INTERNAL_PORT}?wait_prim=no -g ${group} -o gmcast.listen_addr=tcp://${BIND_IP}:${INTERNAL_PORT} --daemon --log ${LOG_FILE}
status=$?
[ $status -eq 0 ] && { echo "starting $prog service [OK]"; } || { echo "starting $prog service [NOT OK]"; }
}
stop(){
killall $prog > /dev/null 2>&1
status=$?
[ $status -eq 0 ] && { echo "stopping $prog service [OK]"; } || { echo "stopping $prog service [NOT OK]"; }
}
forceStop(){
ps -elf | grep $prog | grep -v "grep" | grep -v "${0}" | awk '{print $4}' | xargs kill -s SIGKILL
status=$?
[ $status -eq 0 ] && { echo "force stopping $prog service [OK]"; } || { echo "force stopping $prog service [NOT OK]"; }
}
status(){
ps -elf | grep $prog | grep -v "grep" > /dev/null 2>&1
status1=$?
netstat -tulpn | grep tcp | grep ${INTERNAL_PORT} > /dev/null 2>&1
status2=$?
[[ ! status1 -eq 0 || ! status2 -eq 0 ]] && { echo "$prog service is NOT RUNNING"; return; }
echo "$prog service is RUNNING"
}
case "$4" in
start)
start
;;
stop)
stop
;;
forceStop)
forceStop
;;
status)
status
;;
*)
echo "Usage: $0 \"<group>\" \"<ip node1>\" \"<ip node2>\" {start|stop|forceStop|status}"
exit 3
esac