Keepalived+Nginx高可用实例

注意事项:

1、VIP不需要在服务器网络配置文件中配置。

2、nginx主不可用时,需要kill掉nginx主的keepalived服务,这样才可以实现VIP切换,因为主的keepalived优先级高。

3、故障切换时发送邮件通知由nginx备的keepalived服务来实现。

其中nginx主上keepalived.conf配置为:

  1. /etc/keepalived/keepalived.conf
  2. ! Configuration File for keepalived
  3. global_defs {
  4. #标识本节点的名称
  5. router_id master
  6. }
  7. vrrp_script chk_nginx {
  8. script "/etc/keepalived/nginx_check.sh"
  9. #每2秒检测一次nginx的运行状态
  10. interval 2
  11. #失败一次,将自己的优先级调整为-20
  12. weight -20
  13. }
  14. vrrp_instance VI_1 {
  15. #状态,主节点为MASTER
  16. state MASTER
  17. #绑定VIP的网络接口
  18. interface ens33
  19. #虚拟路由的ID号,两个节点设置必须一样
  20. virtual_router_id 51
  21. #节点优先级,值范围0~254,MASTER>BACKUP
  22. priority 100
  23. #组播信息发送时间间隔,两个节点必须设置一样,默认为1秒
  24. advert_int 1
  25. #设置验证信息,两个节点必须一致
  26. authentication {
  27. auth_type PASS
  28. auth_pass 1111
  29. }
  30. #虚拟IP,两个节点设置必须一致,可以设置多个
  31. virtual_ipaddress {
  32. 192.168.1.106
  33. }
  34. #nginx存活状态检测脚本
  35. track_script {
  36. chk_nginx
  37. }
  38. }

其中调用的/etc/keepalived/nginx_check.sh脚本内容为:

  1. #!/bin/bash
  2. A=`ps -C nginx -no-header |wc -l`
  3. if [ $A -eq 1 ];then
  4. pkill keepalived
  5. fi

nginx备上keepalived.conf配置为:

  1. ! Configuration File for keepalived
  2. global_defs {
  3. #标识本节点的名称
  4. router_id backup
  5. }
  6. vrrp_instance VI_1 {
  7. #状态,备节点为BACKUP
  8. state BACKUP
  9. #绑定VIP的网络接口
  10. interface ens33
  11. #虚拟路由的ID号,两个节点设置必须一样
  12. virtual_router_id 51
  13. #节点优先级,值范围0~254,MASTER>BACKUP
  14. priority 99
  15. #组播信息发送时间间隔,两个节点必须设置一样,默认为1秒
  16. advert_int 1
  17. #设置验证信息,两个节点必须一致
  18. authentication {
  19. auth_type PASS
  20. auth_pass 1111
  21. }
  22. #节点变为master时执行
  23. notify_master /etc/keepalived/send_mail.sh
  24. #虚拟IP,两个节点设置必须一致,可以设置多个
  25. virtual_ipaddress {
  26. 192.168.1.106
  27. }
  28. }

里边调用的send_mail.sh脚本为使用Perl编写的,需要安装环境:

  1. yum -y install perl-CPAN
  2. cpan Net::SMTP_auth

send_mail.sh脚本内容为:

  1. #!/usr/bin/perl -w
  2. use Net::SMTP_auth;
  3. use strict;#smtp服务器
  4. my $mailhost = 'smtp.exmail.qq.com';#发送邮件的邮箱
  5. my $mailfrom = 'from@qq.com';#接收邮件的邮箱
  6. my @mailto = ('to@qq.com');#邮件主题
  7. my $subject = 'keepalived up on backup';#邮件正文
  8. my $text = "正文\n nginx-1服务器宕机!!nginx-2变为master!!!";#发送邮件的用户名
  9. my $user = 'from@qq.com';#发送邮件的邮箱密码
  10. my $passwd = '123456';
  11. &SendMail();
  12. ##############################
  13. # Send notice mail
  14. ##############################
  15. sub SendMail() {
  16. my $smtp = Net::SMTP_auth->new( $mailhost, Timeout => 120, Debug => 1 )
  17. or die "Error.\n";
  18. $smtp->auth( 'LOGIN', $user, $passwd );
  19. foreach my $mailto (@mailto) {
  20. $smtp->mail($mailfrom);
  21. $smtp->to($mailto);
  22. $smtp->data();
  23. $smtp->datasend("To: $mailto\n");
  24. $smtp->datasend("From:$mailfrom\n");
  25. $smtp->datasend("Subject: $subject\n");
  26. $smtp->datasend("\n");
  27. $smtp->datasend("$text\n\n");
  28. $smtp->dataend();
  29. }
  30. $smtp->quit;
  31. }

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. flex layout & demos

    flex layout & demos https://codepen.io/xgqfrms/pen/jjLPKN https://css-tricks.com/snippets/css/a- ...

  2. 封装 React Native 原生组件(iOS / Android)

    封装 React Native 原生组件(iOS / Android) 在 React Native中,有很多种丰富的组件了,例如 ScrollView.FlatList.SectionList.Bu ...

  3. vue页面切换过渡

    <!--<transition name="slide-left">--> <router-view></router-view>& ...

  4. [转]百度Appollo无人车Perception Module 分析

    https://github.com/ApolloAuto/apollo/blob/master/docs/howto/modules/apollo1.5_perception_module_stud ...

  5. ASP.NET Core获取请求完整的Url

    在ASP.NET项目中获取请求完整的Url: 获取System.Web命名空间下的类名为HttpRequestBase的Url方法: /// <summary>在派生类中替代时,获取有关当 ...

  6. Why GraphQL? 6个问题

    Why GraphQL? 6个问题 GraphQL, 是一个API的标准: specification. 对于每个新技术, 要搞清楚的6个问题: 1.这个技术出现的背景, 初衷, 要达到什么样的目标或 ...

  7. 【Notes_9】现代图形学入门——光线追踪(基本原理)

    跟着闫令琪老师的课程学习,总结自己学习到的知识点 课程网址GAMES101 B站课程地址GAMES101 课程资料百度网盘[提取码:0000] 目录 光线追踪 为什么要光线追踪 soft shadow ...

  8. 微信小程序:解决小程序中有些格式如webpiPhone手机暂不支持的问题

    问题:小程序中有些格式是iPhone手机暂不支持的,如goods_introduce中的webp格式,在小程序的模拟器中是可以正常显示webp格式的,但是一旦你做真机调试,很可能某些iPhone手机是 ...

  9. DRF 三大认证之身份认证

    目录 路由组件补充 三大认证 一.身份认证 1.如何进行身份认证 2.jwt认证规则原理 3.jwt的组成 4.jwt的使用方法 4.1 签发算法 4.2 校验算法 4.3 刷新算法 二.权限认证 三 ...

  10. 从零开始使用 webpack5 搭建 react 项目

    本文的示例项目源码可以点击 这里 获取 一.前言 webpack5 也已经发布一段时间了,其模块联邦.bundle 缓存等新特性值得在项目中进行使用.经过笔者在公司实际项目中的升级结果来看,其提升效果 ...