Keepalived+nginx 集群解决单点故障

nginx作为负载均衡器,所有请求都到了nginx服务器,可见nginx处于一个非常重要的位置,如果nginx服务器宕机,那么后台的服务器将无法提供服务,严重影响客户端的请求,为了防止nginx宕机导致整个服务无法使用的灾难性发生,我们可以考虑使用Keepalived+nginx集群实现高可用。

一、Keepalived简介和工作原理

  • Keepalived是一种高性能的服务器高可用或热备解决方案,Keepalived可以用来防止服务器单点故障的发生,通过配合nginx可以实现web前端服务的高可用。该项目的主要目标是为Linux系统和基于Linux的基础结构提供负载均衡和高可用性的简单而强大的功能。 负载平衡框架依赖于提供第4层负载平衡的著名且广泛使用的Linux虚拟服务器(IPVS)内核模块。
    Keepalived实现了一组检查器,以根据其运行状况动态,自适应地维护和管理负载平衡的服务器池。另一方面,VRRP实现了高可用性 协议。VRRP是路由器故障转移的基础砖。此外,Keepalived还实现了一组VRRP有限状态机的挂钩,从而提供了低级和高速协议交互。为了提供最快的网络故障检测,Keepalived实施BFD协议。VRRP状态转换可以考虑BFD提示来驱动快速状态转换。Keepalived框架可以独立使用,也可以一起使用以提供弹性基础架构。

  • keepalived高可用服务之间的故障转移,是通过VRRP来实现的。在keepalived服务工作时,主Master节点会不断地向备节点发送(多播的方式)心跳消息,用来告诉备Backup节点自己还活着。
    当主节点发生故障时,无法给备节点发送心跳消息,如果备节点无法继续检测到来自主节点的心跳。就会调用自身的接管程序,接管主节点的IP资源和服务。当主节点恢复时,备节点又会释放主节点故障时自身接管的IP资源和服务,恢复到原来的备用角色。

  • keepalived工作在IP/TCP协议栈的IP层,TCP层,及应用层,工作原理基于VRRP协议。

  • 网络层(layer 3):Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包,(既我们平时用的Ping程序),如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除。

  • 传输层(layer 4):Keepalived以TCP端口的状态来决定服务器工作正常与否,如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。

  • 应用层(layer 5):只要针对应用上的一些探测方式,如URL的get请求,或者对nginx脚本检测等;可以根据用户自定义添加脚本针对特定的服务进行状态检测,当检测结果与用户设定不一致,则把这台服务器从服务器群中剔除。

  • Keepalived服务的三个重要功能:
    1)管理LVS负载均衡软件ipvsadm
    2)实现LVS集群节点的健康检查
    3)作为系统网络服务的高可用性

二、VRRP协议与工作原理

  • 在现实的网络环境中。主机之间的通信都是通过配置静态路由或者(默认网关)来完成的,而主机之间的路由器一旦发生故障,通信就会失效,因此这种通信模式当中,路由器就成了一个单点瓶颈,为了解决这个问题,就引入了VRRP协议。VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议。VRRP出现的目的就是为了解决静态路由单点故障问题,它能保证当个别节点宕机时,整个网络可以不间断地运行。

VRRP选举机制

  • 虚拟IP拥有者,如果某台路由器的IP地址与虚拟路由器的VIP地址一致,那么这台就会被选为主用路由器。
  • 优先级较高者,如果没有虚拟IP拥有者,优先级数值大的路由器会被选举出,优先级范围0~255。
  • IP地址较大者,如果优先级一样高,IP地址数值大的路由器会被选举出。

三、 实现过程

3.1方案介绍

3.2 在143和119上安装nginx,安装过程可以参考之前的博客

3.3 安装keepalived
安装前准备:

 yum -y install gcc gcc-c++ autoconf automake makeyum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel

3.4 正式安装:
方法一:

yum -y install keepalived

方法二:
进入官网下载源码包,然后传进服务器
下载二进制源码包
https://www.keepalived.org/software/keepalived-2.1.2.tar.gz

下载安装文件

wget https://www.keepalived.org/software/keepalived-2.1.2.tar.gz -C /usr/local

解压文件:

  tar -zxvf keepalived-2.1.2.tar.gz #编译cd keepalived-2.1.2./#--prefix 指定安装地址#/usr/local/keepalived/ 安装的目录,不要和自己安装文件一个目录,不然报错./configure --prefix=/usr/local/keepalived/#编译并安装make && make install设置keepalived开机启动chkconfig keepalived on

配置使用说明
进入/etc/keepalived/keepalived.conf 编辑

[root@do8888 ~]# ll /etc/keepalived/ 总用量 12 -rw-r--r-- 1 root root 526 4月 29 00:47 keepalived.conf-rw-r--r-- 1 root root 3598 10月 1 2020 keepalived.conf.rpmnew -rwxr-xr-x 1 root root 237 4月 29 00:55 nginx_check.sh

修改master配置文件

 vim  keepalived.conf
 ! Configuration File for keepalivedglobal_defs {router_id 192.168.8.143}vrrp_script chk_nginx {script "/etc/keepalived/nginx_check.sh" interval 2weight -20
}vrrp_instance VI_1 {state MASTERinterface ens32virtual_router_id 110mcast_src_ip 192.168.8.143priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}track_script {chk_nginx}virtual_ipaddress {192.168.8.100}
}

修改save配置文件

! Configuration File for keepalivedglobal_defs {router_id 192.168.8.143}vrrp_script chk_nginx {script "/etc/keepalived/nginx_check.sh" interval 3weight -20
}vrrp_instance VI_1 {state BACKUPinterface enp0s3virtual_router_id 110mcast_src_ip 192.168.8.119priority 90advert_int 1authentication {auth_type PASSauth_pass 1111}track_script {chk_nginx}virtual_ipaddress {192.168.8.100}
}

