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. Flutter in DartPad

    Flutter in DartPad Gist Sharing https://github.com/dart-lang/dart-pad/wiki/Sharing-Guide https://gis ...

  2. “Fatal error: Unable to find local grunt.” when running “grunt” command

    下载到本地 >npm install grunt >grunt 命令行运行:grunt,出现以下问题: 这些是Gruntfile.js中引用的,依次安装: npm install grun ...

  3. 黑马来袭!NGK生态所二月上线!

    日前,加密货币交易所Coinbase Global Inc,向美国证券交易委员会申请首次公开募股,成为首家公开上市的加密货币交易所."Coinbase上市,给行业带来更多的是信心.让大家看到 ...

  4. 1月22日第二轮空投来袭,SPC算力福利币究竟能带来什么?

    行情数据显示,比特币于14日23时30分再次突破40000美元,市值回升至7400亿美元.根据行情频道数据,比特币于14日2时展露上行态势,价格于34000美元附近起跳,至12时站上37000美元.此 ...

  5. Mysql之用户认证授权管理

    概述 Mysql的认证采用账号密码方式,其中账号由两个部分组成:Host和User:Host为允许登录的客户端Ip,User为当前登录的用户名. 授权没有采用典型的RBAC(基于角色的访问控制),而是 ...

  6. MySQL数据库与NAVICAT安装与配置

    1.安装破解版的NAVICAT:https://www.cnblogs.com/yinfei/p/11427259.html 2.连接MYSQL 下载MYSQL并安装,配置环境变量 以管理员身份运行C ...

  7. Mybatis【20】-- Mybatis延迟加载怎么处理?

    注:代码已托管在GitHub上,地址是:https://github.com/Damaer/Mybatis-Learning ,项目是mybatis-16-lazyload,需要自取,需要配置mave ...

  8. vue版本一直是2.9.6版本,卸载也卸载不掉,更新也更新不了

    原文链接:https://blog.csdn.net/zlzbt/article/details/110136755 主要是找到本地文件 E:\StudyFile\VueStudy λ where v ...

  9. 第35天学习打卡(输入框 TextField监听 简易计算器,组合+内部类回顾复习 画笔 鼠标监听 窗口监听 键盘监听)

    1.输入框 TextField监听  package com.kuang.lesson02; ​ import java.awt.*; import java.awt.event.ActionEven ...

  10. Docker Hub 镜像加速器

    一.概述 国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器.Docker 官方和国内很多云服务商都提供了国内加速器服务. 二.配置加速地址 Ubuntu 16.04+.De ...