Keepalived + Nginx 고가 용 실례

3446 단어
Keepalived + Nginx 고가 용 실례
주의사항:
1. VIP 는 서버 네트워크 설정 파일 에 설정 할 필요 가 없습니다.
2. nginx 메 인 을 사용 할 수 없 을 때 nginx 메 인의 keepalived 서 비 스 를 kill 해 야 VIP 전환 을 실현 할 수 있 습 니 다. 메 인의 keepalived 우선 순위 가 높 기 때 문 입 니 다.
3. 고장 전환 시 메 일 알림 을 보 내 는 것 은 nginx 가 준비 한 keepalived 서비스 로 이 루어 집 니 다.
그 중에서 nginx 주 상 keepalived. conf 설정 은:
/etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
#        
   router_id master
}

vrrp_script chk_nginx {  
    script "/etc/keepalived/nginx_check.sh"
    # 2     nginx     
    interval 2
    #    ,          -20
    weight    -20
} 

vrrp_instance VI_1 {
    #  ,    MASTER
    state MASTER
    #  VIP     
    interface ens33
    #     ID ,          
    virtual_router_id 51
    #     ,   0~254,MASTER>BACKUP
    priority 100
    #          ,          ,   1 
    advert_int 1
    #      ,        
    authentication {
            auth_type PASS
            auth_pass 1111
        }

    #  IP,          ,      
    virtual_ipaddress {
            192.168.1.106
        }
        #nginx        
    track_script {
        chk_nginx
    }
}

호출 된 / etc / keepalived / nginxcheck. sh 스 크 립 트 내용 은:
#!/bin/bash  
A=`ps -C nginx -no-header |wc -l`
if [ $A -eq 1 ];then
        pkill keepalived
fi

nginx 에서 keepalived. conf 설정:
! Configuration File for keepalived

global_defs {
        #        
        router_id backup
}

vrrp_instance VI_1 {
        #  ,    BACKUP
        state BACKUP
        #  VIP     
        interface ens33
        #     ID ,          
        virtual_router_id 51
        #     ,   0~254,MASTER>BACKUP
        priority 99
        #          ,          ,   1 
        advert_int 1
        #      ,        
        authentication {
                auth_type PASS
                auth_pass 1111
        }

        #    master   
        notify_master /etc/keepalived/send_mail.sh

        #  IP,          ,      
        virtual_ipaddress {
                192.168.1.106
        }

}

안에서 호출 된 sendmail. sh 스 크 립 트 는 Perl 을 사용 하기 위해 작성 되 었 습 니 다. 설치 환경 이 필요 합 니 다:
yum -y install perl-CPAN
cpan Net::SMTP_auth

send_mail. sh 스 크 립 트 내용 은:
#!/usr/bin/perl -w  
use Net::SMTP_auth;
use strict;#smtp   
my $mailhost = 'smtp.exmail.qq.com';#       
my $mailfrom = '[email protected]';#       
my @mailto   = ('[email protected]');#    
my $subject  = 'keepalived up on backup';#    
my $text = "  
nginx-1 !!nginx-2 master!!!";# my $user = '[email protected]';# my $passwd = '123456'; &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; }

좋은 웹페이지 즐겨찾기