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高可用实例的更多相关文章

  1. Nginx(四):Keepalived+Nginx 高可用集群

    Keepalived+Nginx 高可用集群 (主从模式) 集群架构图 安装keepalived [root@localhost ~]# yum install -y keepalived 查看状态 ...

  2. LVS+KeepAlived+Nginx高可用实现方案

    文章目录概念LVSKeepAlived为什么要使用准备软件安装KeepAlived 安装源码安装yum安装服务启动.重启.关闭安装ipvsadmnginx安装防火墙(iptables)防火墙配置(方式 ...

  3. Keepalived+nginx高可用

    这种方法会把Keepalived进程结束掉,在教育机构学习到的方法,我个人对这种方法不认可. 参考: https://www.cnblogs.com/gshelldon/p/14504236.html ...

  4. Keepalived+Nginx高可用集群

    Keepalived简介 Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替 ...

  5. keepalived+nginx 高可用集群

    一.什么是高可用?   nginx做负载均衡,能达到分发请求的目的,但是不能很好的避免单点故障. 1.nginx集群单点问题 分发器宕机怎么处理? 假如nginx服务器挂掉了,那么所有的服务也会跟着瘫 ...

  6. keepalived+nginx高可用实现

    1.keepalived介绍 keepalived最初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了实现高可用的VRRP功能.keepalived除了能 ...

  7. linux下实现keepalived+nginx高可用

    1 nginx负载均衡高可用 1.1 什么是负载均衡高可用 nginx作为负载均衡器,所有请求都到了nginx,可见nginx处于非常重点的位置,如果nginx服务器宕机后端web服务将无法提供服务, ...

  8. centos安装与配置keepalived+nginx高可用

    一.安装启动keepalived 1.下载keepalived 在centos系统中,用wget下载最新版本: mkdir tool cd tool wget https://www.keepaliv ...

  9. keepalived+nginx高可用负载均衡环境搭建

    上篇说道keepalived的环境搭建,本来keepalived结合lvs更有优势,但是也可以结合nginx来使用.下面接着说下nginx的环境搭建 环境信息: nginx(master)  192. ...

随机推荐

  1. free website generator by google

    free website generator by google https://sites.google.com/view/webgeeker-xyz/首页 https://sites.google ...

  2. algorithm & bitwise operation & the best leetcode solutions

    algorithm & bitwise operation & the best leetcode solutions leetcode 136 single-number the b ...

  3. html template tag

    html template tag const tagName = `emoji-element`; const template = document.createElement('template ...

  4. trao 模拟点击 & js auto click

    trao 模拟点击 & js auto click 日历上选择某一天,在 scrollview 自动定位到选择的那一天 click 后获取 item 的 e.target.offsetLeft ...

  5. ng mock服务器数据

    angualr文档 in-memory-web-api 文档 安装 yarn add angular-in-memory-web-api -S src/app/app.module.ts import ...

  6. re模块之简单计算器的实现

    本节大纲: 表达式的输入及检查.格式化 怎么样进行匹配最里面的括号以及操作数的匹配 如何实现表达式的四则运算 完整代码展示 在我们学习re模块之后,通常的练习就是利用所学相关知识来写一个计算器 那么, ...

  7. 【python接口自动化】- 正则用例参数化

    ​ 我们在做接口自动化的时候,处理接口依赖的相关数据时,通常会使用正则表达式来进行提取相关的数据. ​ 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式.常规表示法(Regular Ex ...

  8. Matplotlib 图表绘制工具学习笔记

    import numpy as np import matplotlib.pyplot as plt import pandas as pd arr1 = np.random.rand(10)#一维数 ...

  9. 注解处理器APT详解

    本文转载自ANNOTATION PROCESSING 101 Introduction In this blog entry I would like to explain how to write ...

  10. ArrayList的简单实现

    class AList<E>{ //属性:数组和实际元素个数 private Object[] data; private int size; //构造函数:有参.无参 public AL ...