Keepalived+Nginx高可用实例
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Keepalived+Nginx高可用实例,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2799字,纯文字阅读大概需要4分钟。
内容图文
![Keepalived+Nginx高可用实例](/upload/InfoBanner/zyjiaocheng/944/be1d3bb09b4a4da581f8bfe0c0f09469.jpg)
Keepalived+Nginx高可用实例
注意事项:
1、VIP不需要在服务器网络配置文件中配置。
2、nginx主不可用时,需要kill掉nginx主的keepalived服务,这样才可以实现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/nginx_check.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
}
}
里边调用的send_mail.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 = 'from@qq.com';#接收邮件的邮箱
my @mailto = ('to@qq.com');#邮件主题
my $subject = 'keepalived up on backup';#邮件正文
my $text = "正文\n nginx-1服务器宕机!!nginx-2变为master!!!";#发送邮件的用户名
my $user = 'from@qq.com';#发送邮件的邮箱密码
my $passwd = '123456';
&SendMail();
##############################
# Send notice mail
##############################
sub SendMail() {
my $smtp = Net::SMTP_auth->new( $mailhost, Timeout => 120, Debug => 1 )
or die "Error.\n";
$smtp->auth( 'LOGIN', $user, $passwd );
foreach my $mailto (@mailto) {
$smtp->mail($mailfrom);
$smtp->to($mailto);
$smtp->data();
$smtp->datasend("To: $mailto\n");
$smtp->datasend("From:$mailfrom\n");
$smtp->datasend("Subject: $subject\n");
$smtp->datasend("\n");
$smtp->datasend("$text\n\n");
$smtp->dataend();
}
$smtp->quit;
}
内容总结
以上是互联网集市为您收集整理的Keepalived+Nginx高可用实例全部内容,希望文章能够帮你解决Keepalived+Nginx高可用实例所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。