美文网首页
过载保护脚本

过载保护脚本

作者: 乔伊斯 | 来源:发表于2017-05-20 18:12 被阅读0次

    #!/bin/bash

    ##create date 20170518

    ##write by swx420528

    ##version 1.0

    ##overload_protection.sh

    ##use for GenexCloud Riak-CS proxy(nginx)

    ##Nginx 部署路径

    nginx_home_path=/opt/nginx

    ##限制阀值和解除限制阀值

    limit_threshold=95

    open_threshold=85

    ##riak-cs node 存储挂载目录

    riak_mount_dir='/mnt'

    ##check account

    if [ "`whoami`" != "root" ];then

    echo "Please  execuse this script with paas account..."

    exit 0

    fi

    ##get riak-cs cluster node IP address

    riak_node_iplist=`cat $nginx_home_path/conf/nginx.conf|grep 8080|awk -F: '{print $1}'|awk '{print $2}'`

    ##检查是否已安装ansible,未安装则退出,并记录日志

    ##检查tmp目录是否存在,则创建

    ##获取每个node的磁盘使用率,并记录在临时文件

    for i in $riak_node_iplist

    do

    ansible $i -m command -a 'df'|grep $riak_mount_dir|awk '{print $5}' | sed -ne 2p | cut -d"%" -f1 >> /tmp/riak_node_disk_useage

    done

    ##get disk usage,取最大值为

    used_rate=`cat /tmp/riak_node_disk_useage|sort -rn|head -1`

    ##获取 PUT_flag 值,0表示已限制PUT请求,1表示未限制PUT请求

    cat $nginx_home_path/conf/nginx.conf|grep "$request_method = PUT"|grep -v "#"

    PUT_flag="$?"

    ##判断如果磁盘使用率超过阈值,且nginx未做PUT限制,在nginx配置文件增加PUT限制的配置并reload nginx服务

    if [ "$used_rate" -ge "$limit_threshold" ] && [ "$PUT_flag" = "1" ];then

    sed -i '/location \//a\            if ( $request_method = PUT ) { return 403; }' $nginx_home_path/conf/nginx.conf

    $nginx_home_path/sbin/nginx -s reload

    fi

    ##判断如果磁盘使用率低于解除限制阈值,且nginx已做PUT限制,在nginx配置文件删除PUT限制的配置并reload nginx服务

    if [ "$used_rate" -le "$open_threshold" ] && [ "$PUT_flag" = "0" ];then

    sed -i '/$request_method = PUT/d' $nginx_home_path/conf/nginx.conf

    $nginx_home_path/sbin/nginx -s reload

    fi

    相关文章

      网友评论

          本文标题:过载保护脚本

          本文链接:https://www.haomeiwen.com/subject/teppxxtx.html