负载均衡 lvs

1. 4层转发(L4) 与 7层转发(L7) 区别

4层转发(L4) 与 7层转发(L7) 区别

转发基于的信息

状态

常用的服务

L4

基于网络层和传输层信息:

L4转发主要依赖于网络层IP头部(源地址,目标地址,源端口,目标端口)和传输层头部(通常是TCP或UDP)中的信息来做出转发决策。

无状态转发

大多数L4转发设备是无状态的,意味着它们不会维护会话状态,每个数据包都被独立地转发,而不考虑之前的数据包。这种无状态的转发机制使得L4转发设备具有高吞吐量和低延迟的优点。

LVS,F5,nginx,haproxy

L7

基于应用层信息

L7转发深入到应用层协议中,可以解析HTTP、HTTPS等协议的头部信息,以及请求体中的内容。

有状态转发

L7转发通常是有状态的,转发设备需要维护连接状态,以便识别和处理完整的请求-响应周期

nginx,haproxy

2. LVS工作原理:

当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链,IPVS是工作在INPUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和自己已定义好的集群服务进行比对,如果用户请求的就是定义的集群服务,那么此时IPVS会强行修改数据包里的目标IP地址及端口,并将新的数据包发往POSTROUTING链,POSTROUTING链接收数据包后发现目标IP地址刚好是自己的后端服务器,那么此时通过选路,将数据包最终发送给后端的服务器

组成部分:

ipvs(ip virtual server):一段代码工作在内核空间,叫ipvs,是真正生效实现调度的代码。ipvsadm:另外一段是工作在用户空间,叫ipvsadm,负责为ipvs内核框架编写规则,定义谁是集群服务,而谁是后端真实的服务器(Real Server)

3. LVS的工作模式

LVS的IP负载均衡技术是通过IPVS模块来实现的,IPVS是LVS集群系统的核心软件,它的主要作用是:安装在Director Server上,同时在Director Server上虚拟出一个IP地址,用户必须通过这个虚拟的IP地址访问服务。这个虚拟IP一般称为LVS的VIP,即Virtual IP。访问的请求首先经过VIP到达负载调度器,然后由负载调度器从Real Server列表中选取一个服务节点响应用户的请求。 当用户的请求到达负载调度器后,调度器如何将请求发送到提供服务的Real Server节点,而Real Server节点如何返回数据给用户,是IPVS实现的重点技术,IPVS实现负载均衡机制有几种,分别是NAT、DR、TUN及FULLNAT。

DS:director server,即负载均衡器,根据一定的负载均衡算法将流量分发到后端的真实服务器上
RS:real server 真实的提供服务的server,可被DS划分到一个或多个负载均衡组.
BDS:backup director server,为了保证负载均衡器的高可用衍生出的备份.
VS:vitual server,负载均衡集群对外提供的IP+Port.
VIP:VS的IP,client请求服务的DIP(destination IP address),定义在DS上,client或其网关需要有其路由
RIP: Real erver IP 真实服务器的ip地址
CIP: client ip 客户端ip地址
DIP: director ip 负载均衡本身的ip

4. NAT模式

概述:DS把客户端请求包做目标地址转换,回客户端的时候先做源地址转换

NAT(Network Address Translation)是一种外网和内网地址映射的技术。NAT模式下,LVS需要作为RS的网关,当网络包到达LVS时,LVS做目标地址转换(DNAT),将目标IP改为RS的IP。RS接收到包以后,处理完,返回响应时,源IP是RS IP,目标IP是客户端的IP,这时RS的包通过网关(LVS)中转,LVS会做源地址转换(SNAT),将包的源地址改为VIP,对于客户端只知道是LVS直接返回给它的。

5. DR模式

概述:DS转换目标MAC地址,RS的LO做VIP

LVS-DR(Direct Routing)模式是LVS负载均衡的一种实现方式,通过在前端负载均衡器和后端真实服务器之间建立虚拟IP地址和ARP代理,将请求直接路由到后端服务器上,避免了数据包的二次复制和转发,提高了系统的性能和可靠性。这种模式需要在后端服务器上配置虚拟IP地址和直接路由规则,并保证后端服务器之间的网络互通。

环境准备:RS的LO口设置VIP,RS抑制ARP解析(防止IP冲突)

DR配置流程

环境准备

主机

IP

安装软件

LVS

10.0.0.5

