分发器上的会话代理进程控制脚本使用说明

 

分发器上的会话代理进程控制脚本使用说明

分发器上部署了三个会话代理进程:
        a. ans_lb_web_80 : 代理服务器的HTTP 80端口服务,WEB客户端的HTTP请求被我司的代理程序复制三份,分别发给三台WEB服务器。只要有一台WEB服务器工作正常,则客户端的HTTP请求就可以正常响应。
        b. ans_lb_fsvr_8086 :  代理服务器的HTTP 8086端口服务,Windows客户端上,用户点击打印后,上传的文件将被我司的代理程序复制三份,分别发给三台服务器,可以查看服务器均存在上传文件,以及审批记录里面可以查看到此次打印的文件记录。只要有一台服务器工作正常,则Windows客户端用户,就可以正常上传打印文件。
        c. ans_lb_fsvr_18001 : 代理服务器的TCP 18001端口服务,Linux客户端上,用户点击打印后,上传的文件将被我司的代理程序复制三份,分别发给三台服务器,可以查看服务器均存在上传文件,以及审批记录里面可以查看到此次打印的文件记录。只要有一台服务器工作正常,则Linux客户端用户,就可以正常上传打印文件。
 
会话代理进程部署的目录为: /opt/ans
目录结构如下图所示:
文件 ans_lb_rproxy_ctl.sh 是控制脚本
目录结构一定要和下图相同,否则控制脚本会工作不正常。

 

1. 设置会话代理进程开机自启动。
在 /etc/rc.local 中增加以下内容。必须放在 exit 0 的前面。
# Startup ans_lb_rproxy
/opt/ans/ans_lb_rproxy_ctl.sh restart
 
/etc/rc.local 内容如下图所示:

 

重启系统,验证会话代理程序是否正常启动。
可以使用命令进行查询这状态:sudo /opt/ans/ans_lb_rproxy_ctl.sh status
或者使用命令查询进程是否存在: sudo ps -waux | grep ans_lb_

 

2. 会话代理进程控制脚本使用
 
查看帮助信息:sudo /opt/ans/ans_lb_rproxy_ctl.sh help

 

查看会话代理进程的状态:sudo /opt/ans/ans_lb_rproxy_ctl.sh status

 

停止会话代理进程:sudo /opt/ans/ans_lb_rproxy_ctl.sh stop

 

启动会话代理进程:sudo /opt/ans/ans_lb_rproxy_ctl.sh start

 

重启会话代理进程:sudo /opt/ans/ans_lb_rproxy_ctl.sh restart

 

附录:

 

1. 会话代理控制脚本内容

#!/usr/bin/env bash
#filename: ans_lb_rproxy_ctl.sh

cur_dir=`pwd`
dir_name=`dirname $0`
base_name=`basename $0`
ans_uid=`id -u`

usage_rproxy()
{
    echo "Usage: sudo $base_name [start|stop|restart|staus|help]"
    echo "    start    --  Start program."
    echo "    stop     --  Stop program."
    echo "    restart  --  Restart program."
    echo "    status   --  Display service status."
    echo "    help     --  Display help information."
    return 0
}

invoke_sudo() 
{
    if [ $ans_uid -ne 0 ]; then
        sudo id > /dev/null 2>/dev/null
        if [ $? -ne 0 ]; then
            echo "Error: Elevate permissions failed."
            return 1
        fi
    fi
    
    return 0
}

start_rproxy_ans_lb_web_80()
{
    invoke_sudo
    if [ $? -ne 0 ]; then
        echo "Error: Permission denied."
        return 1
    fi
    
    echo "Start program ans_lb_web_80 ..."
    if [ -f ${dir_name}/ans_lb_web_80/ans_lb_web_80 -a -x ${dir_name}/ans_lb_web_80/ans_lb_web_80 -a -f ${dir_name}/ans_lb_web_80/app_web.json -a -r ${dir_name}/ans_lb_web_80/app_web.json ]; then
        sudo nohup ${dir_name}/ans_lb_web_80/ans_lb_web_80 -f ${dir_name}/ans_lb_web_80/app_web.json > /dev/null 2>/dev/null &
        if [ $? -ne 0 ]; then
            echo "Error: Program ans_lb_web_80 start failed."
            return 1
        else
            echo "Info: Program ans_lb_web_80 start successful."
            return 0
        fi
    else
        echo "Error: ans_lb_web_80 file permissions are incorrect or the directory is incorrect."
        return 1
    fi
    
}

