全网详解LVS的四种工作模式及案例

news2024/9/28 5:28:10

目录

LVS(Linux virual server)

一、集群和分布式的简介

二、LVS的运行原理

1、LVS简介

2、LVS 相关术语

3、LVS的集群类型

三、LVS-NAT工作模式

部署NAT工作模式案例:

1、实验环境

2、实验环境说明

3、配置

四、LVS-DR工作模式

部署DR工作模式案例:

1、实验环境

2、实验环境配置及说明

3、配置

五、LVS-TUN工作模式

六、fullnet工作模式

七、LVS工作模式总结

八、LVS的调度算法

1、lvs调度算法类型

2、lvs静态调度算法

3、lvs动态调度算法

4、部署DR模式集群案例

九、LVS部署命令介绍

ipvsadm命令参数的使用

LVSLinux virual server

一、集群和分布式的简介

集群:同一个业务系统,部署在多台服务器上,集群中,每一台服务器实现的功能没有差别,数据
和代码都是一样的
分布式:一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式
中,每一台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起
来,才是完整的业务
分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数
来提升效率
对于大型网站,访问用户很多,实现一个群集,在前面部署一个负载均衡服务器,后面几台服务器
完成同一业务。如果有用户进行相应业务访问时,负载均衡器根据后端哪台服务器的负载情况,决
定由给哪一台去完成响应,并且台服务器垮了,其它的服务器可以顶上来。分布式的每一个节点,
都完成不同的业务,如果一个节点垮了,那这个业务可能就会失败

二、LVS的运行原理

1、LVS简介

LVS:Linux Virtual Server ,负载调度器,内核集成,章文嵩,阿里的四层 SLB(Server LoadBalance) 是基于LVS+keepalived 实现
LVS 官网 : http://www.linuxvirtualserver.org/

2、LVS 相关术语

VS Virtual Server
RS Real Server
CIP Client IP
VIP: Virtual serve IP VS 外网的 IP
DIP: Director IP VS 内网的 IPL
RIP: Real server IP

3、LVS的集群类型

lvs-nat : 修改请求报文的目标IP, 多目标 IP DNAT
lvs-dr 操纵封装新的 MAC 地址
lvs-tun : 在原请求IP 报文之外新加一个 IP 首部
lvs-fullnat 修改请求报文的源和目标 IP

三、LVS-NAT工作模式

本质是多目标 IP DNAT ,通过将请求报文中的目标地址和目标端口修改为某挑出的 RS RIP 和PORT实现转发
RIP DIP 应在同一个 IP 网络,且应使用私网地址 ;RS 的网关要指向 DIP
请求报文和响应报文都必须经由 Director 转发, Director 易于成为系统瓶颈
支持端口映射,可修改请求报文的目标 PORT
VS 必须是 Linux 系统, RS 可以是任意 OS 系统

部署NAT工作模式案例:

此实验采用openEuler版本系统

1、实验环境
主机名IP角色
lvs

192.168.182.141

仅主机:192.168.237.100

负载均衡器
client192.168.182.144客户端
webserver1仅主机:192.168.237.142web服务器
webserver2仅主机:192.168.237.143web服务器
 
2、实验环境说明

web服务器上的网络适配器改为仅主机模式

负载均衡器上添加一个网络适配器并改为仅主机模式

3、配置
web服务器配置
[root@webserver1 ~]# dnf install nginx -y
[root@webserver1 ~]# echo webserver1 > /usr/share/nginx/html/index.html
[root@webserver1 ~]# systemctl restart nginx.service
 
[root@webserver2 ~]# dnf install nginx -y
[root@webserver2 ~]# echo webserver1 > /usr/share/nginx/html/index.html
[root@webserver2 ~]# systemctl restart nginx.service 
lvs配置
开启内核路由转发:
[root@lvs ~]# vim /etc/sysctl.conf 
[root@lvs ~]# dnf install nginx -y
[root@lvs ~]# ipvsadm -A -t 192.168.182.141:80 -s rr  #rr指轮询算法
[root@lvs ~]# ipvsadm -a -t 192.168.182.141:80 -r 192.168.237.142:80 -m #-a添加,-r指要添加的web服务器IP
[root@lvs ~]# ipvsadm -a -t 192.168.182.141:80 -r 192.168.237.143:80 -m #-m指开启nat模式
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.182.141:80 rr
  -> 192.168.237.142:80           Masq    1      0          1         
  -> 192.168.237.143:80           Masq    1      0          0 
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
客户端测试
[root@node4 ~]# for i in {1..10} 
> do
> curl 192.168.182.141
> done
webserver1
webserver2
webserver1
webserver2
webserver1
webserver2
webserver1
webserver2
webserver1
webserver2