ipvsadm

VIP(无实体)

10.0.03

WEB01

10.0.0.7

nginx

WEB02

10.0.0.8

nginx

yum -y install ipvsadm
#软件包内容
#/etc/sysconfig/ipvsadm-config
#/usr/lib/systemd/system/ipvsadm.service
#/usr/sbin/ipvsadm           #管理lvs规则 ip_vs
#/usr/sbin/ipvsadm-restore   #恢复从文件中恢复lvs规则
#/usr/sbin/ipvsadm-save      #保存lvs规则#00.加载ip_vs模块,
modprobe ip_vs#01.临时手动添加vip(重启网卡失效),后面是由keepalived生成
ip addr add 10.0.0.3/24 dev eth0 label eth0:0#02.查看lvs规则
ipvsadm -ln#03.清空规则,要备份
ipvsadm -C#04.设置tcp超时时间
ipvsadm --set 30 5 60   #05.添加规则 ngx upstream
ipvsadm -A -t 10.0.0.3:80 -s wrr -p 20
#-A --add-service 创建池塘  
#-t --tcp-service tcp协议
#10.0.0.3:80 组名称
#-s scheduler 轮询算法   wrr weight 加权轮询   rr wlc
#-p persistent 会话保持时间#06.向upsteam中添加server  
ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.7:80 -g -w 1
ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.8:80 -g -w 1
#-a 添加 rs服务器  
#-t tcp协议
#-r 指定rs服务器ip
#-g --gatewaying dr模式 默认的
#-w 权重#07.查看规则状态
]# ipvsadm -ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes-> RemoteAddress:Port
TCP  10.0.0.3:80                         0        0        0        0        0-> 10.0.0.7:80                         0        0        0        0        0-> 10.0.0.8:80                         0        0        0        0        0#08.备份与恢复配置文件(有需要的时候操作)
ipvsadm-save -n > /root/ipvs.txt
ipvsadm-restore < /root/ipvs.txt
[root@web01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-lo:1
DEVICE=lo:1
IPADDR=10.0.0.3
NETMASK=255.255.255.255
ONBOOT=yes
NAME=loopback
[root@web01 ~]# systemctl restart network
[root@web01 ~]# ip a s lo
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet 10.0.0.3/32 brd 10.0.0.3 scope global lo:1valid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
#抑制arp解析
cat >>/etc/sysctl.conf<<EOF
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
EOF
sysctl -p[root@web01 ~]# curl -H host:lvs.tom.com 10.0.0.3
lvs-01
[root@lb01 ~]# yum -y install keepalived
[root@lb01 ~]# cp /etc/keepalived/keepalived.conf{,.back}
[root@lb01 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id lb01 
}vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {10.0.0.3/24 dev eth0 label eth0:0}
}virtual_server 10.0.0.3 80 {delay_loop 6lb_algo wrrlb_kind DRpersistence_timeout 20protocol TCPreal_server 10.0.0.7 80 {weight 1TCP_CHECK{connect_timeout 8nb_get_retry 3delay_before_retry 3connect_port 80}}real_server 10.0.0.8 80 {weight 1TCP_CHECK{connect_timeout 8nb_get_retry 3delay_before_retry 3connect_port 80}}
}
[root@lb01 ~]# systemctl restart keepalived

6. TUN模式

概述:DS给数据包加上一层隧道,RS的LO做VIP

LVS-TUN(Tunneling)模式是LVS负载均衡的一种实现方式,通过在前端负载均衡器和后端真实服务器之间建立隧道连接,将客户端请求封装在隧道中传输到后端服务器上进行处理。这种模式需要在前端负载均衡器和后端服务器上配置隧道设备,并使用隧道协议进行数据传输。LVS-TUN模式适用于跨子网或跨网络的场景,可以实现灵活的负载均衡和高可用性,但会引入额外的网络开销和延迟。

IP Tunnel(ip隧道)解决DR模式下RS和DS处于同一网段的问题。ip隧道可以理解为IP in IP, 即发送方在IP头的外部再包装一个IP头,接收方先解出第一层IP头,然后再按照正常流程处理剩下的的IP数据包。

环境准备:RS的LO口设置VIP,RS抑制ARP解析(防止IP冲突)

7. 三种工作模式优缺点

模式

优点

缺点

LVS-NAT

- 简单易配置,不需要对后端服务器进行额外配置

