keepalived+nginx实现高可用

1. keepalived需要了解的知识

1.1 业务场景:

如果我们有个网站,最开始只有一台服务器对用户提供服务,业务架构图如下:

当业务量增大时,这台服务器支撑不了那么大的流量,随时会出现宕机的风险,于是优化为分布式架构,并使用了nginx做负载均衡:

有了分布式架构+负载均衡,你的业务可用性越来越强,能承受住很高的流量,但是题出现了:所有流量都打在nginx代理上,你的nginx容易出现性能瓶颈,突然有一天,你的nginx撑不了那么大的流量,出现了宕机故障,那么用户发起的所有请求都到不了你的后端web服务器上,于是又优化为nginx 做成分布式keepalived 的方式。

如果nginx master出现宕机,keepalived则会将服务切到nginx slave上,保证业务不受影响,这样就可以避免nginx单机故障,以此来实现高可用。

1.2 Keepalived的理解

Keepalived是linux下一个轻量级的高可用解决方案,可以实现服务或者网络的高可用。

       Keepalived主要是通过虚拟路由冗余来实现高可用,功能没有HeartBeat那么强大,但Keepalived的部署和使用都非常简单,所有的配置只需要一个主配置文件即可完成。

       Keepalived起初是为了LVS设计的,专门用来监控集群系统中各个服务节点的状态,如果某个服务器节点出现了故障,Keepalived将检测到后自动将节点从集群系统中剔除,而在故障节点恢复正常后,Keepalived又可以自动将此节点重新加入集群中,这些工作自动完成,不需要人工干预,需要人工完成的只是修复出现故障的节点。

       后来又加入了VRRP的功能,VRRP(VritrualRouterRedundancyProtocol,虚拟路由冗余协议)出现的目的是解决静态路由出现的单点故障问题,通过VRRP可以实现网络不间断稳定运行,因此Keepalvied一方面具有服务器状态检测和故障隔离功能,另外一方面也有高可用集群功能。

       健康检查和失败切换是keepalived的两大核心功能:

  • 健康检查,就是采用tcp三次握手,icmp请求,http请求,udp echo请求等方式对负载均衡器后面的实际的服务器(通常是承载真实业务的服务器)进行保活
  • 而失败切换主要是应用于配置了主备模式的服务器,利用VRRP协议维持主备服务器的心跳,当主服务器出现问题时,由备服务器承载对应的业务,从而在最大限度上减少损失,并提供服务的稳定性

1.3 vrrp协议

        在现实的网络环境中,主机之间的通信都是通过配置静态路由(默认网关)来完成的,而主机之间的路由器一旦出现故障,就会通信失败。因此在这种通信模式下,路由器就会有单点的瓶颈问题,为了解决这个问题,我们引入了vrrp协议(虚拟路由冗余协议)

      Vrrp协议是一种容错的主备模式的协议,保证当主机的下一条路由出现故障时,由另一个路由器来代替出故障的路由器进行工作,通过vrrp可以在网络发生故障时透明的进行设备切换而不影响主机之间的数据通信。

      Vrrp可以将两台或多台物理路由器设备虚拟成一个虚拟路由器,这个虚拟路由器通过虚拟IP(一个或多个)对外提供服务,而在虚拟路由器内部是多个物理路由器协同工作,vrrp角色如下:

  • 虚拟路由器:VRRP组中所有的路由器,拥有虚拟的IP+MAC(00-00-5e-00-01-VRID)地址
  • 主路由器(master):虚拟路由器内部通常只有一台物理路由器对外提供服务,主路由器是由选举算法产生,对外提供各种网络功能
  • 备份路由器(backup):VRRP组中除主路由器之外的所有路由器,不对外提供任何服务,只接受主路由的通告,当主路由器挂掉之后,重新进行选举算法接替master路由器。

Master路由器由选举算法产生,它拥有对外服务的VIP,提供各种网络服务,如ARP请求、数据转发、ICMP等等,而backup路由器不拥有VIP,也不对外提供网络服务,当master发生故障时,backup将重新进行选举,产生一个新的master继续对外通过服务。

1.4 vrrp工作模式

三种状态:Initialize状态、Master状态、Backup状态