start_rproxy_ans_lb_fsvr_8086()
{
    invoke_sudo
    if [ $? -ne 0 ]; then
        echo "Error: Permission denied."
        return 1
    fi
    
    echo "Start program ans_lb_fsvr_8086 ..."
    if [ -f ${dir_name}/ans_lb_fsvr_8086/ans_lb_fsvr_8086 -a -x ${dir_name}/ans_lb_fsvr_8086/ans_lb_fsvr_8086 -a -f ${dir_name}/ans_lb_fsvr_8086/app.json -a -r ${dir_name}/ans_lb_fsvr_8086/app.json ]; then
        sudo nohup ${dir_name}/ans_lb_fsvr_8086/ans_lb_fsvr_8086 -f ${dir_name}/ans_lb_fsvr_8086/app.json > /dev/null 2>/dev/null &
        if [ $? -ne 0 ]; then
            echo "Error: Program ans_lb_fsvr_8086 start failed."
            return 1
        else
            echo "Info: Program ans_lb_fsvr_8086 start successful."
            return 0
        fi
    else
        echo "Error: ans_lb_fsvr_8086 file permissions are incorrect or the directory is incorrect."
        return 1
    fi
    
}

start_rproxy_ans_lb_fsvr_18001()
{
    invoke_sudo
    if [ $? -ne 0 ]; then
        echo "Error: Permission denied."
        return 1
    fi
    
    echo "Start program ans_lb_fsvr_18001 ..."
    if [ -f ${dir_name}/ans_lb_fsvr_18001/ans_lb_fsvr_18001 -a -x ${dir_name}/ans_lb_fsvr_18001/ans_lb_fsvr_18001 -a -f ${dir_name}/ans_lb_fsvr_18001/app.json -a -r ${dir_name}/ans_lb_fsvr_18001/app.json ]; then
        sudo nohup ${dir_name}/ans_lb_fsvr_18001/ans_lb_fsvr_18001 -f ${dir_name}/ans_lb_fsvr_18001/app.json > /dev/null 2>/dev/null &
        if [ $? -ne 0 ]; then
            echo "Error: Program ans_lb_fsvr_18001 start failed."
            return 1
        else
            echo "Info: Program ans_lb_fsvr_18001 start successful."
            return 0
        fi
    else
        echo "Error: ans_lb_fsvr_18001 file permissions are incorrect or the directory is incorrect."
        return 1
    fi
    
}

start_rproxy()
{
    invoke_sudo
    if [ $? -ne 0 ]; then
        echo "Error: Permission denied."
        return 1
    fi
    
    local line_num start_retval
    start_retval=0
    line_num=`sudo ps -waux | grep ans_lb_web_80 | grep -v ans_lb_rproxy_ctl | grep -v grep | wc -l`
    if [ $line_num -ne 0 ]; then
        echo "Info: Program ans_lb_web_80 is already running."
    else
        start_rproxy_ans_lb_web_80
        if [ $? -ne 0 ]; then
            start_retval=$(( $start_retval + 1 ))
        else
            sleep 1
        fi
    fi
    
    line_num=`sudo ps -waux | grep ans_lb_fsvr_8086 | grep -v ans_lb_rproxy_ctl | grep -v grep | wc -l`
    if [ $line_num -ne 0 ]; then
        echo "Info: Program ans_lb_fsvr_8086 is already running."
    else
        start_rproxy_ans_lb_fsvr_8086
        if [ $? -ne 0 ]; then
            start_retval=$(( $start_retval + 1 ))
        else
            sleep 1
        fi
    fi
    
    line_num=`sudo ps -waux | grep ans_lb_fsvr_18001 | grep -v ans_lb_rproxy_ctl | grep -v grep | wc -l`
    if [ $line_num -ne 0 ]; then
        echo "Info: Program ans_lb_fsvr_18001 is already running."
    else
        start_rproxy_ans_lb_fsvr_18001
        if [ $? -ne 0 ]; then
            start_retval=$(( $start_retval + 1 ))
        else
            sleep 1
        fi
    fi
    
    if [ $start_retval -ne 0 ]; then
        echo "Info: Start failed."
        return 1
    fi
    
    echo "Info: Start successful."
    return 0
}

