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

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

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

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

#!/bin/bash
#
# 本脚本用来对系统上的多服务进行管理操作
# 目前仅支持nginx、tomcat和jar包类的java应用进行管理操作
# Written by sunsky
# Mail : [email protected]
# 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 i 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应用集成在了一起,但是后期如果有其它服务要加进来的话,也是非常的方便。

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

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

下面附上脚本的执行效果图:

OK!以上就是脚本的内容,希望能对51博友有所帮助

时间: 2024-11-24 21:04:04

线上多服务管理工具实例剖析的相关文章

了解systemctl和chkconfig的服务管理工具

crontab计划任务 crontab计划任务的计时方式:对大部分时间单位都清楚的划分,具体可以划分到分钟,时间单位有分钟,小时,日(一个月内的第几天),月,周(一周的第几天,计划任务中可以是指定为每隔几周来执行某些任务) [[email protected] ~]# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # For details see man 4 crontabs #

已禁用对分布式事务管理器(MSDTC)的网络访问。请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问。

已禁用对分布式事务管理器(MSDTC)的网络访问.请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问. 此错误好像只有sql server2005才有,2008数据库以后版本就没有此错误了. 与基础事务管理器的通信失败. .net 代码里 写事务代码 如: using System.Transactions; using (TransactionScope ts = new TransactionScope()) { } ts.Complete(); DTC登陆账户为

Ubuntu 和 Redhat / Fedora 服务管理命令对比表(附Fedora16新的服务管理工具systemctl )

以 apache/httpd 服务作为例子 任务 Red Hat / Fedora Ubuntu Ubuntu (with sysv-rc-conf or sysvconfig) 立即启动/停止某服务 service httpd start invoke-rc.d apache start service apache start 启动时自动加载 chkconfig httpd on update-rc.d apache defaults sysv-rc-conf apache on 启动时不加

Mac OSX上的软件包管理工具,brew 即 Homebrew

brew 即 Homebrew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件, 只需要一个命令, 非常方便. brew类似ubuntu系统下的apt-get的功能. 安装brew: curl -LsSf http://github.com/mxcl/homebrew/tarball/master | sudo tar xvz -C/usr/local --strip 1 安装软件:brew install cgdb 卸载软件:brew uninstall cgdb

订单导出的预发和线上的自动化对比工具

问题与背景 订单导出需要将交易数据通过报表的形式导出并提供下载給商家,供商家发货.对账等.由于交易的场景非常多,承接多个业务(微商城.零售单店.零售连锁版.餐饮),订单类型很多,新老报表的字段覆盖交易.支付.会员.优惠.发货.退款.特定业务等,合计多达120个.每次代码变更(尤其是比较大的改动),如果想要手工验证指定时间段内的绝大多数场景下绝大多数订单类型的所有字段都没有问题,在前端页面点击下载报表,然后手工对比,将是非常大的工作量.因此,迫切需要一个自动化的对比工具,对比变更分支与线上分支的导

k8s原生微服务管理工具helm-v3的使用初探实践(1)

Helm-v3应用包管理器 3.1 为什么需要Helm?K8S上的应用对象,都是由特定的资源描述组成,包括deployment.service等.都保存各自文件中或者集中写到一个配置文件.然后kubectl apply –f 部署. 为什么使用helm?在k8s中,当我们去部署应用的时候,一般都是使用yaml文件去管理我们的应用的发布,比如像微服务,其中包括deployment,service,configmap,ingress,但是如果我们有上百个微服务的话,每次的修改涉及也都会比较多,感觉就

Linux服务管理(Ubuntu服务管理工具sysv-rc-conf)(转)

Ubuntu运行级别 Linux系统任何时候都运行在一个指定的运行级上,并且不同的运行级的程序和服务都不同,所要完成的工作和要达到的目的都不同,系统可以在这些运行级之间进行切换,以完成不同的工作. 运行级别(Runlevel)指的是Unix或者linux等类Unix操作系统下不同的运行模式. 运行级别通常分为7等,分别是从0到6,但如果必要的话也可以更多. 例如在大多数Linux操作系统下一共有如下6个典型的运行级别: 0 停机 1 单用户,Does not configure network

Webmin:Linux上的GUI管理工具

Webmin是一款基于Web界面的管理工具,通过浏览器进行访问.管理员可以在本地进行管理,也可以在远程的客户端上进行访问.Webmin的各种管理功能完成对操作系统的相应管理动作,使很多原来需要命令完成的工作也可以在图形界面中进行,在Linux系统下得到了广泛的应用. 安装过程: [[email protected] tools]# rpm  -q  perl perl-5.10.1-136.el6_6.1.x86_64 [[email protected] tools]#wget http://

virgo-tomcat-server的生产环境线上配置与管理

Virgo Tomcat Server简称VTS,VTS是一个应用服务器,它是轻量级, 模块化, 基于OSGi系统.与OSGi紧密结合并且可以开发bundles形式的Spring web apps应用 他们同样拥有OSGi和Spring的特性.VTS由SpringSource 的Spring DM server过渡而来, virgo官网地址:http://www.eclipse.org/virgo Virgo Tomcat Server的心脏是Virgo Kernel简称VK. VK基于OSGi