• keepalived+nginx配置文件及检查nginx服务的脚本


    脚本一启动的速度要快一些哦,因为脚本二要判断两次以后才启动哎

    这两个一般配合keepalived使用

    脚本一:

    #!/bin/bash
    #author:fansik
    #description:check nginx service
    
    run=`ps -C nginx --no-header | wc -l`
    if [ $run -eq 0 ]
    then
            /etc/rc.d/init.d/nginx start
            sleep 3
    fi

    脚本二:

    #!/bin/bash
    #author:fansik
    #description:check nginx service
    
    count=0
    for (( k=0; k<2; k++ ))
    do
        check_code=$( curl --connect-timeout 3 -sL -w "%{http_code}\n" http://localhost/index.html -o /dev/null )
        if [ "$check_code" != "200" ]; then
            count=$(expr $count + 1)
            sleep 3
            continue
        else
            count=0
            break
        fi
    done
    if [ "$count" != "0" ]; then
       /etc/init.d/nginx start
        exit 1
    else
        exit 0
    fi

    keepalived的配置文件/etc/init.d/keepalived.conf:主配置文件如下,从配置文件将MASTER改成BACKUP,双主模型的时候在添加一个vrrp_instance VI_1主里面变成BACKUP,从里面变成MASTER,virtual_router_id变一下

    ! Configuration File for keepalived
    global_defs {
       notification_email {
         root@localhost
       }
       notification_email_from fanjb@localhost
       smtp_server 127.0.0.1
       smtp_connect_timeout 30
       router_id LVS_DEVEL
    }
    vrrp_script chk_nginx {
        script "/etc/keepalived/nginx1.sh"
        interval 1
        weight -2
        fall 2
        rise 1
    }
    
    vrrp_script chk_notify {
        script "/etc/keepalived/chk_nginx.sh"
        interval 1
        weight -2
    }
    vrrp_instance VI_1 {
        state BACKUP
        interface eth0
        virtual_router_id 51
        priority 99
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            10.10.10.250
        }
        track_script {
            chk_nginx
            chk_notify
        }   
        notify_master "/etc/keepalived/notify.sh master"
        notify_backup "/etc/keepalived/notify.sh backup"
        notify_fault "/etc/keepalived/notify.sh fault"
    }

    通知脚本:/etc/keepalived/nodify.sh

    #!/bin/bash
    #author:fansik
    #description:check nging status
    
    vip=10.10.10.250
    contact='root@localhost'
    
    notify() {
        mailsubject="`hostname` to be $1:$vip floating"
        mailbody="`date '+%F %H:%M:%S'`: vrrp transition, `hostname` change to be $1"
        echo $mailbody | mail -s "$mailsubject" $contact
    }
    
    case "$1" in
        master)
            notify master
            exit 0  
            ;;      
        backup)
            notify backup
            exit 0  
            ;;      
        fault)
            notify fault
            exit 0  
            ;;      
        *)  
            echo "Usage:`basename $0` {master|backup|fault}"
            exit 1  
            ;;      
    esac
  • 相关阅读:
    TypeScript入门( 一)
    PureComponent: setState未触发render渲染
    再次了解深浅拷贝问题
    关于wepack2.0报错问题
    ES7及ES8的新特性
    闭包
    setState是异步还是同步?
    SQL注入测试之DVWA环境
    i春秋实验--struts2远程命令执行S2-045漏洞利用与修复
    i春秋实验--IIS写权限漏洞利用
  • 原文地址:https://www.cnblogs.com/fansik/p/6248684.html
Copyright © 2020-2023  润新知