选举机制:抢占模式下,一旦有优先级高的路由器加入,立即成为Master,默认

非抢占模式下,只要Master不挂掉,优先级高的路由器只能等待

       简单点说抢占模式就是,当master宕机后,backup 接管服务。

后续当master恢复后,vip漂移到master上,master重新接管服务,多了一次多余的vip切换,而在实际生产中是不需要这样。

实际生产中是,当原先的master恢复后,状态变为backup,不接管服务,这是非抢占模式。

下面重点说明4种情况:

  • 两台都为master时,比如server1的优先级大于server2,keepalived启动后server1获得master,server2自动降级为backup。此时server1宕机的话,server2接替 服务,当server1恢复后,server1又变为master,重新接管服务,server2变为backup。属于抢占式。
  • server1为master,server2位backup,且master优先级大于backup。keepalived启动后server1获得master,server2为backup。当server1宕机后, server2接管服务。当server1恢复后,server1重新接管服务变为master,而server2变为backup。属于抢占式
  • server1为master,server2位backup,且master优先级低于backup。keepalived启动后server2获得master,server1为backup。当server2宕机后, server1接管服务。此时server2恢复后抢占服务,获得master,server1降级将为backup。属于抢占式

以上3种,只要级别高就会获取master,与state状态是无关的

  • server1和server2都为backup。我们要注意启动server服务的启动顺序,先启动的升级为master,与优先级无关。且配置nopreempt
  • 比如server1获得master权限,server2为backup。此时server1宕机后,server2接管服务升级为master。当server1恢复后权限将为backup,不会争抢 server2的master权限,server2将会继续master权限。属于非抢占式
  • 重点:第4种非抢占式俩节点state必须为bakcup,且必须配置nopreempt

注意:这样配置后,我们要注意启动服务的顺序,优先启动的获取master权限,与优先级没有关系了

​​​​​​​1.5 Keepalived核心组件

主要有watch dogCheckersVRRP StackIPVS wrapperNetlink Reflector

watch dog

一个极为简单又非常有效的检测工具,针对被监视目标设置一个计数器和阈值,watch dog会自己增加此计数值,然后等待被监视目标周期性的重置该数值,一旦被监控目标发生错误,就无法重置该数值,watch dog就会检测到。Keepalived是通过它来监控CheckersVRRP进程

Checkers

实现对服务器运行状态检测和故障隔离

VRRP Stack

实现HA集群中失败切换功能,通过VRRP功能再结合LVS负载均衡软件即可部署一个高性能的负载均衡集群

IPVS wrapper

实现IPVS功能,该模块可以将设置好的IPVS规则发送到内核空间并提交给IPVS模块,最终实现负载均衡功能

Netlink Reflector

实现VIP的设置和切换

  • keepalived运行时,会启动3个进程:
    • core:负责主进程的启动,维护和全局配置文件的加载
    • check:负责健康检查
    • vrrp:用来实现vrrp协议

2. keepalived安装

keepalived master:11.0.1.17

keepalived backup:11.0.1.16

下载安装包: wget https://keepalived.org/software/keepalived-2.2.7.tar.gz

安装依赖包:yum install -y gcc openssl-devel

解压安装包:tar -zxvf keepalived-2.2.7.tar.gz

      

指定安装keepalived的位置,进行编译:cd keepalived-2.2.7 && ./configure --prefix=/opt/keepalived

      

编译安装:make && make install

3.编辑keepalived的核心配置文件

vim /opt/keepalived/etc/keepalived/keepalived.conf

主从节点都需要在/opt/keepalived/etc/keepalived 目录下创建该文件,从节点需要修改router_id、priority、mcast_src_ip 配置项,其中 priority必须比主节点的值小,mcast_src_ip和router_id最好是从节点ip。

    将keepalived生成系统服务:

    mkdir -p /etc/keepalived

    cp ~/keepalived-2.2.7/keepalived/etc/init.d/keepalived /etc/init.d/

    cp /opt/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf

    cp ~/keepalived-2.2.7/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

    cp /opt/keepalived/sbin/keepalived /usr/sbin/

4.编写Nginx的重启脚本

mkdir -p /opt/script/keepalived

