LVS-DR高可用-Keepalived

目录

Keepalved双机热备

核心概念

关键组件

工作流程

实例环境

配置keepalived

Web服务器配置


Keepalved双机热备

Keepalived双机热备是一种基于VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)实现的高可用性解决方案,广泛应用于Linux服务器集群中,确保关键服务的持续运行

核心概念

  • VRRP协议
    通过虚拟路由器(Virtual Router)实现冗余,同一组内的物理服务器共享一个虚拟IP(VIP)。主服务器(MASTER)负责处理流量,备份服务器(BACKUP)实时监控主服务器状态,若主服务器故障,备份服务器自动接管VIP,确保服务不中断。

  • 角色分工

    • MASTER:当前提供服务的服务器,拥有最高优先级。
    • BACKUP:备用服务器,监控MASTER状态,随时准备接管

关键组件

  • 虚拟IP(VIP)
    客户端通过VIP访问服务,实际请求由MASTER处理。MASTER故障时,VIP自动漂移至BACKUP,实现无缝切换。
  • 优先级(Priority)
    MASTER的优先级高于BACKUP(如100 vs 90),确保故障时优先级最高的BACKUP接管。
  • 健康检查(Health Check)
    Keepalived定期检测服务(如Nginx、MySQL)是否存活。若服务异常,自动降低服务器优先级,触发VIP切换。

工作流程

  1. 启动阶段
    • 所有服务器启动Keepalived服务,MASTER绑定VIP并开始处理流量。
    • BACKUP进入监听状态,不处理流量。
  2. 正常运行
    • MASTER定期发送VRRP广播包,BACKUP接收并确认MASTER存活。
  3. 故障切换
    • 若MASTER宕机或服务异常,BACKUP检测到心跳超时,自动提升为MASTER并绑定VIP。
    • 客户端无感知,服务持续可用。
  4. 故障恢复
    • 原MASTER恢复后,若优先级仍最高,可重新抢占VIP(需配置抢占模式)

实例环境

两台keepalived、两台web服务器、一台客户机

配置keepalived

01、02关闭防火墙

[root@localhost ~]# systemctl stop firewalld        #关闭防火墙
[root@localhost ~]# setenforce 0                #关闭系统内核

01、02下载 keepalived

[root@localhost ~]# dnf -y install keepalived        #下载keepalved

 01、02修改配置文件

[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf.sample keepalived.conf

01配置文件

[root@localhost ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}7
notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_01             #idvrrp_skip_check_adv_addr#vrrp_strict                	#严格模式vrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state MASTER                #先前定义的主interface ens33             #ens33virtual_router_id 51        #热备组 priority 100                #优先级advert_int 1authentication {	    	#认证类型auth_type PASS		    #类型auth_pass 1111		    #密码}virtual_ipaddress {192.168.10.100      #VIP漂移地址}
}virtual_server 192.168.10.100 80 {	#虚拟服务器(虚拟VIP)delay_loop 6lb_algo rr		                #负载均衡调度算法lb_kind DR		                #工作模式#persistence_timeout 50	        #网页超时时间protocol TCP		            #传输层协议real_server 192.168.10.103 80 {	#真实服务器weight 1		            #权重TCP_CHECK {		            #TCP健康检查connect_port 80        	#检查端口connect_timeout 3	    #连接超时时间 retry 3		            #重试次数delay_before_retry 3	#重试间隔}}real_server 192.168.10.104 80 {	#真实服务器weight 1		            #权重TCP_CHECK {		            #TCP健康检查connect_port 80        	#检查端口connect_timeout 3	    #连接超时时间retry 3		            #重试次数delay_before_retry 3	#重试间隔}}
}

02配置文件

[root@localhost ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_02            #idvrrp_skip_check_adv_addr#vrrp_strict                #注释严格模式vrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state BACKUP                #先前定义的主interface ens33             #网卡信息ens33virtual_router_id 51        #热备组priority 90                 #优先级advert_int 1authentication {            #认证类型auth_type PASS          #类型auth_pass 1111          #密码}virtual_ipaddress {192.168.10.100          #VIP漂移地址}
}virtual_server 192.168.10.100 80 {         #虚拟服务器(虚拟VIP)delay_loop 6lb_algo rr                             #负载均衡调度算法lb_kind NAT                            #工作模式#persistence_timeout 50                #网页超时时间protocol TCP                           #传输层协议real_server 192.168.10.103 80 {        #真实服务器weight 1                           #权重TCP_CHECK{                         #TCP健康检查connect_port 80                #检查端口connect_timeout 3              #连接超时时间retry 3                        #重试次数delay_before_retry 3           #重试间隔}}real_server 192.168.10.104 80 {        #真实服务器weight 1                           #权重TCP_CHECK{                         #TCP健康检查connect_port 80                #检查端口connect_timeout 3              #连接超时时间retry 3                        #重试次数delay_before_retry 3           #重试间隔}}
}

启动Keepalived