四、LVS-DR工作模式

DR Direct Routing ,直接路由, LVS 默认模式 , 应用最广泛 , 通过为请求报文重新封装一个 MAC 首部进行
转发,源 MAC DIP 所在的接口的 MAC ,目标 MAC 是某挑选出的 RS RIP 所在接口的 MAC 地址;源
IP/PORT ,以及目标 IP/PORT 均保持不变
在DR模式中,RS接收到访问请求后不需要回传给VS调度器,直接把回传数据发送给client,所以RS和vs上都要有vip

部署DR工作模式案例:

此实验采用openEuler版本系统

1、实验环境
主机名IPVIP角色
client192.168.182.144客户端
lvs仅主机:192.168.237.101lo:192.168.237.200负载均衡器
router

192.168.182.10

仅主机:192.168.237.100

路由器
webserver1仅主机:192.168.237.10lo:192.168.237.200web服务器
webserver2仅主机:192.168.237.20lo:192.168.237.200web服务器
2、实验环境配置及说明

client网络适配器为NAT模式

lvs添加一块网络适配器并改为仅主机模式
                
router添加一块网络适配器并改为仅主机模式
为你的仅主机模式的网卡添加一个IP 
webserver1和webserver2将网络适配器改为仅主机模式
         
webserver1和webserver2以环回接口添加VIP,VIP可自己指定但必须和lvs和web服务器在同一网段                   
将lvs、webserver1、webserver2的网关都改为路由器的IP
[root@lvs ~]# nmcli connection modify ens224 ipv4.gateway 192.168.237.100
[root@lvs ~]# nmcli con up ens224 
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/2)
[root@lvs ~]# 
 
[root@webserver1 ~]# nmcli connection modify ens160 ipv4.gateway 192.168.237.100
[root@webserver1 ~]# nmcli con up ens160 
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/2)
[root@webserver1 ~]# 
[root@webserver2 ~]# nmcli connection modify ens160 ipv4.gateway 192.168.237.100
[root@webserver2 ~]# nmcli con up ens160 
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/2)
[root@webserver2 ~]# 
3、配置
在webserver1和webserver2上搭建一个nginx服务并做ARP抑制

[root@webserver1 ~]# dnf install nginx -y
[root@webserver1 ~]# echo my name is lhd > /usr/share/nginx/html/index.html
[root@webserver1 ~]# systemctl restart nginx.service 
[root@webserver1 ~]#

[root@webserver2 ~]# dnf install nginx -y
[root@webserver2 ~]# echo my name is lhd2 > /usr/share/nginx/html/index.html
[root@webserver2 ~]# systemctl restart nginx.service 
[root@webserver2 ~]#