stop_rproxy_ans_lb_web_80()
{
    invoke_sudo
    if [ $? -ne 0 ]; then
        echo "Error: Permission denied."
        return 1
    fi
    
    echo "Stop program ans_lb_web_80 ..."
    sudo ps -waux | grep ans_lb_web_80 | grep -v grep | awk '{print $2}' | sudo xargs kill -9
    if [ $? -ne 0 ]; then
        echo "Error: Program ans_lb_web_80 stop failed."
        return 1
    else
        echo "Info: Program ans_lb_web_80 stop successful."
        return 0
    fi
    
}

stop_rproxy_ans_lb_fsvr_8086()
{
    invoke_sudo
    if [ $? -ne 0 ]; then
        echo "Error: Permission denied."
        return 1
    fi
    
    echo "Stop program ans_lb_fsvr_8086 ..."
    sudo ps -waux | grep ans_lb_fsvr_8086 | grep -v grep | awk '{print $2}' | sudo xargs kill -9
    if [ $? -ne 0 ]; then
        echo "Error: Program ans_lb_fsvr_8086 stop failed."
        return 1
    else
        echo "Info: Program ans_lb_fsvr_8086 stop successful."
        return 0
    fi
    
}

stop_rproxy_ans_lb_fsvr_18001()
{
    invoke_sudo
    if [ $? -ne 0 ]; then
        echo "Error: Permission denied."
        return 1
    fi
    
    echo "Stop program ans_lb_fsvr_18001 ..."
    sudo ps -waux | grep ans_lb_fsvr_18001 | grep -v grep | awk '{print $2}' | sudo xargs kill -9
    if [ $? -ne 0 ]; then
        echo "Error: Program ans_lb_fsvr_18001 stop failed."
        return 1
    else
        echo "Info: Program ans_lb_fsvr_18001 stop successful."
        return 0
    fi
    
}

stop_rproxy()
{
    invoke_sudo
    if [ $? -ne 0 ]; then
        echo "Error: Permission denied."
        return 1
    fi
    
    local line_num stop_retval
    stop_retval=0
    line_num=`sudo ps -waux | grep ans_lb_web_80 | grep -v ans_lb_rproxy_ctl | grep -v grep | wc -l`
    if [ $line_num -eq 0 ]; then
        echo "Info: Program ans_lb_web_80 is already stopped."
    else
        stop_rproxy_ans_lb_web_80
        if [ $? -ne 0 ]; then
            stop_retval=$(( $stop_retval + 1 ))
        else
            sleep 1
        fi
    fi
    
    line_num=`sudo ps -waux | grep ans_lb_fsvr_8086 | grep -v ans_lb_rproxy_ctl | grep -v grep | wc -l`
    if [ $line_num -eq 0 ]; then
        echo "Info: Program ans_lb_fsvr_8086 is already stopped."
    else
        stop_rproxy_ans_lb_fsvr_8086
        if [ $? -ne 0 ]; then
            stop_retval=$(( $stop_retval + 1 ))
        else
            sleep 1
        fi
    fi
    
    line_num=`sudo ps -waux | grep ans_lb_fsvr_18001 | grep -v ans_lb_rproxy_ctl | grep -v grep | wc -l`
    if [ $line_num -eq 0 ]; then
        echo "Info: Program ans_lb_fsvr_18001 is already stopped."
    else
        stop_rproxy_ans_lb_fsvr_18001
        if [ $? -ne 0 ]; then
            stop_retval=$(( $stop_retval + 1 ))
        else
            sleep 1
        fi
    fi
    
    if [ $stop_retval -ne 0 ]; then
        echo "Info: Stop failed."
        return 1
    fi
    
    echo "Info: Stop successful."
    return 0
}

