keepalived+lvs高可用负载均衡集群配置方案
配置方案
- 一、配置主备节点
- 1. 在主备节点上安装软件
- 2. 编写配置文件
- 3. 启动keepalived服务
- 二、配置web服务器
- 1. 安装并启动http服务
- 2. 编写主页面
- 3.配置虚拟地址
- 4. 配置ARP
- 三、测试
- 服务器IP:
- 主负载均衡服务器 master 192.168.152.71
- 备负载均衡服务器 backup 192.168.152.72
- web服务器1 web1 192.168.152.73
- web服务器2 web2 192.168.152.74
- 虚拟IP VIP 192.168.152.100
一、配置主备节点
1. 在主备节点上安装软件
yum install -y keepalived ipvsadm
2. 编写配置文件
master.ip 和 backup.ip 都要配置,把原本的内容清空
vim /etc/keepalived/keepalived.conf
写如下内容: 确保主备节点的 router_id state priority 的值不一样
! Configuration File for keepalivedglobal_defs {router_id 1 # 唯一标识本节点的路由器ID,主备节点的ID必须不同
}vrrp_instance VI_1 {state MASTER # 主节点的状态为MASTER,备节点的状态为BACKUPinterface ens33 # 用于主备节点之间通信的网卡名称virtual_router_id 51 # 虚拟路由器ID,主备节点必须一致priority 100 # 节点优先级,数字越大优先级越高advert_int 1 # VRRP 广播间隔时间,单位为秒authentication {auth_type PASS # 认证方式为PASSauth_pass 123456 # 认证密码,主备节点上的密码必须一致,密码最大8位}virtual_ipaddress {192.168.152.100/24 # 配置的虚拟IP地址及子网掩码,VIP地址}
}virtual_server 192.168.152.100 80 { # 定义虚拟服务器,端口80delay_loop 3 # 健康检查的间隔时间,每3秒检查一次后端服务器状态lb_algo rr # 负载均衡算法,使用轮询(rr)方式lb_kind DR # LVS 集群模式,使用Direct Routing(DR)模式protocol TCP # 使用TCP协议进行负载均衡real_server 192.168.152.73 80 { # web1服务器IP地址,端口80weight 1 # 服务器权重,权重相同表示流量均等分配TCP_CHECK {connect_timeout 3 # TCP健康检查的连接超时时间,3秒内成功连接视为健康}}real_server 192.168.152.74 80 { # web2服务器IP地址,端口80weight 1 # 服务器权重TCP_CHECK {connect_timeout 3 # TCP健康检查的连接超时时间}}
}
3. 启动keepalived服务
systemctl start keepalived && systemctl enable keeplavied
二、配置web服务器
下面的内容 web1 和 web2 都要配置
1. 安装并启动http服务
这里用apache测试,不重要其它http服务也无所谓
yum install -y httpd && systemctl start httpd && systemctl enable httpd
2. 编写主页面
web1:
echo web1 > /var/www/html/index.html
web2:
echo web2 > /var/www/html/index.html
这样写是为了在最后访问时效果更明显,方便区分
3.配置虚拟地址
复制 ifcfg-lo 网卡配置文件,并改名为 ifcfg-lo:0
cp /etc/sysconfig/network-scripts/{ifcfg-lo,ifcfg-lo:0}
更改 vim /etc/sysconfig/network-scripts/ifcfg-lo:0 文件的内容如下
DEVICE=lo:0
IPADDR=192.168.152.100 #对外提供服务的虚拟地址
NETMASK=255.255.255.255
ONBOOT=yes
4. 配置ARP
# 在所有网络接口上设置 ARP 请求的响应行为
net.ipv4.conf.all.arp_ignore = 1
# 设置 ARP 忽略规则为 1:只响应目标地址与本接口地址匹配的 ARP 请求。这有助于避免错误的 ARP 响应。net.ipv4.conf.all.arp_announce = 2
# 设置 ARP 宣告规则为 2:只在接口上声明 IP 地址,当 IP 地址只在该接口上有效时。这有助于避免将 IP 地址错误地声明在多个接口上。# 在默认的网络接口上设置 ARP 请求的响应行为
net.ipv4.conf.default.arp_ignore = 1
# 设置默认网络接口的 ARP 忽略规则为 1:只响应目标地址与本接口地址匹配的 ARP 请求。这确保新添加的接口也遵循相同的 ARP 忽略规则。net.ipv4.conf.default.arp_announce = 2
# 设置默认网络接口的 ARP 宣告规则为 2:只在接口上声明 IP 地址,当 IP 地址只在该接口上有效时。这确保新添加的接口也遵循相同的 ARP 宣告规则。# 在回环接口 (lo) 上设置 ARP 请求的响应行为
net.ipv4.conf.lo.arp_ignore = 1
# 设置回环接口的 ARP 忽略规则为 1:回环接口只响应针对本接口的 ARP 请求,避免干扰其他接口的 ARP 行为。net.ipv4.conf.lo.arp_announce = 2
# 设置回环接口的 ARP 宣告规则为 2:回环接口只在其上声明 IP 地址,这防止了回环接口在其他接口上错误地声明 IP 地址。
三、测试
在浏览器输入虚拟IP地址 192.168.152.100
刷新观察变化,如果一直没有变化可能是浏览器缓存,可以用下面命令查看,在 master 上执行
ipvsadm -Lnc
结果如下:
IPVS connection entries
pro expire state source virtual destination
TCP 01:37 FIN_WAIT 192.168.152.1:55317 192.168.152.100:80 192.168.152.74:80
TCP 15:02 ESTABLISHED 192.168.152.1:55428 192.168.152.100:80 192.168.152.73:80看最后一列IP地址,可以看到已经分配到两个web服务器上
把 master 主机的 keepalived 服务关闭,观察 backup 主机
在 backup 主机输入下面命令,看虚拟IP是否存在,并刷新网页看是否可用
ip a
相关文章:
keepalived+lvs高可用负载均衡集群配置方案
配置方案 一、配置主备节点1. 在主备节点上安装软件2. 编写配置文件3. 启动keepalived服务 二、配置web服务器1. 安装并启动http服务2. 编写主页面3.配置虚拟地址4. 配置ARP 三、测试 服务器IP: 主负载均衡服务器 master 192.168.152.71备负载均衡服务器 backup 192…...
Azure OpenAI Swagger Validation Failure with APIM
题意:Azure OpenAI Swagger 验证失败与 APIM 问题背景: Im converting the Swagger for Azure OpenAI API Version 2023-07-01-preview from json to yaml 我正在将 Azure OpenAI API 版本 2023-07-01-preview 的 Swagger 从 JSON 转换为 YAML。 My S…...
haproxy高级功能配置
介绍HAProxy高级配置及实用案例 一.基于cookie会话保持 cookie value:为当前server指定cookie值,实现基于cookie的会话黏性,相对于基于 source 地址hash 调度算法对客户端的粒度更精准,但同时也加大了haproxy负载,目前此模式使用…...
XXL-JOB分布式定时任务框架快速入门
文章目录 前言定时任务分布式任务调度 1、XXL-JOB介绍1.1 XXL-JOB概述1.2 XXL-JOB特性1.3 整体架构 2、XXL-JOB任务中心环境搭建2.1 XXL-JOB源码下载2.2 IDEA导入xxljob工程2.3 初始化数据库2.4 Docker安装任务管理中心 3、XXL-JOB任务注册测试3.1 引入xxl-job核心依赖3.2 配置…...
直流电机及其驱动
直流电机是一种将电能转换为机械能的装置,有两个电极,当电极正接时,电机正转,当电极反接时,电机反转。 直流电机属于大功率器件,GPIO口无法直接驱动,需要配合电机驱动电路来操作 TB6612是一款双…...
Java-判断一个字符串是否为有效的JSON字符串
在 Java 中判断一个字符串是否为有效的 JSON 字符串,可以使用不同的库来进行验证。常见的库 包括 org.json、com.google.gson 和 com.alibaba.fastjson 等。这里我将展示如何使用 com.alibaba.fastjson 库来实现一个简单的工具类,用于判断给定的字符串…...
FPGA开发板的基本知识及应用
FPGA开发板是一种专门设计用于开发和测试现场可编程门阵列(Field-Programmable Gate Array, FPGA)的硬件平台。FPGA是一种高度可配置的集成电路,能够在制造后被编程以执行各种数字逻辑功能。FPGA开发板通常包含一个FPGA芯片以及一系列支持电路和接口,以便…...
JVM知识总结(性能调优)
文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 性能调优 何时进行JVM调优? 遇到以下情况,…...
基于Ascend C的Matmul算子性能优化最佳实践
矩阵乘法是深度学习计算中的基础操作,对于提升模型训练和推理速度至关重要。昇腾AI处理器是一款专门面向AI领域的AI加速器,其AI Core采用达芬奇架构,以高性能Cube计算引擎为基础,针对矩阵运算进行加速,可大幅提高单位面…...
SQL注入之EVAL长度限制突破技巧
要求: PHP Eval函数参数限制在16个字符的情况下 ,如何拿到Webshell? widows小皮环境搭建: 使用phpstudy搭建一个网站。 随后在该eval文件夹下创建一个webshell.php文件,并在其输入代码环境 解题思路: 通…...
稀疏注意力:时间序列预测的局部性和Transformer的存储瓶颈
时间序列预测是许多领域的重要问题,包括对太阳能发电厂发电量、电力消耗和交通拥堵情况的预测。在本文中,提出用Transformer来解决这类预测问题。虽然在我们的初步研究中对其性能印象深刻,但发现了它的两个主要缺点:(1)位置不可知性:规范Tran…...
详谈系统中的环境变量
目录 前言1. 指令背后的本质2. 环境变量背后的本质3. 环境变量到底是什么4. 命令行参数5. 本地变量 与 内置命令6. 环境变量的相关命令 前言 相信在 it 行业学习或者工作的小伙伴们,基本都配置过环境变量(windows环境下),如果你也…...
RAG与LLM原理及实践(11)--- Milvus hybrid search 源码分析及思想
目录 背景 hybrid search 源码分析 WeightedRanker 源码 hybrid search 核心 参数详解 基本入参 扩展入参 aysnc方式代码调用案例 说明 源码逻辑 prepare 调用过程 stub 调用结果 stub 调用过程 blocking 与 async 调用方式 深入内部core weightedRanker 的ch…...
JavaScript模拟空调效果
JavaScript模拟空调效果https://www.bootstrapmb.com/item/15074 在JavaScript中模拟空调效果主要依赖于前端界面的交互和状态变化,因为实际的温度调节、风扇速度调整等硬件操作无法直接通过JavaScript在浏览器中实现。不过,我们可以通过JavaScript来模…...
14.2 Pandas数据处理
欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: 工💗重💗hao💗:野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、应用领域等内容。 ⭐…...
python学习7---多进程
一、介绍 多进程是指在同一程序中创建多个独立的进程来执行任务。每个进程都有自己独立的内存空间,相互之间不干扰。 因为GIL锁的存在,对于CPU密集型任务(例如计算密集型操作),使用多进程可以提高程序的效率。 优点&am…...
基于Spring + Vue的旅游景区项目+源代码+文档说明
文章目录 源代码下载地址项目介绍项目功能界面预览 项目备注源代码下载地址 源代码下载地址 点击这里下载源码 项目介绍 基于Spring Vue的旅游景区项目 项目功能 民宿管理员:订单数量统计,订单交易额统计,客房统计饼图,酒店…...
Java后端面试题
Redis缓存穿透、雪崩、击穿,布隆过滤器 一致性hash 一致性hash sharding-jdbc实现一致性hash #一致性hash, 应用在mysql数据库的分库分表上, 现在已经完成了分库分表, 现在的问题出现了, 需要继续新增数据库节点, 请…...
【Git】远程仓库新建分支后,拉到本地开发
1. 在远程仓库上创建分支 2. git fetch origin:在本地同步远程仓库的分支(获取远程仓库所有分支的所有修改) 3. git remote -a:查看所有分支(远程+本地) 4. git checkout -b 本地名 远程仓库…...
React H5设置企业级v6版本路由的配置
路由配置是项目开发的必要一环,尤其是目前流行SPA,下面看看如何使用v6版本路由进行合理的H5路由配置 一、基本页面结构(目录根据开发要求建,下面仅用于展示配置路由) 二、具体文件实现 1. index.tsx import React f…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...
MyBatis中关于缓存的理解
MyBatis缓存 MyBatis系统当中默认定义两级缓存:一级缓存、二级缓存 默认情况下,只有一级缓存开启(sqlSession级别的缓存)二级缓存需要手动开启配置,需要局域namespace级别的缓存 一级缓存(本地缓存&#…...
