LVS+Keepalived NGINX+Keepalived 高可用群集实战部署
Keepalived及其工作原理
Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。
VRRP协议(虚拟路由冗余协议)
- 是针对路由器的一种备份解决方案
- 由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务
- 每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态
- 若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务
工作原理:
在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个虚拟IP(VIP),主服务器会发送VRRP通告信息给备份服务器,当备份服务器收不到VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。
一个合格的群集应该具备的特点:
1.负载均衡 用于提高群集的性能 LVS Nginx HAProxy SLB F5
2.健康检查(探针) 针对于调度器和节点服务器 Keepalived Heartbeat
3.故障转移 通过VIP漂移实现主备切换 VRRP 脚本
健康检查(探针)常用的工作方式:
- 发送心跳消息 : vrrp报文 ping/pong
- TCP端口检查 :向目标主机的 IP:PORT 发起TCP连接请求,如果TCP连接三次握手成功则认为健康检查正常,否则认为健康检查异常
- HTTP URL检查::向目标主机的URL路径(比如http://IP:PORT/URI路径)发起 HTTP GET 请求方法。如果响应消息的状态码为 2XX 或 3XX,则认为健康检查正常 如果响应消息的状态码为 4XX 或 5XX,则认为健康检查异常
LVS+Keepalived 高可用群集部署
实验:配置
主DR 服务器:192.168.73.100
备DR 服务器:192.168.73.130
Web 服务器1:192.168.73.110
Web 服务器2:192.168.73.120
vip:192.168.73.15
nfs服务器 192.168.73.140
1.配置实验环境:
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
2.配置两台web节点服务器
将nfs服务器的/share文件挂载再 /etc/share/nginx/html/zyz101目录中
vim /etc/fstab192.168.73.140:/share /usr/share/nginx/html/zyz101 nfs defaults,_netdev 0 0 mount -a

配置网卡文件
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.73.15 #指向vip
NETMASK=255.255.255.255service network restart 或 systemctl restart network
修改 /etc/sysctl.conf 文件
/etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
sysctl -p #加载
设置临时路由
设置临时路由
route add -host 192.168.73.15
或者
vim /etc/rc.local
/sbin/route add -host 192.168.73.15 dev lo:0
chmod +x /etc/rc.d/rc.local永久加载:
vim /etc/sysconfig/static-routes
any host 192.168.73.15 dev lo:0systemctl restart network #重启网卡
3..配置负载调度器(主、备相同)
yum -y install ipvsadm keepalived #安装keepalived
modprobe ip_vs #开启模块
cat /proc/net/ip_vs 或者 lsmod | grep ip_vs #查看模块开始配置keeplived
global_defs { #定义全局参数
--10行--修改,邮件服务指向本地smtp_server 127.0.0.1
--12行--修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02router_id LVS_01后面四行vrrp开头的全部删掉
主配置global_defs 全局参数如下

vrrp_instance VI_1 { #定义VRRP热备实例参数
--20行--修改,指定热备状态,主为MASTER,备为BACKUPstate MASTER--21行--修改,指定承载vip地址的物理接口interface ens33--22行--修改,指定虚拟路由器的ID号,每个热备组保持一致 virtual_router_id 51--23行--修改,指定优先级,数值越大优先级越高,这里设置主为100,备为90priority 100修改virtual_ipaddress { #指定群集vip地址192.168.73.15}--36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.73.15 80delay_loop 6 #健康检查的间隔时间(秒)lb_algo rr #指定调度算法,轮询(rr)--39行--修改,指定群集工作模式,直接路由(DR)lb_kind DRpersistence_timeout 0 #连接保持时间(秒)protocol TCP #应用服务采用的是 TCP协议--43行--修改,指定第一个Web节点的地址、端口real_server 192.168.80.110 80 {weight 1 #节点的权重--45行--删除,添加以下健康检查方式 TCP_CHECK {connect_port 80 #添加检查的目标端口connect_timeout 3 #添加连接超时(秒)nb_get_retry 3 #添加重试次数delay_before_retry 3 #添加重试间隔


然后再real_server 添加第二个web节点的地址和端口
再删除后面的多于选项
systemctl restart keepalived
ip a 查看虚拟网卡vip地址 只有主服务器上有vip地址
systemctl restart ipvsadm
ipvsadm -ln
#如没有VIP 的分发策略,则重启 keepalived 服务,systemctl restart keepalived
验证测试;
在客户端访问 http://192.168.73.15/zyz101/test.html
再在主服务器关闭 keepalived 服务后再测试, systemctl stop keepalived
NGINX配合keepalived实现高可用负载均衡
实验配置
主DR 服务器:192.168.73.40
备DR 服务器:192.168.73.30
Web 服务器1:192.168.73.110
Web 服务器2:192.168.73.120
vip:192.168.73.15
nfs服务器 192.168.73.140
1.配置实验环境:
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
2.配置两台nginx服务器作为负载均衡的主备服务器
vim /etc/nginx/nginx.conf
在event同层块配置stream 在stream块中配置upstream

nginx -t
syatemctl enable --now nginx
安装keepalived
yum install -y keepalived.x86_64 cd /etc/keepalived/lsvim nginx_check.sh #编写脚本 确保nginx服务有没有开启 没有开启就关闭keepalivedchmod +x nginx_check.sh #给脚本加权
如下:

修改keepalived主配置文件

vrrp_instance VI_1 {state MASTER # 指定keepalived的角色,MASTER为主,BACKUP为备interface ens33 # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡virtual_router_id 66 # 虚拟路由编号,主从要一直priority 100 # 优先级,数值越大,获取处理请求的优先级越高advert_int 1 # 检查间隔,默认为1s(vrrp组播周期秒数)#授权访问authentication {auth_type PASS #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信auth_pass 1111}track_script {nginx_check.sh #(调用检测脚本)}virtual_ipaddress {192.168.73.15 # 定义虚拟ip(VIP),可多设,每行一个}
}#后面把配置lvs多余的删掉

启动keepalived和nginx 进行测试

脑裂故障
现象:主服务器和备服务器都同时拥有相同的VIP
原因:因为主服务器和备服务器的通信中断,导致备服务器无法收到主服务器发送的VRRP报文,备服务器误认为主服务器已经故障了并通过ip命令生成VIP
解决:关闭主服务器或备服务器其中一个的keepalived服务
预防:(1)如果是系统防火墙导致,则关闭防火墙或添加防火墙规则放通VRRP组播地址(224.0.0.18)的传输
(2)如果是主备服务器之间的通信链路中断导致,则可以在主备服务器之间添加双链路通信
(3)在主服务器使用脚本定时判断与备服务器通信链路是否中断,如果判断是主备服务器之间的链接中断则自行关闭主服务器上的keepalived服务

(4)利用第三方应用或监控系统检测是否发生了脑裂故障现象,如果确认发生了脑裂故障则通过第三方应用或监控系统来关闭主服务器或备服务器其中一个的keepalived服务
相关文章:
LVS+Keepalived NGINX+Keepalived 高可用群集实战部署
Keepalived及其工作原理 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。 VRRP协议(虚拟路由冗余协议) 是针对路由器的一种备份解决方案由多台路由器组成一个热备组,通过共用的…...
Mybatis做批量操作
动态标签foreach,做过批量操作,但是foreach只能处理记录数不多的批量操作,数据量大了后,先不说效率,能不能成功操作都是问题,所以这里讲一讲Mybatis正确的批量操作方法: 在获取opensession对象…...
Python | 中心极限定理介绍及实现
统计学是数据科学项目的重要组成部分。每当我们想从数据集的样本中对数据集的总体进行任何推断,从数据集中收集信息,或者对数据集的参数进行任何假设时,我们都会使用统计工具。 中心极限定理 定义:中心极限定理,通俗…...
探索Napier:Kotlin Multiplatform的日志记录库
探索Napier:Kotlin Multiplatform的日志记录库 在现代软件开发中,日志记录是不可或缺的部分,它帮助开发者追踪应用的行为和调试问题。对于Kotlin Multiplatform项目而言,能够在多个平台上统一日志记录的方法显得尤为重要。Napier…...
MySQL基础——SQL语句
目录 1.SQL通用语法 2.SQL分类 3 DDL 3.1数据库操作 3.1.1查询 3.1.2创建 3.1.3删除 3.1.4使用 3.2表操作 3.2.1查询 3.2.2创建 3.2.3数据类型 3.2.4表修改(alter打头) 3.2.5表删除(drop/truncate打头) 3.3 DDL总结…...
比特币通用API服务
Bitcoin 通用API服务 exlectrs: API后台服务(Rust语言编写) https://github.com/Blockstream/electrs.git 使用electr作为后台的区块链浏览器:https://github.com/Blockstream/esplora.git https://github.com/Blockstream/electrs https://github.com/romanz/electrs/blo…...
Spock mock私有方法
mock私有方法 被测试的方法是MiddleGroundAppListBO类下的getPromptIdKeyAppPromptInfoMap方法 private Map<Long, AppPromptInfoModel> getPromptIdKeyAppPromptInfoMap(String cubeAppIdentity) {List<AppPromptInfoDO> promptByApp knowledgeCubeQueryR…...
网络协议四
一、云中网络 物理机的劣势: 1)一旦需要扩容 CPU、内存、硬盘,都需要去机房手动弄,非常麻烦 2)采购的机器往往动不动几百 G 的内存,而每个应用往往可能只需要 4 核 8G 3)一台机器,…...
大数据入门实践一:mac安装Hadoop,Hbase,FLume
一、安装Hadoop 安装hadoop参考此文,关键点是安装JDK和Hadoop的配置,为避免引用文章变收费,我把关键信息摘录如下: jdk安装和配置就不说了(我本机安装了1.8/15/17/21,以17为主),hadoop安装过程…...
openGauss 6.0.0 一主二备集群安装及使用zcbus实现Oracle到openGauss的数据同步
一、前言 openGauss 6.0.0-RC1是openGauss 2024年3月发布的创新版本,该版本生命周期为0.5年。根据openGauss官网介绍,6.0.0-RC1与之前的版本特性功能保持兼容,另外,在和之前版本兼容的基础上增加了很多新功能,比如分区表性能优化…...
0118__C语言——float.h文件
C语言——float.h文件_c float.h-CSDN博客...
settings和toolchains.xml 区别用法配置
在 IntelliJ IDEA 中配置 Maven 项目时,settings.xml 和 toolchains.xml 的使用场景有所不同。以下是具体的使用情景和配置方法: 1. 使用 settings.xml 使用场景 全局或用户级别的配置:包括设置本地仓库位置、远程仓库、代理服务器、认证信…...
leetcode打卡#day43 携带研究材料(第六期模拟笔试)、416. 分割等和子集
携带研究材料(第六期模拟笔试) #include<iostream> #include<algorithm> #include<vector>using namespace std;int getMaxValue(vector<int>& weights, vector<int>& values, int n, int m) {vector<vector&…...
MPLS的配置
1、IP可达--- 使用路由协议全网可达 2、配置 MPLS ——LDP [r2]mpls lsr-id 2.2.2.2 必须先定义 mpls 的router-id,要为本地设备的真实ip地址,且邻居可达,因为该地址将用于建立 TCP 会话,建议使用环回地址 [r2]mpls 再开…...
【机器学习】机器学习与教育科技在个性化教学中的融合应用与性能优化新探索
文章目录 引言机器学习与教育科技的基本概念机器学习概述监督学习无监督学习强化学习 教育科技概述学生学习行为分析个性化学习路径推荐智能化教育评估 机器学习与教育科技的融合应用实时学习数据分析数据预处理特征工程 学生成绩预测与优化模型训练模型评估 个性化学习路径推荐…...
C++:十大排序
目录 时间复杂度分析 选择排序 引言 算法思想 动图展示 代码实现 (升序) 优化 代码实现 分析 冒泡排序 引言 算法思想 动图展示 代码实现 插入排序 引言 算法思想 动图展示 代码实现 计数排序 引言 算法思想 动图展示 代码实现 桶排序 引言 算法思…...
Python武器库开发-武器库篇之Mongodb未授权漏洞扫描器(五十六)
Python武器库开发-武器库篇之Mongodb未授权漏洞扫描器(五十六) MongoDB 未授权访问漏洞简介以及危害 MongoDB是一款非常受欢迎的开源NoSQL数据库,广泛应用于各种Web应用和移动应用中。然而,由于默认配置的不当或者管理员的疏忽,导致不少Mon…...
【论文速读,找找启发点】2024/6/16
ICME 2023 End-To-End Part-Level Action Parsing With Transformer 类似 DETR,通过 加 query的方式实现 端到端 ELAN: Enhancing Temporal Action Detection with Location Awareness 如何实现位置感知? > 重叠的卷积核? Do we really …...
canal监控mysql变化
目录 概述实践代码总结表创建插入一行数据更新一行数据删除一笔数据 概述 本文测试 canal 监控 mysql 表变化。canal 1.1.7 mysql 8.0.x 版本。 实践 代码 public static void main(String[] args) {// 创建一个 CanalConnector 连接器// username:字符串类型,Canal使用该用…...
MySQLWorkbench导出sql文件
MySQLWorkbench导出sql文件 前言效果图导出操作选择要导出的数据库遇到的问题解决问题 查看mysql路径 前言 在完成数据库搭建之后,需要为上线做准备,那么就需要导出数据库的建库sql了 本篇文章讲解的是mysql Workbench 导出数据建库脚本 效果图 导出操…...
从2012年ACE奖看电子产业创新:Zynq、CMOS振荡器与混合域示波器的启示
1. 从一场颁奖礼,看电子产业的创新脉搏前几天翻看资料库,又看到了2012年那场UBM ACE颁奖典礼的旧闻。说实话,每次回顾这种历史性的行业奖项,感觉都像在翻阅一本电子产业的“创新年鉴”。那一年,Xilinx的Zynq-7000、NXP…...
为什么你需要m4s-converter:让B站缓存视频重获自由的秘密武器
为什么你需要m4s-converter:让B站缓存视频重获自由的秘密武器 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾经遇到过这样的…...
【DeepSeek Service Mesh安全白皮书首发】:零信任网络策略如何实现API级微隔离与自动证书轮转?
更多请点击: https://intelliparadigm.com 第一章:DeepSeek Service Mesh安全白皮书发布背景与核心价值 随着云原生架构在金融、政务及大规模企业级场景中深度落地,服务间通信的可信性、策略一致性与零信任合规性已成为架构演进的关键瓶颈。…...
ConcurrentHashMap详细讲解(java)
文章目录前言一、 为什么用ConcurrentHashMap1.1 什么是 ConcurrentHashMap1.2 为什么用ConcurrentHashMap二、 并发和锁的基础知识2.1 缘起:硬件的“木桶效应”与 JMM 的诞生2.2 并发编程的三大核心危机2.2.1 可见性问题:CPU 缓存引发的“盲区”2.2.2 原…...
可解释AI评估指南:从原型纯度到TCAV分数的量化度量体系
1. 项目概述:为什么我们需要量化评估可解释AI?在人工智能,尤其是深度学习模型日益渗透到医疗诊断、自动驾驶、金融风控等关键领域的今天,一个核心的信任危机始终悬而未决:我们如何相信一个“黑箱”模型做出的决策&…...
LocalChat:零门槛本地部署开源大语言模型,实现隐私安全的离线AI对话
1. 项目概述与核心价值如果你和我一样,对ChatGPT这类大语言模型的能力感到兴奋,但又对数据隐私、服务依赖和网络延迟心存顾虑,那么LocalChat这个项目可能就是为你量身打造的。简单来说,LocalChat是一个让你能在自己电脑上…...
北京数据恢复公司排名哪家好
在当今数字化时代,数据的重要性不言而喻。无论是个人用户的珍贵照片、文档,还是企业的重要业务数据,一旦丢失都可能造成巨大的损失。在北京,有众多的数据恢复公司,如何选择一家靠谱的公司成为了许多人关心的问题。下面…...
Google Calendar智能安排深度拆解(Gemini原生集成技术白皮书级解析)
更多请点击: https://intelliparadigm.com 第一章:Gemini Google Calendar智能安排技术全景概览 Gemini 与 Google Calendar 的深度集成标志着日程管理进入语义理解驱动的新阶段。该能力并非简单调用 API,而是依托 Gemini 模型对自然语言指…...
艾尔登法环黑夜君临修改器2026.5.11最新中文汉化版免费下载 转存后自动更新 (看到请立即转存 资源随时失效)
在《艾尔登法环》的庞大世界观下,一款名为《艾尔登法环:黑夜君临》(ELDEN RING NIGHTREIGN)的衍生作品于 2025 年正式登场。它并非单纯的续作或大型 DLC,而是一款基于原作设定、专注于多人协作生存与浓缩化 RPG 体验的…...
开源工具any2card:任意格式内容智能转换结构化卡片实战指南
1. 项目概述:从“任意格式”到“卡片”的智能转换革命最近在折腾个人知识库和内容管理时,我遇到了一个老生常谈但又无比棘手的问题:信息格式的碎片化。我的资料散落在各处,有PDF论文、网页文章、TXT笔记、甚至是一些图片里的文字。…...
