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;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.