• Keeplived配置Nginx双机高可用


    一、简介
    不管是Keepalived还是Heartbeat做高可用,其高可用,都是站在服务器脚本去说的高可用,而不是服务的角度。
    也就是说,如果服务器DOWN机或者网络出现故障,高可用是可以实现自动切换的。如果运行的服务,比如Nginx挂掉
    这些高可用软件是意识不到的,需要自己写脚本去实现服务的切换。

    二、安装配置Keepalived

    复制内容到剪贴板
    代码:
    # ./configure
    # make
    # make install
    # cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
    # cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
    # cp /usr/local/sbin/keepalived /usr/bin/
    # chkconfig --add keepalived 
    # mkdir /etc/keepalived/
    # cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/

    编辑MASTER的主配置文件(MASTER: 1.1.1.1)

    复制内容到剪贴板
    代码:
    # vim /etc/keepalived/keepalived.conf

    ! Configuration File for keepalived

    global_defs {
       router_id LVS_DEVEL
    }
    vrrp_script chk_nginx {
            script "/opt/monnginx.sh"
            interval 2
            weight 2
    }

    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass mdnginx
        }
        virtual_ipaddress {
            1.1.1.100
        }
        track_script {
            chk_nginx
      }
    }

    编辑BACKUP的主配置文件(BACKUP:1.1.1.2)

    复制内容到剪贴板
    代码:
    # vim /etc/keepalived/keepalived.conf

    ! Configuration File for keepalived

    global_defs {
       router_id LVS_DEVEL
    }
    vrrp_script chk_nginx {
            script "/opt/monnginx.sh"
            interval 2
            weight 2
    }

    vrrp_instance VI_1 {
        state BACKUP
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass mdnginx
        }
        virtual_ipaddress {
            1.1.1.100
        }
        track_script {
            chk_nginx
      }
    }

    三、启动服务与脚本编写(主机和备机都要执行)

    复制内容到剪贴板
    代码:
    # service nginx start
    # service keepalived start

    编写监控Nginx的脚本

    复制内容到剪贴板
    代码:
    # vim /opt/monnginx.sh
    #!/bin/bash
    # author: honway.liu
    # date: 2013-03-15

    if [ $(ps -C nginx --no-header | wc -l) -eq 0 ]; then
            service nginx start
    fi
    sleep 3
    if [ $(ps -C nginx --no-header | wc -l) -eq 0 ]; then
            service keepalived stop
    fi

    改进脚本,加上报警功能。

    复制内容到剪贴板
    代码:
    # vim /opt/monnginx.sh

    #!/bin/bash
    # author: honway.liu
    # date: 2013-03-15
    IPADDR=$(ip addr show eth0|awk '{print $2}' | sed -n 3p)
    contact=(137XXXXXXXX@139.com)
    num=${#contact[@]}
    function email() {
    for ((i=0;i<num;i++));do
            echo "$IPADDR service problem" | mail -s "WARNING" ${contact[i]} -- -f gm100861@gmail.com
    done
    }

    if [ $(ps -C nginx --no-header | wc -l) -eq 0 ]; then
            service nginx start
    fi
    email

    sleep 3

    if [ $(ps -C nginx --no-header | wc -l) -eq 0 ]; then
            service keepalived stop
    email
    fi

    这里的报警使用的是139邮箱,在139邮箱里面设置有邮件的时候,通知到手机,并且以长短信的方式。
    需要开户本机的sendmail服务。

  • 相关阅读:
    wget 报错 OpenSSL: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failur
    zabbix 利用python脚本实现短信告警
    zabbix 利用python脚本实现钉钉告警
    linux安装python3
    软件系统的高可靠性衡量标准
    安装linux版zabbix客户端
    windows环境安装zabbix客户端
    linux下安装zabbix服务器
    centos6安装nginx
    CentOS6编译安装php5.3
  • 原文地址:https://www.cnblogs.com/Joans/p/4410297.html
Copyright © 2020-2023  润新知