LVS集群 (四十四)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
前言
一、集群概述
1. 负载均衡技术类型
2. 负载均衡实现方式
二、LVS结构
三、LVS工作模式
四、LVS负载均衡算法
1. 静态负载均衡
2. 动态负载均衡
五、ipvsadm命令详解
六、LVS配置案例
1. 基础配置
2. 实现NAT模型搭建
3. 实现DR模型搭建
总结
前言
LVS(Linux Virtual Server)是一个基于Linux操作系统的高性能、可扩展的服务器集群技术。它通过将多台服务器组织成一个逻辑集群,提供负载均衡、高可用性和扩展性等功能。
提示:以下是本篇文章正文内容,下面案例可供参考
一、集群概述
1. 负载均衡技术类型
四层负载均衡器 也称为 4 层交换机,主要通过分析 IP 层及 TCP/UDP 层的流量实现基于 IP 加端口的负载均衡,如常见的 LVS、F5 等;
七层负载均衡器 也称为 7 层交换机,位于 OSI 的最高层,即应用层,此负载均衡器支持多种协议,如HTTP、FTP、SMTP 等。7 层负载均衡器可根据报文内容,配合一定的负载均衡算法来选择后端服务器,即“内容交换器”。如常见的 HAProxy、Nginx。
2. 负载均衡实现方式
硬件负载均衡产品:F5 、深信服 、Radware
软件负载均衡产品: LVS(Linux Virtual Server)、 Haproxy、Nginx、Ats(apache traffic server)
二、LVS结构
三层结构
负载调度器
服务器池
共享存储
架构对象
VS:Virtual Server,也称为 Director,负载均衡服务器
RS:Real Server,真正的服务器,集群中各节点
VIP:Director 向外部提供服务的 IP
DIP:Director 向内部与 RS 通信的 IP
RIP:真实服务器的 IP
CIP:客户端的 IP
三、LVS工作模式
LVS-NAT(NAT模式)
LVS-DR(直接路由模式)(应用最广泛)
LVS-TUN(IP隧道(Tunnel)模式,不常用)
FULL-NAT模式(双向转换模式,不常用)
四、LVS负载均衡算法
1. 静态负载均衡
rr(round robin,轮询 )
wrr(weight round robin,加权轮询)
sh(source hashing,源地址散列算法(HASH))
dh(destination hashing,目标地址 HASH)
2. 动态负载均衡
lc(leash-connection,最少连接 )
简单算法:active * 256 + inactive (谁的小选谁)
wlc(加权最少连接)
简单算法:(active * 256 + inactive) / weight(谁的小选谁)
sed(最少期望延迟)
简单算法:(active + 1) * 256 / weight (谁的小选谁)
nq(never queue,永不排队)
LBLC(基于局部性的最少连接 )
LBLCR(基于局部性的带复制功能的最少连接)
五、ipvsadm命令详解
| -A | 添加虚拟服务节点 |
| -D | 删除虚拟服务节点 |
| -L | 查看虚拟服务节点列表 |
| -a | 添加真实服务节点 |
| -d | 删除真实服务节点 |
| -l | 查看真实服务节点列表 |
| -t | 指定虚拟服务器IP地址 |
| -s | 指定调度算法 |
| -r | 指定真实服务器节点IP地址 |
| -w | 指定权重值 |
| -g | 直接路由模式(默认) |
| -i | 隧道模式(不常用) |
| -m | NAT模式 |
六、LVS配置案例
1. 基础配置
修改主机名
关闭防火墙
关闭Selinux
关闭Networkmanager
配置IP地址
2. 实现NAT模型搭建
2.1 负载调度器配置
配置IP地址
增加一块网卡

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens37
vim ifcfg-ens37
删除UUID
NAME=ens37
DEVICE=ens37


配置本地yum源
安装ipvsadm
yum install -y ipvsadm

开启路由转发功能
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1


sysctl -p

加载ip_vs模块
modprobe ip_vs
lsmod |grep ip_vs

启动ipvsadm服务
systemctl start ipvsadm

配置负载分配策略
ipvsadm -A -t 192.168.142.100:80 -s rr
ipvsadm -a -t 192.168.142.100:80 -r 192.168.115.4:80 -m
ipvsadm -a -t 192.168.142.100:80 -r 192.168.115.5:80 -m

保存策略
ipvsadm-save > /etc/sysconfig/ipvsadm
![]()
2.2 web节点配置
配置网关
route add -net 0/0 gw 192.168.115.3
![]()


测试访问:192.168.23.100 

3. 实现DR模型搭建
原理图
3.1 负载调度器配置
调整ARP参数
vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.ens33.send_redirects = 0
![]()