vim /opt/script/keepalived/check_nginx_pid_restart.sh

5.启动keepalived测试

systemctl daemon-reload

systemctl enable keepalived.service

systemctl start keepalived.service

systemctl status keepalived.spec

       ip addr检查是否有VIP

在windows下ping VIP 也能ping通

6.安装nginx

下载安装包:wget https://nginx.org/download/nginx-1.26.1.tar.gz

解压安装包:tar -zxvf nginx-1.26.1.tar.gz

进入目录并生成编译配置:cd nginx-1.26.1 && ./configure --prefix=/opt/nginx

编译以及安装:make && make install

验证版本:/opt/nginx/sbin/nginx -V

修改keepalived master(11.0.1.17)节点的nginx配置文件以及index.htm文

修改keepalived master(11.0.1.16)节点的nginx配置文件以及index.htm文件

7.nginx高可用测试

我们直接用windows访问,此时应该是访问到的keepalived master(11.0.1.17)节点上的nginx

我们手动停止nginx,过3秒检查nginx服务是否启动

我们在模拟主节点keepalived服务宕机,检查从节点是否自动挂载VIP,在keepalived master(11.0.1.17)节点上操作

我们在去keepalived master(11.0.1.16)节点上查看IP

我们在windows上访问

也说明vip已经漂移到11.0.1.16上了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/45366.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Dr4g0nb4ll靶机

信息收集 使用arp-scan生成网络接口地址,查看ip 输入命令: arp-scan -lnmap扫描端口开放 TCP 输入命令: nmap --min-rate 10000 -p- 192.168.187.184 //以最低10000的发包速率扫描全部端口可以看到目标只开放http的22和80端口 UDP …

鸿蒙Harmony--文本组件Text属性详解

金樽清酒斗十千,玉盘珍羞直万钱。 停杯投箸不能食,拔剑四顾心茫然。 欲渡黄河冰塞川,将登太行雪满山。 闲来垂钓碧溪上,忽复乘舟梦日边。 行路难,行路难,多歧路,今安在? 长风破浪会有…

2024最新国际版抖音TikTok安装教程,免root免拔卡安卓+iOS,附全套安装工具!

我是阿星,今天给大家带来是2024年最新TikTok国际版抖音的下载和安装教程,而且还是免root免拔卡的那种,安卓和iOS都能用哦!由于某些原因,国内用户并不能使用TikTok。今天阿星就教一下大家怎么安装TikTok。 TikTok在全球…

张爱华:身残志坚谱写人间大爱 推己及人彰显巾帼风采

张爱华,女,1963年2月出生,响水县聚贤养老协会会长、响水县小尖镇爱华老年公寓院长。张爱华因患小儿麻痹症导致下肢重度残疾,但她身残志坚,通过创办服装厂慢慢走上致富之路。2011年,她先后筹资、贷款600多万…

UART串口通信实验

一.通信种类 1.1按照数据通信方式 1.1.1串行通信 优点:占用的引脚少,成本低 缺点:传输速度慢 适用场合:长距离、低速率的通信场合 1.1.2并行通信 优点:传输速率快 缺点:占用引脚多,成本…

【开源项目的机遇与挑战】探索、贡献与应对

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《热点时事》 期待您的关注 目录 引言 一:开源项目的发展趋势 🍃开源项目的蓬勃发展现状 🍃开…

VSCode 远程反复输入密码不能链接问题解决

通过 vscode 远程连接服务器时出现了连接不上,而且一直要循环输入密码的问题,可能是因为上次异常退出导致。 主要解决思路是删除当前 vscode 远端服务后,重新建立连接。 解决方法一 在 vscode 端接口删除 vscode 服务。 View->Commond…

vue 使用腾讯地图 标点 自定义瓦片 折线配置

vue 使用腾讯地图 标点 自定义瓦片 折线配置 申请腾讯地图秘钥 key 腾讯地图开发者 https://lbs.qq.com/dev/console/application/mine 腾讯地图开发文档 https://lbs.qq.com/webApi/javascriptGL/glGuide/glOverview 添加 key 代码中引入 // 入口文件 index.html // 填…

