Nginx+KeepAlived高可用负载均衡集群的部署

目录

一.KeepAlived补充知识

1.一个合格的群集应该具备的特点

2.健康检查(探针)常用的工作方式

3.相关面试问题

问题1

问题2

二.Keepealived脑裂现象

1.现象

2.原因

硬件原因

运用配置原因

3.解决

4.预防

方法1

方法2

方法3

方法4

三.实验部署

1.两台nginx做初始化操作并安装nginx

2.四层反向代理配置

2.1.修改主调度器配置

2.2.修改备调度器配置

2.3.浏览器测试两台nginx服务器

3.配置高可用

4.准备检查nginx运行状态脚本

4.1.主服务器

4.2.备服务器

5.开启keepalived服务并测试

5.1.分别开启主备两台服务器keepalived

5.2.浏览器测试


一.KeepAlived补充知识

1.一个合格的群集应该具备的特点

  • 负载均衡          用于提高群集的性能   LVS  Nginx  HAProxy  SLB  F5
  • 健康检查(探针)  针对于调度器和节点服务器    Keepalived   Heartbeat
  • 故障转移          通过VIP漂移实现主备切换     VRRP   脚本

2.健康检查(探针)常用的工作方式

  • 发送心跳消息    vrrp报文    ping/pong
  • TCP端口检查     向目标主机的 IP:PORT 发起TCP连接请求,如果TCP连接三次握手成功则认为健康检查正常,否则认为健康检查异常
  • HTTP URL检查    向目标主机的URL路径(比如http://IP:PORT/URI路径)发起 HTTP GET 请求方法
  • 如果响应消息的状态码为 2XX 或 3XX,则认为健康检查正常
  • 如果响应消息的状态码为 4XX 或 5XX,则认为健康检查异常

3.相关面试问题

问题1

Keepalived通过什么判断哪台主机为主服务器,通过什么方式配置浮动IP

答案

  1. Keepalived首先做初始化先检查state状态,master为主服务器,backup为备服务器
  2. 然后再对比所有服务器的priority,谁的优先级高谁是最终的主服务
  3. 优先级高的服务器会通过ip命令为自己的电脑配置一个提前定义好的浮动IP地址

问题2

keepalived的抢占与非抢占模式

答案

  1. 抢占模式即MASTER从故障中恢复后,会将VIP从BACKUP节点中抢占过来。非抢占模式即MASTER恢复后不抢占BACKUP升级为MASTER后的VIP
  2. 非抢占式俩节点state必须为bakcup,且必须配置nopreempt

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

二.Keepealived脑裂现象

1.现象

主服务器和备服务器都同时拥有相同的VIP

在"双机热备"高可用(HA)系统中,当联系两个节点的"心跳线"断开时(即两个节点断开联系时),

本来为一个整体、动作协调的HA系统,就分裂成为两个独立的节点(即两个独立的个体)。由于相互

失去了联系,都以为是对方出了故障,此时备用调度器会运转起来争做主调度器的工作,而主调度

器依然保持着调度工作,两个调度的同时运转导致整个系统的紊乱。就会发生严重后果:

  • 共享资源被瓜分、两边"服务"都起不来
  • 或者两边"服务"都起来了,但同时读写"共享存储",导致数据损坏(常见如数据库轮询着的联机日志出错)

2.原因

因为主服务器和备服务器的通信中断,导致备服务器无法收到主服务器发送的VRRP报文,备服务

器误认为主服务器已经故障了并通过ip命令生成VIP

硬件原因

  • 高可用服务器各节点之间心跳线链路发生故障,导致无法正常通信
  • 因心跳线坏了(包括断了,老化)
  • 因网卡及相关驱动坏了,ip配置及冲突问题(网卡直连)
  • 因心跳线间连接的设备故障(网卡及交换机)
  • 因仲裁的机器出问题(采用仲裁的方案)

运用配置原因

  • 高可用服务器上开启了iptables防火墙阻挡了心跳消息传输
  • 高可用服务器上心跳网卡地址等信息配置不正确,导致发送心跳失败
  • 其他服务配置不当等原因,如心跳方式不同,心跳广插冲突、软件Bug等
  • Keepalived配置里同一VRRP实例如果virtual_router_id两端参数配置不一致也会导致裂脑问题发生

3.解决

关闭主服务器或备服务器其中一个的keepalived服务

4.预防

方法1

如果是系统防火墙导致,则关闭防火墙或添加防火墙规则放通VRRP组播地址(224.0.0.18)的传输

方法2

如果是主备服务器之间的通信链路中断导致,则可以在主备服务器之间添加双链路通信

方法3

在主服务器使用脚本定时判断与备服务器通信链路是否中断,如果判断是主备服务器之间的链接中

断则自行关闭主服务器上的keepalived服务

方法4

利用第三方应用或监控系统检测是否发生了脑裂故障现象,如果确认发生了脑裂故障则通过第三方

应用或监控系统来关闭主服务器或备服务器其中一个的keepalived服务

三.实验部署

此实验基于以上 LVS+KeepAlived高可用负载均衡群集的部署实验为基础,将两台调度器改为

nginx服务器,其余不变

准备虚拟机

192.168.80.104(nginx服务器四层代理)

192.168.80.105(nginx服务器四层代理)

192.168.80.106(web1)

192.168.80.107(web2)

192.168.80.108(nfs共享存储)

1.两台nginx做初始化操作并安装nginx

nginx镜像网址:

2.四层反向代理配置

2.1.修改主调度器配置

stream {upstream backends {server 192.168.80.106:80;server 192.168.80.107:80;}server {listen 8080;proxy_pass backends;}
}

2.2.修改备调度器配置

将主调度器的nginx.conf复制过来

2.3.浏览器测试两台nginx服务器

192.168.80.104/192.168.80.105

3.配置高可用

两台nginx服务器安装keepalived

4.准备检查nginx运行状态脚本

4.1.主服务器

#!/bin/bashif ! killall -0 nginx &> /dev/nullthensystemctl stop keepalived
fi

4.2.备服务器

将主里的复制到备里

5.开启keepalived服务并测试

5.1.分别开启主备两台服务器keepalived

5.2.浏览器测试

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

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

相关文章

CXL协议中 Register Locator DVSEC详解

✨ 前言: Register Locator DVSEC(Designated Vendor-Specific Extended Capability)是一种PCI Express(PCIe)配置空间的能力,专为CXL(Compute Express Link)技术中的设备设计。这包…

[DDR5 Jedec] 读操作 Read Command 精讲

依公知及经验整理,原创保护,禁止转载。 专栏 《深入理解DDR》 Read 读取命令也可以视为列读取命令。当与正确的bank地址和列地址结合使用时,通过激活命令(行访问)移动到检测放大器中的数据, 现在被推送到数…

python 基础--数据类型、基本数据类型之间的相互转换

文章目录 一、python 数据类型介绍二、基本数据类型2.1 Numbers(数字类型)2.2 String(字符串类型)2.2.1 不同引号字符串之间的区别2.2.2 转义字符和 python 输出函数2.2.3 字符串的相关操作(字符串拼接、占位符、字符串…

用Python代码锁定Excel单元格以及行和列

Excel能够帮助用户高效地组织数据,还支持复杂的公式计算和数据分析。而随着团队协作的日益频繁,保护数据的准确性和完整性变得尤为重要。在Excel表格中,我们可以通过锁定特定的单元格或区域,防止对单元格内容进行随意修改&#xf…

pycharm上传文件到服务器python代码部署到服务器

文章目录 step1:【Tools】—-【Deployment】—-【Configuration】step2:【 】—-【SFTP】—-【输入服务器名称】step3:【 Deployment path】—-【输入相对地址】step4:【 选中项目右击】—-【Deployment】—-【upload to xxxxx】…

css实现优惠券样式

实现优惠券效果: 实现思路: 需要三个盒子元素,使用 css 剪裁,利用 ellipse 属性,将两个盒子分别裁剪成两个半圆,位置固定在另一个盒子元素左右两边适当位置上。为另一个盒子设置想要的样式,圆角…

强烈推荐的JetBrains家族的插件

Rainbow Brackets 该插件提供了不同颜色的对应的括号格式,便于在开发中检查缺少括号的情况,效果如下 CodeGlance Pro 该插件是代码缩略图插件,方便在开发中快速定位代码位置,也可作为滚动条使用,CodeGlance Pro搜不到…

(Git)多人协作1

文章目录 前言总结 前言 目标:master分支下file.txt文件新增“aaa”,“bbb” 实现:开发者1新增“aaa”,开发者2新增“bbb” 条件:在同一个分支下协作完成 实际开发过程中,每个用户都与属于自己的码云账户,如果想要进…

css设置滚动条样式;滚动条设置透明

滚动条透明代码 .resizable-div {resize: both;/* 允许水平和垂直调整大小 */overflow: auto;/* 确保内容超出边界时出现滚动条 */ } /* 滚动条整体样式 */ .resizable-div::-webkit-scrollbar {width: 4px; /* 竖直滚动条宽度 */height: 4px; /* 水平滚动条高度 */ }/* 滚动条…

Python学习笔记6:pychram相关知识及安装教程,后续需要学习的入门知识

上篇文章说了,今天去公司重新装一下IDE,最后也是把过程这边再记录一下,有需要的可以参考一下。 关于pychram pychram是什么? PyCharm是由JetBrains公司开发的一款流行的Python集成开发环境(IDE)。它专为…

洛谷P1305 新二叉树(树的基本遍历)

题目描述 输入一串二叉树,输出其前序遍历。 输入格式 第一行为二叉树的节点数 𝑛。(1≤𝑛≤26) 后面 𝑛 行,每一个字母为节点,后两个字母分别为其左右儿子。特别地,数据保证第一行读入的节点…

60行代码加速20倍: NEON实现深度学习OD任务后处理绘框

【前言】 本文版权属于GiantPandaCV,未经允许,请勿转载! 最近在学neon汇编加速,由于此前OD任务发现在检测后处理部分使用OpenCV较为占用资源且耗时,遂尝试使用NEON做后处理绘框,以达到加速并降低CPU资源消耗…

Linux 中 “ 磁盘、进程和内存 ” 的管理

在linux虚拟机中也有磁盘、进程、内存的存在。第一步了解一下磁盘 一、磁盘管理 (1.1)磁盘了解 track( 磁道 ) :就是磁盘上的同心圆,从外向里,依次排序1号,2号磁盘........等等。…

QNX简述

文章目录 前言1. QNX简介1.1 什么是QNX1.2 QNX的应用场景1.3 QNX的优点1.4 QNX的发展史1.5 QNX的商业模式 2. QNX的技术特点3. QNX和其它操作系统的比较3.1 QNX VS LINUX3.2 QNX VS FreeRTOS3.3 QNX VS 鸿蒙操作系统 4. 我的疑问4.1 微内核看起来又稳定又容易调试,为…

【讯为Linux驱动开发】6.自旋锁spinlock

【自旋锁】 线程A获取自旋锁后,B假如想获取自旋锁则只能原地等待,仍占用CPU,不会休眠,直到获取自旋锁为止。 【函数】 DEFINE SINLOCK(spinlock t lock) 定义并初始化一个变量int spin lock init(spinlock t*lock) 初始化自…

技术速递|Java on Azure Tooling 5月更新 - Java 对 Azure 容器应用程序的入门指南支持

作者:Jialuo Gan 排版:Alan Wang 大家好,欢迎阅读 Java on Azure 工具 5 月份更新。在本次更新中,我们将介绍 Java 在 Azure 上的容器应用程序的入门指南。希望您喜欢这些更新,并享受使用 Azure 工具包的流畅体验。请下…

《pvz植物大战僵尸杂交版》V2.0.88整合包火爆全网,支持安卓、ios、电脑等!

今天来给大家安利一款让人欲罢不能的游戏——《植物大战僵尸杂交版》2.0.88版。这可不是普通的植物大战僵尸,它可是席卷了B站,火爆全网的存在! 先说说这个版本,它可是网络上现存最全的植物大战僵尸杂交版整合包。里面不仅有修改工…

wms海外仓系统什么价格?中小海外仓怎么选到高性价比wms系统

随着海外仓业务复杂度的逐渐提升,现在中小海外仓对wms海外仓系统的需求也越来越强烈。但是对于预算有限的中小海外仓企业来说,怎么才能选到性价比比较高的wms海外仓系统呢? 今天我们就来聊一下这个问题,希望对有类似需求的海外仓…

Git基础指令(图文详解)

目录 Git概述Git基础指令Linux系统操作指令 Git软件指令1.配置信息2.名称和邮箱3.初始化版本库4.向版本库中添加文件5.修改版本库文件6. 查看版本库文件历史 7.删除文件8.恢复历史文件 Git概述 Git基础指令 Linux系统操作指令 Git是一款免费、开源的分布式版本控制系统&…

github ssh key的SHA256是什么

github ssh key的SHA256是什么 怎么知道github上自己的公钥指纹和本地的公钥是否一致? 计算方法如下: cat .ssh/id_rsa.pub |awk { print $2 } | # Only the actual key data without prefix or commentsbase64 -d | # decode as base64s…