做ARP抑制,防止web服务发起广播
[root@webserver2 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce 
[root@webserver2 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore 
[root@webserver2 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
[root@webserver2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

[root@webserver1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce 
[root@webserver1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore 
[root@webserver1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
[root@webserver1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
负载调度器上的配置
[root@lvs ~]# ipvsadm -A -t 192.168.237.200:80 -s wrr #wrr指加权轮询
[root@lvs ~]# ipvsadm -a -t 192.168.237.200:80 -r 192.168.237.10:80 -g -w 1 #-a指添加
[root@lvs ~]# ipvsadm -a -t 192.168.237.200:80 -r 192.168.237.20:80 -g -w 2 #-g指DR模式
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.237.200:80 wrr
  -> 192.168.237.10:80            Route   1      0          0         
  -> 192.168.237.20:80            Route   2      0          0
客户端测试:
[root@client ~]# for ((i=1;i<=10;i++)) ; do curl 192.168.237.200; done
my name is lhd2
my name is lhd
my name is lhd2
my name is lhd2
my name is lhd
my name is lhd2
my name is lhd2
my name is lhd
my name is lhd2
my name is lhd2

五、LVS-TUN工作模式

转发方式:不修改请求报文的 IP 首部(源 IP CIP ,目标 IP VIP ),而在原 IP 报文之外再封装一个 IP 首部
(源 IP DIP, 目标 IP RIP ),将报文发往挑选出的目标 RS
RS 直接响应给客户端(源 IP VIP ,目标 IP是CIP
1. 客户端发送请求数据包,包内有源 IP+vip+dport
2. 到达 vs 调度器后对客户端发送过来的数据包重新封装添加 IP 报文头,新添加的 IP 报文头中包含 TUNSRCIP(DIP)+TUNDESTIP(RSIP1)并发送到 RS1
3.RS 收到 VS 调度器发送过来的数据包做出响应,生成的响应报文中包含 SRCIP(VIP)+DSTIP CIP) +port,响应数据包通过网络直接回传给 client

六、fullnet工作模式

fullnat :通过同时修改请求报文的源 IP 地址和目标 IP 地址进行转发
CIP --> DIP
VIP --> RIP
1.VIP 是公网地址, RIP DIP 是私网地址,且通常不在同一 IP 网络;因此, RIP 的网关一般不会指向 DIP
2.RS 收到的请求报文源地址是 DIP ,因此,只需响应给 DIP ;但 Director 还要将其发往 Client
3. 请求和响应报文都经由 Director
4. 支持端口映射
注意:此类型kernel默认不支持

七、LVS工作模式总结

NAT模式DR模式TUN模式
RS 操作系统
不限
支持隧道禁用arp
调度器和服务器网络
可跨网络可跨网络不可跨网络
调度服务器数量服务器数量
RS 服务器网关
指向到调度器 DIP
指向到路由
指向到路由
lvs-nat lvs-fullnat :请求和响应报文都经由 Director
lvs-nat RIP 的网关要指向 DIP
lvs-fullnat RIP DIP 未必在同一 IP 网络,但要能通信
lvs-dr lvs-tun :请求报文要经由 Director ,但响应报文由 RS 直接发往 Client
lvs-dr :通过封装新的 MAC 首部实现,通过 MAC 网络转发
lvs-tun :通过在原 IP 报文外封装新 IP 头实现转发,支持远距离通信

八、LVS的调度算法

1、lvs调度算法类型

ipvs scheduler :根据其调度时是否考虑各 RS 当前的负载状态被分为两种:静态方法和动态方法
静态方法:仅根据算法本身进行调度,不考虑 RS 的负载情况
动态方法:主要根据每 RS 当前的负载状态及调度算法进行调度 Overhead=value 较小的 RS 将被调度

2、lvs静态调度算法

1 RR roundrobin 轮询 RS 分别被调度,当 RS 配置有差别时不推荐
2 WRR Weighted RR ,加权轮询根据 RS 的配置进行加权调度,性能差的 RS 被调度的次数少
3 SH Source Hashing ,实现 session sticky ,源 IP 地址 hash ;将来自于同一个 IP 地址的请求始终发往第一次挑中的RS ,从而实现会话绑定
4 DH Destination Hashing ;目标地址哈希,第一次轮询调度至 RS ,后续将发往同一个目标地址的请求始终转发至第一次挑中的RS ,典型使用场景是正向代理缓存场景中的负载均衡,如:宽带运营商

3、lvs动态调度算法

主要根据 RS 当前的负载状态及调度算法进行调度 Overhead=value 较小的 RS 会被调度
1 LC least connections (最少链接发)
适用于长连接应用 Overhead (负载值) =activeconns (活动链接数) x 256+inactiveconns (非活
动链接数)
2 WLC Weighted LC (权重最少链接)
默认调度方法 Overhead=(activeconns x 256+inactiveconns)/weight
3 SED Shortest Expection Delay, 初始连接高权重优先Overhead=(activeconns+1+inactiveconns) x 256/weight
但是,当 node1 的权重为 1 node2 的权重为 10 ,经过运算前几次的调度都会被 node2 承接
4 NQ Never Queue ,第一轮均匀分配,后续 SED
5 LBLC Locality-Based LC ,动态的 DH 算法,使用场景:根据负载状态实现正向代理
6 LBLCR LBLC with Replication ,带复制功能的 LBLC ,解决 LBLC 负载不均衡问题,从负载重的复制到负载轻的RS

4、部署DR模式集群案例

利用防火墙标签解决轮询错误(基于lvs的DR直连路由工作模式)
后端服务器需使用mod_ssl工具并使用https的443端口
Iptables -t mangle -A PREROUTING  -d 192.168.237.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 88

-t:指定是什么类型的表
-A:添加
PREROUTING 链规则:在数据包进入路由之前进行处理,常用于对数据包进行 NAT 转换。
-d:指定VIP
-p:指定网络协议tcp
-m:指定多个端口
--dports:目标端口
-j:后面指标签
--set-mark:设定标签号

九、LVS部署命令介绍

ipvsadm命令参数的使用

ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
-A # 添加
-E # 修改
-t #tcp服务
-u #udp 服务
-s # 指定调度算法,默认为 WLC
-p # 设置持久连接超时,持久连接可以理解为在同一个时间段同一个来源的请求调度到同一 Realserver
-f #firewall mask 火墙标记,是一个数字
ipvsadm -a|e -t|u|f service-address -r realserver-address [-g|i|m] [-w weight]
ipvsadm -Z [-t|u|f service-address] 清楚计数器
-a # 添加 realserver
-e # 更改 realserver
-t #tcp 协议
-u #udp 协议
-f # 火墙 标签
-r #realserver 地址
-g # 直连路由模式
-i #ipip 隧道模式
-m #nat 模式
-w # 设定权重
-Z # 清空计数器
-C # 清空 lvs 策略
-L # 查看 lvs 策略
-n # 不做解析
--rate :输出速率信息

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

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

相关文章

Http:八股

1、Https加密方式 1.1Https通过 摘要算法保证数据的完整性&#xff0c; 1、服务器将公钥注册到CA&#xff0c; CA用自己的私钥给 服务器的公钥进行数字签名。 2、客户端拿到服务器证书后&#xff0c;用CA的公钥确认数字证书的真实性。 3、获取服务器的公钥&#xff0c;使用它对…

SpringBoot Actuator

对应用进行观测,监控,预警 健康状况[组件状态,存活状态] health 健康端点:返回存活,死亡. Health对象 运行指标[CPU,内存,垃圾回收,吞吐量,响应成功率] Metrics 指标监控端点:访问次数/率等等 链路追踪等等 引入web和actuator依赖 在…

如何在不丢失数据的情况下绕过IPhone密码?

不幸的是&#xff0c;不可能在不丢失数据的情况下绕过 iPhone 密码。通过密码的唯一方法是使用iTunes或iCloud恢复设备。这将清除您设备的内容&#xff0c;因此请务必在恢复之前备份所有重要数据。如果您忘记了密码&#xff0c;请按照以下步骤操作&#xff1a; 1. 将您的 iPhon…

AI绘画 Stable Diffusion后期处理—无需ControlNet也能轻松高清放大图像与老旧照片修复,SD新手必看教程

大家好&#xff0c;我是设计师阿威 分享了这么多期AI绘画Stable DIffusion的入门教程和一些常用的插件玩法后&#xff0c;不知道大家有没有发现&#xff0c;SD还有一个功能&#xff0c;似乎没怎么用到过&#xff0c;它就是—后期处理。 今天就给大家分享一下SD中的 “后期处理…

VLSI | 计算CMOS反相器的负载电容

ref. 数字集成电路 电路、系统与设计&#xff08;第二版&#xff09;&#xff0c;周润德 译 为了计算方便&#xff0c;本人编写了MATLAB代码进行计算&#xff0c;需要可至&#xff1a;MATLAB计算CMOS反相器等效负载电容 。资源中也给出了PTM的MOS模型参数。对于MOS的模型参数&…

TMGM:日本加息预期被推迟,日元相对稳定

根据最新的日本银行《意见总结》&#xff0c;"实现通胀目标的可能性进一步增加"&#xff0c;预计将进一步上升。 "假设通胀目标将在2025财年下半年实现&#xff0c;央行应在那时将政策利率提高到中性利率水平。由于中性利率水平至少在1%左右&#xff0c;为避免…

injected stylesheet 导致 页面重置按钮文字样式改变,按钮中的文字看不清晰

项目场景&#xff1a; 相关背景&#xff1a; injected stylesheet 导致 页面重置按钮文字样式改变&#xff0c;看不清晰 问题描述 遇到的问题&#xff1a; 检查页面中该按钮的代码如下所示&#xff1a; <div class"el-form-item__content"> <button d…

手把手从0开始,使用Ollama+OpenWebUI本地部署阿里通义千问Qwen2 AI大模型

&#x1f4a5;Ollama介绍 Ollama是一个开源框架&#xff0c;专为在本地机器上便捷部署和运行大型语言模型&#xff08;LLM&#xff09;而设计。它提供了一套简单的工具和命令&#xff0c;使任何人都可以轻松地启动和使用各种流行的LLM&#xff0c;例如GPT-3、Megatron-Turing N…

Python教程(十二):面向对象高级编程详解

目录 专栏列表前言变量命名规则说明&#xff1a;一、类的内部变量和特殊方法1.1 内部变量示例测试结果: 1.2 __slots__未使用__slots__使用__slots__ 二、装饰器2.1 函数装饰器示例 2.2 property示例 三、枚举类3.1 枚举类概述3.2 枚举类定义示例 四、元类4.1 什么是元类4.2 自…

去除猫咪浮毛哪款更胜一筹?希喂、有哈宠物空气净化器测试对比

随着养宠人群的增多&#xff0c;宠物空气净化器受到铲屎官们的喜爱&#xff0c;成为家庭清洁的好帮手。然而&#xff0c;市场上的选择繁多&#xff0c;不少品牌以次充好&#xff0c;让人们掉入消费陷阱。为此&#xff0c;挑选一台优质有保障的宠物空气净化器品牌&#xff0c;需…

智界S7 小鹏P7 G3 G3i P5 G9 P7i G6 X9维修手册和电路图线路图接线资料更新

汽修帮手资料库提供各大厂家车型维修手册、电路图、新车特征、车身钣金维修数据、全车拆装、扭力、发动机大修、发动机正时、保养、电路图、针脚定义、模块传感器、保险丝盒图解对照表位置等&#xff0c;并长期保持高频率资料更新&#xff01; 覆盖车型2020-2024年智界S7 小鹏…

不是智商税!六个核桃健脑效果获科学支持,效果源自七大方面

这两年来&#xff0c;关于脑雾、脑损伤的话题在社交媒体上越发受到关注&#xff0c;健脑也越发成为国民刚需。 不过&#xff0c;要做到科学健脑并不容易。有消费者选择专业保健品补剂&#xff0c;也有消费者倾向于食补。中国饮食传统中就有核桃补脑的说法&#xff0c;但不少人…

Untiy Modbus 西门子 S7-1200 基础通信

Untiy Modbus 西门子 S7-1200 基础通信 ModbusModbus是什么Modbus 协议版本Modbus 通信和设备Modbus 如何实现Modbus 使用限制Modbus 通信协议学理上的弱点分析 UnityUnity ModbusTCPUnity ModbusTCP 单个线圈读取方法Unity ModbusTCP 单个线圈写入方法 IntUnity ModbusTCP 单个…

Android 让程序随系统自动启动并允许后台运行(白名单)

最近制作一个管理程序&#xff0c;需要在开机时候启动&#xff0c;并持续运行。这里简单记录下如何制作。 自启动原理 系统在启动的时候会广播一个ACTION_BOOT_COMPLETED&#xff0c;带有接收的程序可以收到&#xff0c;所以我们在接收到以后把程序运行起来。 清单文件设置 …

PyMysql快速上手操作详解

PyMySQL是从Python连接到MySQL数据库服务器的接口。 它实现了Python数据库API v2.0&#xff0c;并包含一个纯Python的MySQL客户端库 一、PyMysql安装 pip install pymysql 或者 pip3 install pymysql二、连接数据库 pymysql连接数据库使用的是 pymsql.connect() 函数&#xff…

数据库设计笔记3-事务管理,冲突串行化,锁定协议,死锁测试

#1.指令冲突 注&#xff1a;读读操作不冲突&#xff0c;剩下的冲突。 #2.冲突串行化 <1理解 如果一个调度可以在不改变冲突操作顺序的情况转换为任意串行调度&#xff0c;那么两个调度的结果是相同的&#xff0c;也就是说这个调度是可冲突串行化的 <2正反举例 <3测…

【教师秘籍】AI预测学生未来?职场规划大揭秘!

​声明&#xff1a;此篇为 ai123.cn 原创文章&#xff0c;转载请标明出处链接&#xff1a;https://ai123.cn/2150.html 嘿老师们&#xff0c;你们有没有和我一样的烦恼&#xff1a;学生各有千秋&#xff0c;家长各有各的操心&#xff0c;信息一箩筐却总是不够用&#xff1f;&am…

基于JAVA的校园跑腿网站的设计与实现

摘要 随着计算机技术&#xff0c;网络技术的迅猛发展&#xff0c;Internet 的不断普及&#xff0c;网络在各个领域里发挥了越来越重要的作用。特别是随着近年人民生活水平不断提高&#xff0c;校园跑腿网站给学校的业务带来了更大的发展机遇。 在经济快速发展的带动下&#xff…

[NPUCTF2020]ReadlezPHP1

打开题目&#xff0c;看到信息 ctrlu查看源代码 看到php代码&#xff0c;打开 代码审计看一下&#xff0c;进行代码审计&#xff0c;发现存在反序列化语句&#xff1a;$ppp unserialize($_GET["data"]);和执行漏洞&#xff1a;echo $b($a);&#xff0c;此处未想到fl…

荟萃科技:海外问卷调查项目可以长期做不?

当然可以&#xff01; 我已经做了两年多的海外问卷调查了&#xff0c;我觉得还是蛮有发言权的。 现在网络飞速发展&#xff0c;实体的生意也越来越来越不好做了&#xff0c;有人就把目标转移到了网络上&#xff0c;想知道一些其他的网络项目能不能做&#xff0c;如果能找到一…