[root@localhost ~]# systemctl restart keepalived

Web服务器配置

 03、04关闭防火墙

[root@localhost ~]# systemctl stop firewalld			#关闭防火墙
[root@localhost ~]# setenforce 0				#关闭内核

下载httpd

[root@localhost ~]# dnf -y install httpd

配置网站内容

[root@localhost ~]# echo "33333333">/var/www/html/index.html	#03网站内容
[root@localhost ~]# echo "444444444">/var/www/html/index.html	#04网站内容

 启动httpd

[root@localhost ~]# systemctl satart httpd

 配置动态路由

[root@localhost ~]# ip addr add 192.168.10.100/32 dev lo label lo:0	#动态路由添加
(如果没有生效 nmcli c reload;nmcli c up lo 重载)

静态路由

[root@localhost ~]# route add -host 192.168.10.100 dev lo		#静态

如果想要开机自启动 修改配置文件 /etc/rc.local

[root@localhost ~]# vim /etc/rc.local
route add -host 192.168.10.100 dev lo

修改sysctl.conf

[root@localhost ~]# vim /etc/sysctl.conf
#末尾添加
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

验证:

 

[root@localhost ~]# curl 192.168.10.100
44444444
[root@localhost ~]# curl 192.168.10.100
33333333
[root@localhost ~]# curl 192.168.10.100
44444444
[root@localhost ~]# curl 192.168.10.100
33333333
[root@localhost ~]# curl 192.168.10.100
44444444
[root@localhost ~]# curl 192.168.10.100
33333333

后续可以尝试将其中一个web关掉或者将调度器关掉

up主只测试了关掉其中一个web 至于调度器 关掉了一个 就访问不进去了 备用的调度器没有抢占又或者不是Master 导致一直访问不上 也有可能是 两台keepalived还没有检测出来对方是否已经挂了 时间太长 所以就没有再尝试了 感兴趣的小伙伴可以尝试一下 我的配置应该是没问题的 有问题及时评论 及时解决 互相学习 还有噢 此外 还可以多添加一台NFS服务器 之前的文章有关于这方面的操作 应该是LVS—DR中 只不过觉得没必要 所以就没在做了 ok就这样 

 

 

 

 

 

 

 

 

 

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

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

相关文章

Polar编译码(SCL译码)和LDPC编译码(BP译码)的matlab性能仿真,并对比香农限

目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1香农极限 2.2 Polar码编译码原理与SCL译码 2.3 LDPC码编译码原理与BP译码 3.MATLAB核心程序 4.完整算法代码文件获得 1.算法仿真效果 matlab2024b仿真结果如下(完整代码运行后无水印)&#xff1a…

AI 产品的 MVP 构建逻辑:Prompt 工程 ≠ 产品工程?(实战增补篇)

一. 系统思维:产品工程的全局把控(实战增补篇) 1. 某智能风控系统的弹性架构实践 某消费金融公司在开发「30 秒极速贷」产品时,面临两大挑战: Prompt 优化困境:传统风控模型依赖 “提取用户信用报告关键…

Unity程序集

对于Unity的程序集,具体内容可以参考Unity官方文档,程序集定义 - 预定义程序集 比如Unity的默认程序集,Assembly-CSharp.dll,还有其他的比如 Assembly-CSharp-Editor.dll,Assembly-CSharp-firstpass.dll 没有指定或…

【架构艺术】平衡技术架构设计和预期的产品形态

近期笔者因为工作原因,开始启动team内部部分技术项目的重构。在事情启动的过程中,内部对于这件事情的定性和投入有一些争论,但最终还是敲定了下来。其中部分争论点主要在于产品形态,因为事情涉及到跨部门合作,所以产品…

React和原生事件的区别

