Keepalived 多主模型与 LVS 高可用

一.Keepalived多主模型

Keepalived多主模型概念

如上图,keepalived主从架构性能损耗较严重,如果业务分类明确,则可以配置keepalived多主模型降低损耗,两台keepalived互为主备,如:订单业务走keepalived1,keepalived2做备,商品业务走keepalived2,keepalived1做备。也就是keepalived1和keepalived2各拿一份vip

Keepalived多主模型配置

keepalived1订单业务:

vrrp_instance VI_2 {state BACKUP   #设置为BACKUPinterface ens33virtual_router_id 55priority 80advert_int 1authentication {auth_type PASSauth_pass 111156}virtual_ipaddress {192.168.80.40/24192.168.80.41/24192.168.80.42/24}notify_master "/root/sendemail.sh master"notify_backup "/root/sendemail.sh backup"notify_fault  "/root/sendemail.sh fault"
}

 

keepalived1商品业务: 

vrrp_instance VI_1 {state MASTER   #设置为MASTER   interface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.80.50/24192.168.80.51/24192.168.80.52/24}notify_master "/root/sendemail.sh master"notify_backup "/root/sendemail.sh backup"notify_fault  "/root/sendemail.sh fault"
}

keepalived2订单业务:

vrrp_instance VI_2 {state MASTERinterface ens33virtual_router_id 55priority 80advert_int 1authentication {auth_type PASSauth_pass 111156}virtual_ipaddress {192.168.80.40/24192.168.80.41/24192.168.80.42/24}notify_master "/root/sendemail.sh master"notify_backup "/root/sendemail.sh backup"notify_fault  "/root/sendemail.sh fault"}

 keepalived2商品业务:

vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 80advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.80.50/24192.168.80.51/24192.168.80.52/24}notify_master "/root/sendemail.sh master"notify_backup "/root/sendemail.sh backup"notify_fault  "/root/sendemail.sh fault"}

验证

 如上图,keepalived是商品业务的主节点,拿到商品业务的vip,keepalived2是订单业务的主节点,拿到订单业务的vip,并且互为主备。

如果此时一个keepalived坏了,另一个keepalived将拥有两个业务的vip

 

二.实现IPVS 高可用

在分布式系统架构中,高可用性设计始终是核心命题。当我们使用 Keepalived 实现 VIP 飘移时,本质上只是解决了 IP 层的可用性问题,这就像为建筑搭建了稳固的地基,但要让大楼真正运转起来,还需要在服务层构建完整的容错机制。LVS(Linux Virtual Server)正是实现这一目标的关键组件,它与 Keepalived 的 VRRP 协议形成了完美的能力互补。

虚拟服务器配置

virtual_server IP port {                # 定义虚拟服务器,指定监听的IP和端口delay_loop<INT>                    # 健康检查的时间间隔(单位:秒)lib_algo rr|wr1|cln1c|lib|cln1dh    # 负载均衡算法(rr=轮询,wr1=加权轮询,cln1c=最少连接,cln1dh=目标地址哈希)lib_kind NAT|ON|TUN                 # 数据包转发模式(NAT=网络地址转换,TUN=隧道模式,ON=直接路由)persistence_timeout <INT>           # 会话保持时间(单位:秒,0表示不启用)protocol TCP|USIP|SCTP              # 协议类型(TCP/USIP[UDP]/SCTP)sorry_server <IPADDR> <PORT>        # 备用服务器地址,当所有真实服务器宕机时启用real_server <IPADDR> <PORT> {       # 定义真实服务器(后端节点)weight <INT>                    # 服务器权重(权重越高分配的请求越多)notify_up <STRING>              # 服务器上线时触发的脚本/命令notify_down <STRING>            # 服务器下线时触发的脚本/命令# 健康检查方法(只能选其一):HTTP_GET|SSL_GET {              # HTTP/HTTPS 检查(需配置具体URL和状态码)url { path <PATH> }         # 示例:url { path "/health" status_code 200 }}TCP_CHECK { ... }               # TCP端口检查(默认检测端口连通性)SNTP_CHECK { ... }              # SNTP协议检查(用于时间服务器)MISC_CHECK { ... }             # 自定义脚本检查(需指定外部脚本路径)}
}

 例如:

vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.100}
}virtual_server 192.168.1.100 80 {delay_loop 6lb_algo wrrlb_kind DRprotocol TCPreal_server 192.168.1.101 80 {weight 3TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}

 该配置展示了

  • VRRP 实现 VIP(192.168.1.100) 的飘移

  • LVS 使用 DR 模式进行流量分发

  • 基于 TCP 连接的健康检查机制

  • 权重为 3 的服务器优先级设置

当某台真实服务器不可达时,LVS 会自动将其移出服务池,同时 Keepalived 通过 VRRP 协议维护 VIP 的可用性,形成双重保障机制。

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

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

相关文章

RISCV虚拟化环境搭建

概要 本文记搭建 RISCV 虚拟化环境的流程。 整体架构 我们使用 QEMU 来模拟 RISCV 的各种硬件扩展环境&#xff0c;通过 QEMU 启动 Ubuntu 作为我们的 Host 来在 Host 之中通过 KVMTOOL 来运行 Guest&#xff0c;学习 RISCV 的虚拟化。 目前我的 X86_64 主机使用的是 Ubunt…

书摘 ASP.NET Core技术内幕与项目实战:基于DDD与前后端分离

IT行业的发展瞬息万变,新技术层出不穷,很多技术人员出于个人兴趣、个人职业发展等考虑而选择一些流行的新技术,他们会把各种复杂的架构模式、高精尖的技术都加入架构中,这增加了项目的复杂度、延长了交付周期、增加了项目的研发成本。有些技术并不符合公司的情况,最后项目…

神策数据接入 DeepSeek,AI 赋能数据分析与智能运营

在 AI 技术迅猛发展的浪潮下&#xff0c;神策数据正在加速推进人工智能在数据分析和智能运营领域的深度应用。近日&#xff0c;神策数据宣布全面接入 DeepSeek&#xff0c;为企业客户带来更加智能化、高效的数据分析与智能运营服务。这一举措展现了神策数据在人工智能方向的探索…

c++ 类和对象 —— 中 【复习笔记】

1. 类的默认成员函数 如果一个类什么成员都没有&#xff0c;简称空类。但实际上&#xff0c;任何类在不写成员时&#xff0c;编译器会自动生成6个默认成员函数&#xff08;用户未显式实现&#xff0c;编译器生成的成员函数&#xff09; 这6个成员函数可分为三类&#xff1a; …

数学建模:MATLAB循环神经网络

一、简述 1.循环神经网络 循环神经网络&#xff08;RNN&#xff09;是一种用于处理序列数据的神经网络。不同于传统的前馈神经网络&#xff0c;RNN在隐藏层中加入了自反馈连接&#xff0c;使得网络能够对序列中的每个元素执行相同的操作&#xff0c;同时保持一个“记忆”状态…

在windows10系统上安装docker,然后在容器中运行GPU版本的Pytorch,并使用vscode连接该容器

一 . 安装Docker Desktop 首先打开网址https://docs.docker.com/desktop/install/windows-install/ 下载完后&#xff0c;双击下面的exe文件进行安装&#xff0c;默认情况下&#xff0c;Docker Desktop 安装在C:\Program Files\Docker\Docker 出现提示时&#xff0c;请确保…

基于SpringBoot + Vue 的房屋租赁系统

基于springboot的房屋租赁管理系统-带万字文档 SpringBootVue房屋租赁管理系统 送文档 本项目有前台和后台两部分、多角色模块、不同角色权限不一样 共分三种角色&#xff1a;用户、管理员、房东 管理员&#xff1a;个人中心、房屋类型管理、房屋信息管理、预约看房管理、合…

C++特性——智能指针

为什么需要智能指针 对于定义的局部变量&#xff0c;当作用域结束之后&#xff0c;就会自动回收&#xff0c;这没有什么问题。 当时用new delete的时候&#xff0c;就是动态分配对象的时候&#xff0c;如果new了一个变量&#xff0c;但却没有delete&#xff0c;这会造成内存泄…

C语言之 循环语句:程序运行的核心动力(上)

个人主页&#xff1a;strive-debug 在 C 语言中&#xff0c;分支结构可以通过 if、switch 语句来实现&#xff0c;循环结构则可以通过 for、while、do while 语句来实现。 if 语句 if 语句的语法形式如下&#xff1a; if (表达式)语句; 如果表达式成立&#xff08;为真&am…

FreeRTOSBug解析:一个任务printf打印一半突然跳转另一个任务,导致另一个任务无法打印

bug现象&#xff1a; key任务&#xff1a; 默认任务&#xff1a; 此时两个任务的优先级相同&#xff0c;抢占式调度&#xff0c;时间片轮转&#xff0c;空闲任务让步。 但是会出现一个问题&#xff0c;key任务在发送完队列之后不会立即跳转到默认任务的队列接收函数后的print…

操作系统八股文整理(一)

操作系统八股文整理 一、进程和线程的区别二、进程与线程的切换过程一、进程切换进程切换的步骤&#xff1a; 二、线程切换线程切换的步骤&#xff1a; 三、进程切换与线程切换的对比四、上下文切换的优化 三、系统调用一、系统调用的触发二、从用户空间切换到内核空间三、执行…

卷积神经网络(CNN)之 EfficientNet

在深度学习领域&#xff0c;模型的计算效率与性能之间的平衡一直是一个核心挑战。随着卷积神经网络&#xff08;CNN&#xff09;在图像分类、目标检测等任务中取得显著成果&#xff0c;模型的复杂度和计算需求也急剧增加。2019年&#xff0c;Google Research 提出的 EfficientN…

学生选课管理系统数据库设计报告

学生选课管理系统数据库设计报告 一、需求分析 &#xff08;一&#xff09;项目背景 学生选课管理系统是高校教学管理的重要组成部分&#xff0c;旨在实现学生选课、课程管理、成绩录入与查询等功能的自动化和信息化。通过该系统&#xff0c;学生可以方便地选择课程&#xf…

工具介绍《Awsome-Redis-Rogue-Server 与 redis-rogue-server》

1. 核心功能与攻击场景 redis-rogue-server 基于Redis主从复制漏洞&#xff08;CVE未公开&#xff09;&#xff0c;针对Redis 4.x~5.0.5版本设计&#xff0c;通过伪造恶意主节点强制同步恶意模块&#xff08;.so文件&#xff09;实现远程代码执行&#xff08;RCE&#xff09;。…

Razor C# 变量

Razor C# 变量 引言 在ASP.NET MVC和Razor视图引擎中,变量是构建动态网页的基础。理解Razor C#变量的使用对于开发者来说至关重要。本文将详细介绍Razor C#变量的概念、类型、作用域以及如何在实际项目中有效使用它们。 一、Razor C# 变量的概念 Razor C# 变量是存储在Raz…

【QA】模板方法模式在Qt中有哪些应用?

在 Qt 框架中&#xff0c;模板方法模式&#xff08;Template Method Pattern&#xff09;被广泛应用于框架的设计中&#xff0c;通过定义算法骨架并允许子类在不改变结构的情况下重写部分步骤。以下是 Qt 中典型的应用场景及示例&#xff1a; 1. 事件处理&#xff08;Event Ha…

有趣的算法实践:整数反转与回文检测(Java实现)

题目描述&#xff1a;整数反转与回文检测 要求实现两个功能&#xff1a; 将输入的整数反转&#xff08;保留符号&#xff0c;如输入-123返回-321&#xff09;判断反转后的数是否为回文数&#xff08;正反读相同&#xff09; 示例&#xff1a; 输入&#xff1a;123 → 反转结…

【协作开发】低成本一键复刻github的gitea

在阅读 next-public 时&#xff0c;反思原本的需求&#xff0c;是否本未倒置&#xff0c;故而重新调研当下开源现状。发现 gitea 完全满足商业软件的开发要求&#xff0c;并且价格足够低&#xff0c;使用足够方便&#xff0c;其他同类软件完全不用看了&#xff0c;真是世界级的…

基于“动手学强化学习”的知识点(二):第 15 章 模仿学习(gym版本 >= 0.26)

第 15 章 模仿学习&#xff08;gym版本 &#xff1e; 0.26&#xff09; 摘要 摘要 本系列知识点讲解基于动手学强化学习中的内容进行详细的疑难点分析&#xff01;具体内容请阅读动手学强化学习&#xff01; 对应动手学强化学习——模仿学习 # -*- coding: utf-8 -*-import gy…

JAVA面试_进阶部分_Java JVM:垃圾回收(GC 在什么时候,对什么东西,做了什么事情)

在什么时候&#xff1a; 首先需要知道&#xff0c;GC又分为minor GC 和 Full GC&#xff08;major GC&#xff09;。Java堆内存分为新生代和老年代&#xff0c;新生代 中又分为1个eden区和两个Survior区域。 一般情况下&#xff0c;新创建的对象都会被分配到eden区&#xff…