分发器上的会话代理进程控制脚本使用说明
分发器上部署了三个会话代理进程:
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