【通信原理】其实QPSK就是一种特殊的QAM,即4-QAM

文章目录 幅度调制和相位调制QPSK(Quadrature Phase Shift Keying)QAM(Quadrature Amplitude Modulation)QPSK作为4-QAMQPSK(Quadrature Phase Shift Keying)和QAM(Quadrature Amplitude Modulation)都是数字调制技术,用于在无线信号中传输数据。要理解“QPSK其实就是…

新旧电脑数据转移方法

随着科技的发展和电脑性能的不断提升,许多用户在工作和生活中都需要更换新电脑。当我们购买了一台新电脑后,如何将旧电脑中的数据转移到新电脑上成许多用户关注的问题。本文将详细介绍几种有效的电脑数据转移方法,帮助大家顺利完成数据迁移。…

国产麒麟、uos在线编辑word文件并控制编辑区域(局部编辑)

windows系统也适用,该插件可同时支持windows和国产系统 在实际项目开发中,以下场景可能会用到Word局部编辑功能: 合同审批公文流转策划设计报告汇签单招投标(标书文件)其他,有模板且需要不同人员协作编辑…

06.TMS570LC43入门指南——中断操作

06.TMS570LC43入门指南——中断操作 文章目录 06.TMS570LC43入门指南——中断操作一、简介二、中断(VIM)介绍2.1 VIM架构2.2 CPU 中断处理2.3 VIM中断通道映射2.4 中断请求默认分配 三、项目实现3.1 硬件部分3.2 软件部分3.2.1 HALCoGen 配置3.2.2 CCS 配…

RK3588部署YOLOV8-seg的问题

在使用YOLOV8-seg训练出来的pt模型转为onnx的时候,利用以下仓库地址转。 git clone https://github.com/airockchip/ultralytics_yolov8.git 在修改ultralytics/cfg/default.yaml中的task,mode为model为自己需要的内容后, 执行以下语句 cd …

在Linux上搭建服务器之综合实验(web,dns,防火墙,SELinux)

其实验简图如下: 解读: 本实验需要完成4部分内容,web服务器的搭建,主从dns服务器的搭建,防火墙的开启,以及SELinux设置为强制模式。 首先dns主服务器上配置web服务(其中我本机的IP为192.168.5.…

thinkphp 生成邀请推广二维码,保存到服务器并接口返回给前端

根据每个人生成自己的二维码图片,接口返回二维码图片地址 生成在服务器的二维码图片 控制器 public function createUserQRcode(){$uid = input(uid);if

深度学习编码解码结构-以及kreas简单实现

图像分割中的编码解码结构(Encoder-Decoder Model)是一种广泛应用的网络架构,它有效地结合了特征提取(编码)和分割结果生成(解码)两个过程。以下是对图像分割中编码解码结构的详细解析&#xff…

通过vagrant与VirtualBox 创建虚拟机

1.下载vagrant与VirtualBox【windows版本案例】 1.1 vagrant 下载地址 【按需下载】 https://developer.hashicorp.com/vagrant/install?product_intentvagranthttps://developer.hashicorp.com/vagrant/install?product_intentvagrant 1.2 VirtualBox 下载地址 【按需下载…

lvs集群、NAT模式和DR模式、keepalive

目录 lvs集群概念 集群的类型:三种类型 系统可靠性指标 lvs集群中的术语 lvs的工作方式 NAT模式 lvs的工具 算法 实验 数据流向 步骤 一 、调度器配置(test1 192.168.233.10) 二、RS配置(nginx1和nginx2)…

物理层与数据通信基础:构建稳定网络的关键

本章主要讨论物理层的基本概念、数据通信的基础知识、几种常用的信道复用技术以及互联网接入技术。对于具备通信基础知识的读者,可以有选择地学习本章内容。 本章重点内容 物理层的任务数据通信的基本概念常用的信道复用技术常用的互联网接入技术 2.1 物理层的基…

深入理解FFmpeg--libavformat接口使用(一)

libavformat(lavf)是一个用于处理各种媒体容器格式的库。它的主要两个目的是去复用(即将媒体文件拆分为组件流)和复用的反向过程(以指定的容器格式写入提供的数据)。它还有一个I/O模块,支持多种…