编写 keepalived 监测 nginx 的脚本
我们在 keepalived.conf 中 vrrp_script chk_haproxy
配置的监测脚本路径和名称如下: /etc/keepalived/nginx_check.sh

#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then/usr/local/nginx/sbin/nginxsleep 5if [ `ps -C nginx --no-header |wc -l` -eq 0 ];thenkillall keepalivedecho `date` > /root/timer.txtfi
fi

nginx 挂掉之后, keepalived 重新启动 nginx ,若不能启动 则关闭当前 keepalived

然后运行 chmod +x nginx_check.sh 命令为脚本文件添加可执行权限

  1. 分别启动两台服务器上的 nginx 和 keepalived

启动 nginx
./nginx

查看 nginx 是否成功启动
ps -ef | grep nginx

启动 keepalived

systemctl start keepalived.service

查看 keepalived 状态

systemctl status keepalived.service
  1. 测试

配置信息如下

主服务器:  192.168.8.119

从服务器:  192.168.8.143

虚拟 IP:  192.168.8.110

1、浏览器访问 192.168.8.110

2、关闭主机 192.168.141.119 上的 nginx 和 keepalived ,再次访问虚拟 IP ,发现可以正常访问,并且访问的是从机

Keepalived+nginx 集群解决单点故障相关推荐

  1. Tomcat学习总结(8)——Tomcat+Nginx集群解决均衡负载及生产环境热部署

    近日,为解决生产环境热部署问题,决定在服务器中增加一个tomcat组成集群,利用集群解决热部署问题.

  2. Java架构师:单体部署 ->Nginx 集群 -> + Keepalived“高可用”组件 -> + LVS负载均衡

    一.集群阶段开篇概述 1.单体部署 1.1 单台服务器(节点)部署 1.2.多台服务器(节点)部署 集群.分布式.微服务中的各个服务器节点必须互通,必须在同一个局域网(内网要通) 1.3.单体架构的优 ...

  3. 基于LVS高可用架构实现Nginx集群分流

    Nginx实用插件_踩踩踩从踩的博客-CSDN博客 前言 前面文章介绍Nginx的核心及扩展插件必要的性能优化,以及在nginx中如何实用用https:本篇文章会继续讲解重要的概念 lvs高可用框架, ...

  4. Nginx 集群安装以及常用配置详解开机自启动

    Nginx 配置文件详解 main: 全局配置 event: 配置工作模式以及连接数 http: http 模块相关配置 server 虚拟主机配置,可以有多个 location 路由规则,表达式 u ...

  5. Redis + Tomcat + Nginx 集群实现 Session 共享

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者 | 蕃薯耀 链接 | www.cnblogs.com/fan ...

  6. Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享

    转载自  Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享 一.Session共享使用tomcat-cluster-redis-session-mana ...

  7. C#session共享+redis_Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享

    作者:蕃薯耀 链接:www.cnblogs.com/fanshuyao 一.Session共享使用tomcat-cluster-redis-session-manager插件实现 插件地址见: htt ...

  8. Zookeeper+Hadoop+Hbase+Hive+Kylin+Nginx集群搭建六(Kylin篇)

    Zookeeper+Hadoop+Hbase+Hive+Kylin+Nginx集群搭建六(kylin篇) 八.Kylin搭建 1.安装 2.配置环境变量 3.配置kylin 4.启动使用 5.问题 全 ...

  9. Zookeeper+Hadoop+Hbase+Hive+Kylin+Nginx集群搭建

    Zookeeper+Hadoop+Hbase+Hive+Kylin+Nginx集群搭建 一.虚拟机安装Centos7 1.准备工作 2.centos7安装过程 3.关闭防火墙(关键) 二.安装jdk ...

最新文章

  1. push代码到github时,每次都要输入用户名和密码的问题
  2. CTime COleDateTime的常用操作和比较
  3. 【转】ABAP的坑1
  4. 问题 F: 积木大赛(模拟)
  5. 新0-Day漏洞或将给Linux桌面发行版带来浩劫
  6. 网页技术革命:精美绝伦的 HTML5 个人作品集网站
  7. Spring自学教程-AOP学习(五)
  8. Python基础学习(二)
  9. Lotus Traveler 8.5.1的安装及配置
  10. 如何写php大马,带你走进php大马的结构模块编写之路
  11. 《Python语言程序设计基础》嵩天著-第4章程序部分练习题答案
  12. matlab读取多张图片数据
  13. 英国外交部翻译教你实用口语课,让你飚出一口地道、流利英语
  14. php隐藏notice错误,php屏蔽notice错误
  15. 应用泛函分析—距离空间
  16. 蓝色理想的flex教材不能在flex Development做不能使用,我整理一下供初学者参考
  17. Web代理(HTTP代理)
  18. 树莓派和主机相互PING
  19. 【漫步计算机系统】:发展概览Ⅲ
  20. 多多自走棋改动_《多多自走棋》9月底最新平衡性改了什么 最新平衡性改动介绍...

热门文章

  1. 移除设备和驱动器的WPS网盘图标,亲测有效,不在恢复
  2. 手机APP软件制作平台搭建(基于windows)
  3. 高级灰质感、轻奢风的空间,融入了灰色和轻奢风
  4. C语言基础知识入门(大全详解)
  5. 公链生态周报:BI指数周涨幅超20%,IOST主网账户突破30万 | 链塔智库
  6. 多平台API,item_search - 根据关键词取商品列表
  7. 网络性能测试工具netperf
  8. [Python] 变量重分类(连续变量重分类、离散变量重分类)
  9. Jquery-Rotate实现查看原图并旋转图片
  10. computed属性与methods、watched