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…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...
面试高频问题
文章目录 🚀 消息队列核心技术揭秘:从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"?性能背后的秘密1.1 顺序写入与零拷贝:性能的双引擎1.2 分区并行:数据的"八车道高速公路"1.3 页缓存与批量处理…...

C# winform教程(二)----checkbox
一、作用 提供一个用户选择或者不选的状态,这是一个可以多选的控件。 二、属性 其实功能大差不差,除了特殊的几个外,与button基本相同,所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...
JS红宝书笔记 - 3.3 变量
要定义变量,可以使用var操作符,后跟变量名 ES实现变量初始化,因此可以同时定义变量并设置它的值 使用var操作符定义的变量会成为包含它的函数的局部变量。 在函数内定义变量时省略var操作符,可以创建一个全局变量 如果需要定义…...