- 支持跨子网负载均衡

- 可以隐藏后端服务器的真实IP地址

- 性能较低,数据包需要经过两次NAT转发

- 后端服务器的响应数据包需要经过前端负载均衡器再返回给客户端

- 单个NAT节点成为性能瓶颈

LVS-DR

- 性能高,请求直接路由到后端服务器,避免了数据包的二次复制

- 后端服务器可以直接与客户端通信,提高响应速度

- 可以支持大规模部署和高并发流量

- 需要在后端服务器上配置虚拟IP地址和直接路由规则

- 后端服务器之间需要保证网络互通

- 不支持跨子网负载均衡

LVS-TUN

- 支持跨子网和跨网络负载均衡

- 灵活配置,适用于复杂网络环境

- 可以实现灵活的负载均衡和高可用性

- 引入额外的网络开销和延迟

- 需要在前端负载均衡器和后端服务器上配置隧道设备及协议

- 隧道连接的建立和维护需要额外的管理和资源消耗

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

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

相关文章

珈和科技完成全国首个农险服务类数据产品入表,实现数据资产化

近日&#xff0c;珈和科技与东湖大数据合作&#xff0c;完成全国首个保险服务类数据产品入表&#xff0c;标志着我国商业卫星遥感应用领域迈出了数据资产化的关键一步。 此次入表的数据产品为“华北农业保险服务数据集数据产品”&#xff0c;是珈和科技融合卫星遥感与无人机等…

新华三H3CNE网络工程师认证—VLAN使用场景与原理

通过华三的技术原理与VLAN配置来学习&#xff0c;首先介绍VLAN&#xff0c;然后介绍VLAN的基本原理&#xff0c;最后介绍VLAN的基本配置。 一、传统以太网问题 在传统网络中&#xff0c;交换机的数量足够多就会出现问题&#xff0c;广播域变得很大&#xff0c;分割广播域需要…

前端学习(二)之HTML

一、HTML文件结构 <!DOCTYPE html> <!-- 告诉浏览器&#xff0c;这是一个HTML文件 --><html lang"en"> <!-- 根元素&#xff08;起始点&#xff0c;最外层容器&#xff09; --><head> <!-- 文档的头部&#xff08;元信息&#xff…

Typora 1.5.8 版本安装下载教程 (轻量级 Markdown 编辑器),图文步骤详解,免费领取

文章目录 软件介绍软件下载安装步骤激活步骤 软件介绍 Typora是一款基于Markdown语法的轻量级文本编辑器&#xff0c;它的主要目标是为用户提供一个简洁、高效的写作环境。以下是Typora的一些主要特点和功能&#xff1a; 实时预览&#xff1a;Typora支持实时预览功能&#xff0…

实战篇(十一) : 拥抱交互的三维世界:利用 Processing 和 OpenGL 实现炫彩粒子系统

🌌 拥抱交互的三维世界:利用 Processing 和 OpenGL 实现炫彩粒子系统 在现代计算机图形学中,三维粒子系统是一个激动人心的领域。它不仅可以用来模拟自然现象,如烟雾、火焰和水流,还可以用来创造出令人叹为观止的视觉效果。在这篇文章中,我们将深入探讨如何使用 Proces…

【linux】服务器安装NVIDIA驱动

【linux】服务器安装NVIDIA驱动 【创作不易&#xff0c;求点赞关注收藏】&#x1f600; 文章目录 【linux】服务器安装NVIDIA驱动一、关闭系统自带驱动nouveau二、下载英伟达驱动三、安装英伟达驱动1、禁用X服务器和相关进程2、在TTY终端安装驱动3、验证是否安装成功4、重新启…

最新开源的解析效果非常好的PDF解析工具MinerU (pdf2md pdf2json)

毫不夸张的说 PDF解析工具MinerU是照进RAG黑暗中的一道光——这是我对它的评价。我测过太多了文档解析工具&#xff01; 最近在做文档解析的工作。看了很多的开源的文档解析的工具&#xff0c;版面分析的工具&#xff0c;其中包括paddelpaddel这样30kstar的明星工具。但是效果都…

01 安装

安装和卸载中&#xff0c;用户全部切换为root&#xff0c;一旦安装&#xff0c;普通用户也能使用 初期不进行用户管理&#xff0c;全部用root进行&#xff0c;使用mysql语句 1. 卸载内置环境 检查是否有mariadb存在&#xff0c;存在走a部分卸载 ps axj | grep mysql ps ajx |…