restart_rproxy()
{
    invoke_sudo
    if [ $? -ne 0 ]; then
        echo "Error: Permission denied."
        return 1
    fi
    local line_num stop_retval start_retval;
    stop_retval=0
    start_retval=0
    line_num=`sudo ps -waux | grep ans_lb_web_80 | grep -v ans_lb_rproxy_ctl | grep -v grep | wc -l`
    if [ $line_num -ne 0 ]; then
        stop_rproxy_ans_lb_web_80
        if [ $? -ne 0 ]; then
            stop_retval=$(( $stop_retval + 1 ))
        else
            sleep 1
        fi
    fi
    
    line_num=`sudo ps -waux | grep ans_lb_fsvr_8086 | grep -v ans_lb_rproxy_ctl | grep -v grep | wc -l`
    if [ $line_num -ne 0 ]; then
        stop_rproxy_ans_lb_fsvr_8086
        if [ $? -ne 0 ]; then
            stop_retval=$(( $stop_retval + 1 ))
        else
            sleep 1
        fi
    fi
    
    line_num=`sudo ps -waux | grep ans_lb_fsvr_18001 | grep -v ans_lb_rproxy_ctl | grep -v grep | wc -l`
    if [ $line_num -ne 0 ]; then
        stop_rproxy_ans_lb_fsvr_18001
        if [ $? -ne 0 ]; then
            stop_retval=$(( $stop_retval + 1 ))
        else
            sleep 1
        fi
    fi
    
    if [ $stop_retval -ne 0 ]; then
        echo "Info: Can not stop program, the restart failed."
        return 1
    fi
    
    start_rproxy_ans_lb_web_80
    if [ $? -ne 0 ]; then
        start_retval=$(( $start_retval + 1 ))
    else
        sleep 1
    fi
    
    start_rproxy_ans_lb_fsvr_8086
    if [ $? -ne 0 ]; then
        start_retval=$(( $start_retval + 1 ))
    else
        sleep 1
    fi
    
    start_rproxy_ans_lb_fsvr_18001
    if [ $? -ne 0 ]; then
        start_retval=$(( $start_retval + 1 ))
    else
        sleep 1
    fi
    
    if [ $start_retval -ne 0 ]; then
        echo "Info: Can not start program, the restart failed."
        return 1
    fi
    
    echo "Info: Restart successful."
    return 0
}

status_rproxy()
{
    invoke_sudo
    if [ $? -ne 0 ]; then
        echo "Error: Permission denied."
        return 1
    fi
    
    echo "Service status information:"
    local ps_num
    ps_num=`sudo ps -waux | grep ans_lb_web_80 | grep -v ans_lb_rproxy_ctl | grep -v grep | wc -l`
    if [ $ps_num -eq 3 ]; then
        echo "    ans_lb_web_80 : [ Running ]"
    elif [ $ps_num -eq 0 ]; then
        echo "    ans_lb_web_80 : [ Stopped ]"
    else
        echo "    ans_lb_web_80 : [ Abnormal ]"
        echo "The program ans_lb_web_80 is abnormal. Please restart this program ans_lb_web_80."
    fi
    
    ps_num=`sudo ps -waux | grep ans_lb_fsvr_8086 | grep -v ans_lb_rproxy_ctl | grep -v grep | wc -l`
    if [ $ps_num -eq 3 ]; then
        echo "    ans_lb_fsvr_8086 : [ Running ]"
    elif [ $ps_num -eq 0 ]; then
        echo "    ans_lb_fsvr_8086 : [ Stopped ]"
    else
        echo "    ans_lb_fsvr_8086 : [ Abnormal ]"
        echo "The program ans_lb_fsvr_8086 is abnormal. Please restart this program ans_lb_fsvr_8086."
    fi
    
    ps_num=`sudo ps -waux | grep ans_lb_fsvr_18001 | grep -v ans_lb_rproxy_ctl | grep -v grep | wc -l`
    if [ $ps_num -eq 3 ]; then
        echo "    ans_lb_fsvr_18001 : [ Running ]"
    elif [ $ps_num -eq 0 ]; then
        echo "    ans_lb_fsvr_18001 : [ Stopped ]"
    else
        echo "    ans_lb_fsvr_18001 : [ Abnormal ]"
        echo "The program ans_lb_fsvr_18001 is abnormal. Please restart this program ans_lb_fsvr_18001."
    fi
    
    return 0
}

case $1 in
    "start")
        start_rproxy
        ;;
    "stop")
        stop_rproxy
        ;;
    "restart")
        restart_rproxy
        ;;
    "status")
        status_rproxy
        ;;
    "help")
        usage_rproxy
        exit 0
        ;;
    *)
        usage_rproxy
        exit 0
        ;;

esac

exit 0

 

2. 实验环境部署

 

============== End

 

posted @ 2018-10-24 16:34  lsgxeva  阅读(449)  评论(0编辑  收藏  举报