zoukankan      html  css  js  c++  java
  • keepalived双机热备实现故障时发送邮件通知

    目前项目已经采用nginx来实现负载均衡,但是nginx调度器只有一台,上次还意外的down机一次,导致整个服务应用全部瘫痪,这次准备再加一个调度器来实现站点高可用性,也就是常说的双机热备了。
    master: 192.168.1.241
    backup: 192.168.1.242
    漂移IP:192.168.1.243
    1,主备调度器都安装keepalived软件
    安装过程如下:
    ./configure --prefix=/usr/local/keepalived && make && make install
    cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
    cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
    mkdir /etc/keepalived
    cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
    cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
    service keepalived start
    可以先用命令 service keepalived start 启动进行测试,看进程能够启动,注意查看log.
    2,主调度器配置如下:
    ! Configuration File for keepalived
    global_defs {
        router_id LVS_DEVEL
    }
    vrrp_sync_group VG_1 {
        group {
            VI_1
        }
        notify_master /etc/keepalived/sendmail.pl
    }
    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.1.243
        }
    }
    2,备调度器配置如下:
    ! Configuration File for keepalived
    global_defs {
       router_id LVS_DEVEL
    }
    vrrp_sync_group VG_1 {
        group {
        VI_1
        }
        notify_master /etc/keepalived/sendmail.pl
    }
    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 {
            192.168.1.243
        }
    }
    3,发送邮件的perl脚本sendmail.pl内容如下:
    注意主备发送邮件的标题是不一致的,只要你能识别漂移IP在哪台服务器上即可。
    #!/usr/bin/perl -w
    use Net::SMTP_auth;
    use strict;
    my $mailhost = 'smtp.163.com';
    my $mailfrom = 'test@163.com';
    my @mailto   = ('123456@139.com');
    my $subject  = 'keepalived up on backup';
    my $text = "正文
    第二行位于此。";  
    my $user   = 'test@163.com';
    my $passwd = 'xxxxxxx';
    &SendMail();
    ##############################
    # Send notice mail
    ##############################
    sub SendMail() {
        my $smtp = Net::SMTP_auth->new( $mailhost, Timeout => 120, Debug => 1 )
          or die "Error.
    ";
        $smtp->auth( 'LOGIN', $user, $passwd );
        foreach my $mailto (@mailto) {
            $smtp->mail($mailfrom);
            $smtp->to($mailto);
            $smtp->data();
            $smtp->datasend("To: $mailto
    ");
            $smtp->datasend("From:$mailfrom
    ");
            $smtp->datasend("Subject: $subject
    ");
            $smtp->datasend("
    ");
            $smtp->datasend("$text
    
    "); 
            $smtp->dataend();
        }
        $smtp->quit;
    }

    说明:
    a、由于keeplived自带的发送邮件机制是个鸡肋,如果本地不启动25端口就无法实现邮件发送,就琢磨着能不能通过自定义脚本来实现,真的是很幸运,就采用了认证的方式。
    b、其他的配置说明就不详细讲了,网上很多资料。
    4,测试keepalived

    主备调度器都开启80端口,两台服务器上的测试内容不一致,这样更方便测试。


    ##########################

    #所需安装模块

    #use Net::SMTP

    #Authen::SASL

    ##########################

    #$stmp->auth('user','pass');

    #大部分SMTP服务器为了防止 spam /垃圾邮件,就需要用户验证身份。

    #此方法需要另外安装模块:Authen::SASL, 此模块可能系统不自带

    ##########################

    #Debug => 1

    #此段代码用于测试之用,所以开启了Debug,一般测试一次完毕,正式使用的话会关闭它。


    注:可在命令行界面直接执行:/etc/keepalived/sendmail.pl,看看能否发送邮件成功,如果失败的话则需要安装Net::SMTP_auth模块

    安装方法:

    yum -y install perl-CPAN
    cpan Net::SMTP_auth

  • 相关阅读:
    手把手教你利用create-nuxt-app脚手架创建NuxtJS应用
    初识NuxtJS
    webpack打包Vue应用程序流程
    用选择器代替表格列的筛选功能
    Element-UI
    Spectral Bounds for Sparse PCA: Exact and Greedy Algorithms[贪婪算法选特征]
    Sparse Principal Component Analysis via Rotation and Truncation
    Generalized Power Method for Sparse Principal Component Analysis
    Sparse Principal Component Analysis via Regularized Low Rank Matrix Approximation(Adjusted Variance)
    Truncated Power Method for Sparse Eigenvalue Problems
  • 原文地址:https://www.cnblogs.com/moqiang02/p/4061214.html
Copyright © 2011-2022 走看看