线上多服务管理工具实例剖析

公司线上对nginx、tomcat和jar包的java应用的服务管理脚本之前都是单独分离开的,这样子就造成了运维人员在跳板机上进行服务管理的时非常的不方便。特别是把这些服务管理框架纳入到自动化管理平台时,没有一个统一的服务管理接口去使用。

       因此,在空的时候,我就将多个服务的管理脚本融合在了一起,将他做成一个工具,这样子就减少了服务管理的杂乱。

       废话不说了,下面就是脚本内容,文章结尾我会简单介绍该脚本的思路。

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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#!/bin/bash
#
# 本脚本用来对系统上的多服务进行管理操作
# 目前仅支持nginx、tomcat和jar包类的java应用进行管理操作
# Written by sunsky
# Mail : 274546888@qq.com
# Date : 2014-11-26 15:00:00
#
 
 
function  USAGE {
     echo  -e  "\033[31m脚本名称: \033[37m"
     echo  "    $0"
     echo  -e  "\033[31m语法结构: \033[37m"
     echo  "    $0 {nginx|tomcat|*service} {start|stop|restart|status}"
     echo  -e  "\033[31m使用范例: \033[37m"
     echo  "    $0 nginx start"
     echo  "    $0 tomcat restart"
     echo  "    $0 vin-service status"
     echo  -e  "\033[31m注意事项: \033[37m"
     echo  "    1. 该脚本管理的目录必须遵循如下规则:"
     echo  "       a) nginx 部署路径必须能够通过 /usr/local/nginx 访问到"
     echo  "       b) tomcat 部署路径必须能够通过 /usr/local/tomcat 访问到"
     echo  "       c) service 类服务的部署路径必须能够通过 /home/apps/service类项目名/current/ 访问到"
     echo  "    2. \$1(服务类型)和\$2(操作)参数必须存在"
     exit  2
}
 
function  CAT_FUWU {
        if  [ -z $PID ]; then
            case  $SIGNAL  in
            start|restart)
                echo  "正在启动 $FUWU 服务"
            ;;
            stop)
                echo  "$FUWU 服务已经关闭"
                exit
            ;;
            status)
                echo  "$FUWU 服务处于关闭"
            ;;
            esac
        else
            case  $SIGNAL  in
            start)
                echo  "$FUWU 服务已经开启"
                exit  0
            ;;
            stop|restart)
                echo  "你所要杀掉的 $FUWU 服务对应的进程号为 $PID"
            ;;
            status)
                echo  "$FUWU 服务目前正在运行,对应的进程号为 $PID"
            ;;
            esac
        fi
}
 
function  KILL_FUWU {
     if  [[ $PID !=  ""  ]]; then
         for  in  $PID; do
             kill  $PID > /dev/null  2>&1
             sleep  3
             kill  -9 $PID > /dev/null  2>&1
         done
     fi
}
 
function  START_NGINX {
     /usr/local/nginx/sbin/nginx
     PID=` ps  -ef| awk   '$0~"nginx"&&$0~"master"&&$0!~"awk"{print $2}' `
     echo  "$FUWU 服务已经启动,它所对应的进程号为 $PID"
}
 
function  START_TOMCAT {
     /bin/bash  /usr/local/tomcat/bin/startup .sh >&  /dev/null
     PID=` ps  aux| awk   '$0~"java"&&$0~"tomcat"&&$0!~"awk"{print $2}' `
     echo  "$FUWU 服务已经启动,它所对应的进程号为 $PID"
}
 
function  START_SERVICE {
         /bin/bash  /home/apps/ $FUWU /current/startup .sh &
         PID=` ps  -ef| awk  '$0~"' $FUWU '"&&$0~"jar"&&$0!~"awk"{print $2}' `
         echo  "$FUWU 服务已经启动,它所对应的进程号为 $PID"
}
 
function  FUWU_LIST {
     case  $SIGNAL  in
     start)
         CAT_FUWU
         $1
     ;;
     stop)
         CAT_FUWU
         KILL_FUWU
     ;;
     restart)
         CAT_FUWU
         KILL_FUWU
         $1
     ;;
     status)
         CAT_FUWU
     ;;
     *)
         USAGE
     ;;
     esac
}
 
function  NGINX {
     PID=` ps  -ef| awk   '$0~"nginx"&&$0~"master"&&$0!~"awk"{print $2}' `
     FUWU_LIST START_NGINX
}
 
function  TOMCAT {
     PID=` ps  aux| awk   '$0~"java"&&$0~"tomcat"&&$0!~"awk"{print $2}' `
     FUWU_LIST START_TOMCAT
}
 
 
function  SERVICE {
     if  [ ! -f  /home/apps/ $FUWU /current/startup .sh ]; then
         USAGE
     fi
     PID=` ps  -ef| awk  '$0~"' $FUWU '"&&$0~"jar"&&$0!~"awk"{print $2}' `
     FUWU_LIST START_SERVICE
}
 
if  [ $ # -lt 2 ];then
      USAGE
fi
 
FUWU=$1
SIGNAL=$2
 
case  $1  in
nginx)
     NGINX
;;
tomcat)
     TOMCAT
;;
*service)
     SERVICE
;;
*)
     USAGE
;;
esac

        以上呢,就是整个脚本的内容了。

       在该脚本中,我将查看服务状态信息、杀掉服务和服务管理动作的操作做成了可重用的函数,而对启动每个应用的操作做成了单独的模块。虽然目前只是将nginx、tomcat和jar包类的java应用集成在了一起,但是后期如果有其它服务要加进来的话,也是非常的方便。

       下面对每个模块简单进行介绍:

1
2
3
4
5
6
7
8
9
10
USAGE           # 帮助模块喽
CAT_FUWU        # 用于在接收到用户操作时,判断服务当前状态并给予正确相应
KILL_FUWU       # 负责杀掉服务的公共模块
START_NGINX     # 负责启动NGINX应用的模块
START_TOMCAT    # 负责启动TOMCAT应用的模块
START_SERVICE   # 负责启动JAR包类的JAVA应用的模块
FUWU_LIST       # 负责响应单个服务操作的公共列表
NGINX           # 集合NGINX管理操作的模块
TOMCAT          # 集合TOMCAT管理操作的模块
SERVICE         # 集合JAR包类JAVA应用管理操作的模块

完毕

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值