逻辑门的题目怎么做?

FPGA语法练习——二输入逻辑门&#xff0c;一起来听~~ FPGA语法练习——二输入逻辑门 题目介绍&#xff1a;F学社-全球FPGA技术提升平台 (zzfpga.com)

低代码中间件学习体验分享:业务系统的创新引擎

前言 星云低代码平台介绍 星云低代码中间件主要面向企业IT部门、软件实施部门的低代码开发平台&#xff0c;无需学习开发语言/技术框架&#xff0c;可视化开发PC网页/PC项目/小程序/安卓/IOS原生移动应用&#xff0c;低门槛&#xff0c;高效率。针对企业研发部门人员少&#…

什么是正则表达式,如何在 Python 中使用?

什么是正则表达式 正则表达式&#xff08;Regular Expression&#xff0c;简称Regex&#xff09;是一种用于匹配字符串中字符模式的工具。它是由普通字符&#xff08;例如字母、数字&#xff09;以及一些特殊字符&#xff08;称为元字符&#xff09;组成的字符序列。这种模式用…

Spring MVC-什么是Spring MVC?

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 今天你敲代码了吗 文章目录 1.MVC定义2. Spring MVC 官方对于Spring Web MVC的描述这样的: Spring Web MVC is the original web framework built on the Servlet APl and has been includedin the Spring Frame…

node解析Excel中的考试题并实现在线做题功能

1、背景 最近公司安排业务技能考试&#xff0c;下发excel文件的题库&#xff0c;在excel里查看并不是很方便&#xff0c;就想着像学习驾考题目一样&#xff0c;一边看一边做&#xff0c;做完之后可以查看正确答案。 2、开始分析需求 题目格式如下图 需求比较简单&#xff0c;…

【二叉树】【动态规划】1、斐波那契数+2、零钱兑换

1、遍历&#xff1a;在遍历的过程中就能够解决问题&#xff0c;只需要递归函数的参数即可。 2、子树&#xff1a;只有在遍历完成之后才能解决问题&#xff0c;还需要递归函数的返回值。&#xff08;需要在后序位置写代码&#xff09; 动态规划&#xff1a;子树 核心思想是穷举…

【electron】 快速启动electron 应用

学无止境&#xff1a; 最近在搞electron项目&#xff0c;最重要的是总结 &#xff0c;写下来总不会忘记&#xff0c;也希望给大家参考一下&#xff0c;有不对的地方希望大家多指点。 快速启动electron 应用 1 克隆示例项目的仓库 git clone https://github.com/electron/ele…

Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; HadoopHDFSMapReduceHiveFlumeSqoopZookeeperHBase 正在 章节内容 上一节我们完成了&#xff1a; 集群的…

从安装Node到TypeScript到VsCode的配置教程

从安装Node到TypeScript到VsCode的配置教程 1.下载Node安装包&#xff0c; 链接 2.双击安装包&#xff0c;选择安装路径&#xff0c;如下&#xff1a; 3.一直点击下一步&#xff0c;直至安装结束即可&#xff1a; 这个时候&#xff0c;node会默认配置好环境变量&#xff0c;并且…

java文本比较解决方案

参考资料 VBA计算页码和行号https://learn.microsoft.com/zh-cn/office/vba/api/word.wdinformation 概述&#xff1a; 最近在做word文档对比的&#xff0c;总结了几种解决方案&#xff0c;记录一下 在java中&#xff0c;常用的文本对比方案有如下几种&#xff1a; 差异比较…

Linux网络——套接字与UdpServer

目录 一、socket 编程接口 1.1 sockaddr 结构 1.2 socket 常见API 二、封装 InetAddr 三、网络字节序 四、封装通用 UdpServer 服务端 4.1 整体框架 4.2 类的初始化 4.2.1 socket 4.2.2 bind 4.2.3 创建流式套接字 4.2.4 填充结构体 4.3 服务器的运行 4.3.1 rec…

rabbitmq生产与消费

一、rabbitmq发送消息 一、简单模式 概述 一个生产者一个消费者模型 代码 //没有交换机&#xff0c;两个参数为routingKey和消息内容 rabbitTemplate.convertAndSend("test1_Queue","haha");二、工作队列模式 概述 一个生产者&#xff0c;多个消费者&a…