一、核心差异对比表 维度原生事件React 事件绑定语法HTML 属性(onclick)或 DOM API(addEventListener)JSX 中使用驼峰式属性(onClick)绑定位置直接绑定到具体 DOM 元素统一委托到根节点(React …

大模型-modelscope下载和使用chatglm3-6b模型

前言 由于官方chatglm3-6b大模型文件下载比较慢,找到国内modelscope代替方案 1.SDK下载 pip install modelscope2.下载大模型文件 ✅方法1:通过pip下载 1.安装 setuptools 在当前使用的 Python 环境中安装 setuptools pip install setuptools2.通过如下命令安…

【unity游戏开发——编辑器扩展】AssetDatabase公共类在编辑器环境中管理和操作项目中的资源

注意:考虑到编辑器扩展的内容比较多,我将编辑器扩展的内容分开,并全部整合放在【unity游戏开发——编辑器扩展】专栏里,感兴趣的小伙伴可以前往逐一查看学习。 文章目录 前言一、AssetDatabase常用API1、创建资源1.1 API1.2 示例 …

css实现文字渐变

在前端开发中&#xff0c;给文字设置渐变色是完全可以实现的&#xff0c;常用的方式是结合 CSS 的 background、-webkit-background-clip 和 -webkit-text-fill-color 属性。下面是一个常见的实现方法&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> …

WSL 开发环境搭建指南:Java 11 + 中间件全家桶安装实战

在WSL&#xff08;Windows Subsystem for Linux&#xff09;环境下一站式安装开发常用工具&#xff0c;能极大提升工作效率。接下来我将分步为你介绍如何在WSL中安装Java 11、Maven、Redis、MySQL、Nacos、RabbitMQ、RocketMQ、Elasticsearch&#xff08;ES&#xff09;和Node.…

vue3: baidusubway using typescript

项目结构&#xff1a; <!--npm install -D tailwindcss-3d BaiduSubwayMap.vue npm install -D tailwindcss postcss autoprefixer--> <template><div class"relative w-full h-screen"><!-- 地图容器 --><div id"subway-container…

【iptables防火墙】-- URL过滤 (Hexstring、IP、DoT和DoH)

在路由器中使用iptables工具对URL地址进行过滤涉及到如下几个方面&#xff0c;hexstring、ip、DoT和DoH。 以过滤www.baidu.com为例 1、DNS阻断 m string --hex-string是iptables中一个以​十六进制格式​定义要匹配的二进制特征并且支持混合明文和二进制数据的模块。由于DN…

mysql-本地编译 MySQL 源码

完全理解你的感受&#xff01;MySQL 源码本地调试确实是一个“坑多”的过程&#xff0c;尤其是当你第一次尝试从源码构建和调试 MySQL 时。但别担心&#xff0c;我来一步步帮你梳理整个流程&#xff0c;并提供一个详细、可操作的指南&#xff0c;让你可以顺利跑起来 MySQL 源码…

深入理解 shared_ptr 与 enable_shared_from_this

在 C++ 的智能指针体系中,std::shared_ptr 是一个非常重要的工具,它通过引用计数机制帮助我们管理动态分配的对象生命周期,避免内存泄漏。然而,在某些情况下,我们可能需要从一个对象内部获取指向自身的 shared_ptr,这时候就需要使用 std::enable_shared_from_this 这个辅…

通义开源视觉感知多模态 RAG 推理框架 VRAG-RL:开启多模态推理新时代

通义实验室的自然语言智能团队&#xff0c;凭借深厚的技术积累与创新精神&#xff0c;成功研发并开源了视觉感知多模态 RAG 推理框架 VRAG-RL&#xff0c;为 AI 在复杂视觉信息处理领域带来了重大突破。 传统 RAG 方法的局限 传统的检索增强型生成&#xff08;RAG&#xff0…

【iOS】方法交换

方法交换 method-swizzling是什么相关API方法交换的风险method-swizzling使用过程中的一次性问题在当前类中进行方法交换类方法的方法交换 方法交换的应用 method-swizzling是什么 method-swizzling的含义是方法交换&#xff0c;他的主要作用是在运行的时候将一个方法的实现替…

Python - 爬虫;Scrapy框架之插件Extensions(四)

阅读本文前先参考 https://blog.csdn.net/MinggeQingchun/article/details/145904572 在 Scrapy 中&#xff0c;扩展&#xff08;Extensions&#xff09;是一种插件&#xff0c;允许你添加额外的功能到你的爬虫项目中。这些扩展可以在项目的不同阶段执行&#xff0c;比如启动…

95套HTML高端大数据可视化大屏源码分享

概述​​ 在大数据时代&#xff0c;数据可视化已成为各行各业的重要需求。这里精心整理了95套高端HTML大数据可视化大屏源码&#xff0c;这些资源采用现代化设计风格&#xff0c;可帮助开发者快速构建专业的数据展示界面。 ​​主要内容​​ ​​1. 设计风格与特点​​ 采用…

redis未授权(CVE-2022-0543)

概述 Redis 默认绑定在 0.0.0.0:6379&#xff0c;在未配置防火墙或访问控制的情况下会将服务暴露在公网上。若未设置访问密码&#xff08;默认通常为空&#xff09;&#xff0c;攻击者可直接未授权访问 Redis。利用 Redis 提供的 CONFIG 命令&#xff0c;攻击者可修改配置并将…

(面试)OkHttp实现原理

OkHttp 是一个高效的 HTTP 客户端&#xff0c;被广泛应用于 Android 和 Java 应用中。它提供了许多强大的特性&#xff0c;例如连接池、透明的 GZIP 压缩、HTTP/2 支持等。理解 OkHttp 的实现原理有助于更好地使用和调试它。 以下是 OkHttp 的一些核心实现原理&#xff1a; 1…

Netty 实战篇:构建简易注册中心,实现服务发现与调用路由

本文将为前面构建的轻量级 RPC 框架添加“服务注册与发现”功能&#xff0c;支持多服务节点动态上线、自动感知与调用路由&#xff0c;为构建真正可扩展的分布式系统打好基础。 一、背景&#xff1a;为什么需要注册中心&#xff1f; 如果每个客户端都硬编码连接某个 IP/端口的…