sysctl -p
配置虚拟IP地址
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0
![]()
![]()

安装ipvsadm
yum install -y ipvsadm

加载ip_vs模块
modprobe ip_vs
lsmod |grep ip_vs

启动ipvsadm服务
systemctl start ipvsadm
![]()
配置负载分配策略
ipvsadm -A -t 192.168.115.200:80 -s rr
ipvsadm -a -t 192.168.115.200:80 -r 192.168.156.4:80 -g
ipvsadm -a -t 192.168.115.200:80 -r 192.168.156.5:80 -g

3.2 web节点配置(两台一样的配置)
调整ARP参数
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
sysctl -p ![]()


配置虚拟IP地址
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0

![]()
添加回环路由
route add -host 192.168.156.200/32 dev lo:0

测试


总结
LVS集群具有以下优点:
高可用性:通过使用多个服务器节点,当某个节点故障时,其他节点可以继续提供服务,保证系统的可用性。
负载均衡:将客户端请求分发给集群中的多个服务器节点,使得各个节点的负载相对均衡,提高系统的性能和吞吐量。
扩展性:可以根据需求方便地添加或移除服务器节点,实现集群的横向扩展。
总的来说,LVS集群是一种成熟的、可靠的服务器集群技术,广泛应用于大规模的互联网服务、电子商务等领域。
相关文章:
LVS集群 (四十四)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、集群概述 1. 负载均衡技术类型 2. 负载均衡实现方式 二、LVS结构 三、LVS工作模式 四、LVS负载均衡算法 1. 静态负载均衡 2. 动态负载均衡 五、ipvsadm命令详…...
stm32之DS18B20
DS18B20与stm32之间也是通过单总线进行数据的传输的。单总线协议在DHT11中已经介绍过。虽说这两者外设都是单总线,但时序电路却很不一样,DS18B20是更为麻烦一点的。 DS18B20 举例(原码补码反码转换_原码反码补码转换_王小小鸭的博客-CSDN博客…...
Redis的数据结构与单线程架构
"飞吧,去寻觅红色的流星" Redis中的五种数据结构和编码 Redis是一种通过键值对关系存储数据的软件,在前一篇中,我们可以使用type命令实际返回当前键所对应的数据结构类型,例如: String\list\hash\set等等。 但…...
c# modbus CRC计算器(查表法)
一、简介: 本案例为crc计算器,通过查表法计算出结果 1.窗体后台源代码 using Crc; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text…...
2023.08.27 学习周报
文章目录 摘要文献阅读1.题目2.重点3.引言4.方法5.实验结果6.结论 深度学习Majorization-Minimization算法1.基本思想2.要求3.示意图 总结 摘要 This week, I read a computer science on the prediction of atmospheric pollutants in urban environments based on coupled d…...
css元素定位:通过元素的标签或者元素的id、class属性定位,还不明白的伙计,看这个就行了!
前言 大部分人在使用selenium定位元素时,用的是xpath元素定位方式,因为xpath元素定位方式基本能解决定位的需求。xpath元素定位方式更直观,更好理解一些。 css元素定位方式往往被忽略掉了,其实css元素定位方式也有它的价值&…...
基于Spring实现博客项目
访问地址:用户登录 代码获取:基于Spring实现博客项目: Spring项目写博客项目 一.项目开发 1.项目开发阶段 需求评审,需求分析项目设计(接口设计,DB设计等,比较大的需求,需要设计流程图,用例图,UML, model中的字段)开发+自测提测(提交测试…...
数据库第十七课-------ETL任务调度系统的安装和使用
作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 🎂 作者介绍: 🎂🎂 🎂 🎉🎉🎉…...
Qt 动态中英文切换
背景: 需要界面实现动态国际化,一键点击切换中英文或其他语言。 前提: 已经完成了整个界面的翻译,拿到匹配的ts翻译文件,注意:要保证界面切换后,翻译的全覆盖,要保证任何需要反应的地方,都用到了tr("")包含,不然Linguist会捕捉不到。.ts文件的生成参考下文…...
hdfs操作
hadoop fs [generic options] [-appendToFile … ] [-cat [-ignoreCrc] …] [-checksum …] [-chgrp [-R] GROUP PATH…] [-chmod [-R] <MODE[,MODE]… | OCTALMODE> PATH…] [-chown [-R] [OWNER][:[GROUP]] PATH…] [-copyFromLocal [-f] [-p] [-l] [-d] … ] [-copyTo…...
h5分享页适配手机电脑
实现思路 通过media媒体查询结合rem继承html文字大小来实现。 快捷插件配置 这里使用了VSCode的px to rem插件。 先在插件市场搜索cssrem下载插件; 配置插件 页面编写流程及适配详情 配置meta h5常用配置信息:<meta name"viewport" content&quo…...
崭新商业理念:循环购模式的价值引领-微三云门门
尊敬的创业者们,我是微三云门门,今天我将为您详细探讨一种具有颠覆性的商业模式——循环购模式。这套私域流量裂变策略在实际应用中取得了巨大的成功,某些企业在短短6个月内迅速积累了400万用户! 循环购商业模式的核心聚焦于三个…...
二级MySQL(二)——编程语言,函数
SQL语言又称为【结构化查询语言】 请使用FLOOR(x)函数求小于或等于5.6的最大整数 请使用TRUNCATE(x,y)函数将数字1.98752895保留到小数点后4位 请使用UPPER()函数将字符串‘welcome’转化为大写…...
python爬虫12:实战4
python爬虫12:实战4 前言 python实现网络爬虫非常简单,只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点,方便以后复习。 申明 本系列所涉及的代码仅用于个人研究与讨论,并不会对网站产生不好…...
系列十三、idea创建文件自动生成作者信息
File>Settings>Editor>File and Code Templates>Includes>File Header /*** Author : 一叶浮萍归大海* Date: ${DATE} ${TIME}* Description: */...
spring websocket demo
一 java依赖 gradle 配置 implementation "org.springframework.boot:spring-boot-starter-websocket" implementation "org.springframework.security:spring-security-messaging" 二 配置WebSocketConfig import org.springframework.beans.factory.a…...
C语言的发展及特点
1. C语言的发展历程 C语言作为计算机编程领域的重要里程碑,其发展历程承载着无数开发者的智慧和创新。C语言诞生于20世纪70年代初,由计算机科学家Dennis Ritchie在贝尔实验室首次推出。当时,Ritchie的目标是为Unix操作系统开发一门能够更方便…...
Flink Kubernates Native - 入门
创建 namespace [rootCentOSA flink-1.17.1]# kubectl create ns flink-native [rootCentOSA flink-1.17.1]# kubectl config set-context --current --namespaceflink-native命令空间添加资源限制 [rootCentOSA flink-1.17.1]# vim namespace-ResourceQuota.yamlapiVersion:…...
Ceph入门到精通-大流量10GB/s支持OSPF(ECMP)-LVS 集群
Keepalived-LVS 能够提高集群的高可用性并增加后端检测功能、简化配置,满足常规需求。但Keepalived-LVS集群中,同一个VIP只能由一台设备进行宣告,为一主多备的架构,不能横向拓展集群的性能,为此我们引入OSPF来解决该问…...
IDEA、git如何修改历史提交commit的邮箱
第一种情况:当前提交不是从其他分支clone过来的: step1: git log 查看提交日志,获取commit ID step2: git rebase -i [你的commitID] git rebase -i c2ef237854290051bdcdb50ffbdbb78481d254bb step3:…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
【免费数据】2005-2019年我国272个地级市的旅游竞争力多指标数据(33个指标)
旅游业是一个城市的重要产业构成。旅游竞争力是一个城市竞争力的重要构成部分。一个城市的旅游竞争力反映了其在旅游市场竞争中的比较优势。 今日我们分享的是2005-2019年我国272个地级市的旅游竞争力多指标数据!该数据集源自2025年4月发表于《地理学报》的论文成果…...
命令行关闭Windows防火墙
命令行关闭Windows防火墙 引言一、防火墙:被低估的"智能安检员"二、优先尝试!90%问题无需关闭防火墙方案1:程序白名单(解决软件误拦截)方案2:开放特定端口(解决网游/开发端口不通)三、命令行极速关闭方案方法一:PowerShell(推荐Win10/11)方法二:CMD命令…...
小智AI+MCP
什么是小智AI和MCP 如果还不清楚的先看往期文章 手搓小智AI聊天机器人 MCP 深度解析:AI 的USB接口 如何使用小智MCP 1.刷支持mcp的小智固件 2.下载官方MCP的示例代码 Github:https://github.com/78/mcp-calculator 安这个步骤执行 其中MCP_ENDPOI…...
MCP和Function Calling
MCP MCP(Model Context Protocol,模型上下文协议) ,2024年11月底,由 Anthropic 推出的一种开放标准,旨在统一大模型与外部数据源和工具之间的通信协议。MCP 的主要目的在于解决当前 AI 模型因数据孤岛限制而…...
Git 切换到旧提交,同时保证当前修改不丢失
在 Git 中,可以通过以下几种方式切换到之前的提交,同时保留当前的修改 1. 使用 git checkout 创建临时分离头指针(推荐用于查看代码) git checkout <commit-hash>这会让你进入"分离头指针"状态,你可…...
