负载均衡与网络底层刨析

K8s负载均衡深入刨析 本文深入解析Kubernetes负载均衡技术体系,从Service核心原理到生产实践方案。主要内容包括:1)Kubernetes分布式负载均衡模型创新,通过kube-proxy实现节点级负载均衡;2)Service四种类型及其适用场景;3)kube-proxy三种模式(iptables/IPVS/eBPF)的性能对比与选型建议;4)外部流量接入方案(NodePort/MetalLB/云LB);5)七层流量管理(Ingress/GatewayAPI);6)生产级分层架构设计。文章提供决策矩阵帮助读者根据集群规 阅读详情

网络
OS网络七层:
应用层,表示层,会话层,传输控制层,网络层,链路层,物理层
TCP/IP四层:
应用层,传输层,网络层,网络接口层
图片: https://uploader.shimo.im/f/35T3sSMRq81B5FGL.png
图片: https://uploader.shimo.im/f/gsLwOx0aG1QUfK2l.png
交换机:物理层进行网络通信
路由器:网络层,链路层,物理层
网络通信连接
https://baijiahao.baidu.com/s?id=1654225744653405133&wfr=spider&for=pc
1、三次握手
客户端发送seq和syn,希望建立连接
服务端接收到请求确认后,返回同意
客户端需要向服务端确认时,可以将数据和确认包同时发送服务器(为什么3次握手的原因)
2、四次挥手
第一次挥手":日久见人心,男孩发现女孩变成了自己讨厌的样子,忍无可忍,于是决定分手,随即写了一封信告诉女孩。
第二次挥手”:女孩收到信之后,知道了男孩要和自己分手,怒火中烧,心中暗骂:你算什么东西,当初你可不是这个样子的!于是立马给男孩写了一封回信:分手就分手,给我点时间,我要把你的东西整理好,全部还给你!男孩收到女孩的第一封信之后,明白了女孩知道自己要和她分手。随后等待女孩把自己的东西收拾好。
“第三次挥手”:过了几天,女孩把男孩送的东西都整理好了,于是再次写信给男孩:你的东西我整理好了,快把它们拿走,从此你我恩断义绝
“第四次挥手”:男孩收到女孩第二封信之后,知道了女孩收拾好东西了,可以正式分手了,于是再次写信告诉女孩:我知道了,这就去拿回来!
数据包传输原理
传输包包含以下内容:
源端口号->目标端口号
源IP地址->目标IP地址
源MAC地址->目标MAC地址
结论:
TCP/IP协议:
基于下一跳的机制:
IP是端点间
mac地址是节点间的
三次握手->数据传输->四次分手,成为一个最小粒度,不可被分割
图片: https://uploader.shimo.im/f/bJPlrgcv7GU2Tgyz.png
cd /proc/$$/fd
exec 8<> dev/tcp/www.baidu.com/80
echo -e ‘GET / HTTP/1.0\n’ >& 8
cat <& 8
负载均衡(lvs)
CIP,VIP, DIP, RIP
图片: https://uploader.shimo.im/f/dAcDxWivfs6VuBD2.png
单点故障和两端非对称问题LVS
1、D-NET模式
图片: https://uploader.shimo.im/f/LHLHg0nOnGO61QGH.png
优点:CIP到VIP不会进行握手操作,只走了4层,网络传输快,VIP-RIP进行正常网路七层通信
缺点:非对称,带宽成为瓶颈,消耗算力,要求RS的GW指向负载均衡服务器
2、DR(直接路由模式)
图片: https://uploader.shimo.im/f/eupcxt9cvYXWdcnT.png
RIP直接和CIP进行连接,减轻负载端宽带的负担
VIP->RIP运用了网络通信一跳的想法,基于2层网络通信,速度快,RIP对VIP进行了封装可以直接和CIP进行通信,封装的VIP对外隐藏,对内可见。
缺点: 负载服务器和服务器在同一个网段。
3、TUN隧道技术
VPN & 翻墙
(1) IP隧道技术又称为IP封装技术,它可以将带有源和目标IP地址的数据报文使用新的源和目标IP进行第二次封装,这样这个报文就可以发送到一个指定的目标主机上;
(2)VS/TUN模式下,调度器和后端服务器组之间使用IP隧道技术。当客户端发送的请求(CIP–>VIP)被director接收后,director修改该报文,加上IP隧道两端的IP地址作为新的源和目标地址,并将请求转发给后端被选中的一个目标;
(3)当后端服务器接收到报文后,首先解封报文得到原有的CIP–>VIP,该后端服务器发现自身的tun接口上配置了VIP,因此接受该数据包。
(4)当请求处理完成后,结果将不会重新交给director,而是直接返回给客户端;在后端服务器返回给客户端数据包时,由于使用的是普通网卡接口,根据一般的路由条目,源IP地址将是该网卡接口上的地址,例如是RIP。因此,要让响应数据包的源IP为VIP,必须添加一条特殊的路由条目,明确指定该路由的源地址是VIP。
理论解释
四种静态:
rr:轮循
wrr:
dh:
sh:
动态调度方法:
lc: 最少连接
wlc: 加权最少连接
sed: 最短期望延迟
nq: never queue
LBLC: 基于本地的最少连接
DH:
LBLCR: 基于本地的带复制功能的最少连接
隐藏VIP方法:对外隐藏,对内可见 :
kernel parameter:
目标mac地址为全F,交换机触发广播
/proc/sys/net/ipv4/conf/IF/
arp_ignore: 定义接收到ARP请求时的响应级别;
0:只要本地配置的有相应地址,就给予响应;
1:仅在请求的目标(MAC)地址配置请求
到达的接口上的时候,才给予响应;
arp_announce:定义将自己地址向外通告时的通告级别;
0:将本地任何接口上的任何地址向外通告;
1:试图仅向目标网络通告与其网络匹配的地址;
2:仅向与本地接口上地址匹配的网络进行通告;
ipvs内核模块
yum install ipvsadm -y
管理集群服务
添加:-A -t|u|f service-address [-s scheduler]
-t: TCP协议的集群
-u: UDP协议的集群
service-address: IP:PORT
-f: FWM: 防火墙标记
service-address: Mark Number
修改:-E
删除:-D -t|u|f service-address
ipvsadm -A -t 192.168.9.100:80 -s rr
管理集群服务中的RS
添加:-a -t|u|f service-address -r server-address [-g|i|m] [-w weight]
-t|u|f service-address:事先定义好的某集群服务
-r server-address: 某RS的地址,在NAT模型中,可使用IP:PORT实现端口映射;
[-g|i|m]: LVS类型
-g: DR
-i: TUN
-m: NAT
[-w weight]: 定义服务器权重
修改:-e
删除:-d -t|u|f service-address -r server-address

ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.8 –g

ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.9 -g

查看
-L|l
-n: 数字格式显示主机地址和端口
–stats:统计数据
–rate: 速率
–timeout: 显示tcp、tcpfin和udp的会话超时时长
-:c 显示当前的ipvs连接状况
删除所有集群服务
-C:清空ipvs规则
保存规则
-S

ipvsadm -S > /path/to/somefile

载入此前的规则:
-R

ipvsadm -R < /path/form/somefile

实验
LVS:

node01:
ifconfig eth0:8 192.168.150.100/24
node02~node03:
1)修改内核:
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
2)设置隐藏的vip:
ifconfig lo:3 192.168.150.100 netmask 255.255.255.255

RS中的服务:
node02~node03:
yum install httpd -y
service httpd start
vi /var/www/html/index.html
from 192.168.150.1x

LVS服务配置
node01:
yum install ipvsadm
ipvsadm -A -t 192.168.150.100:80 -s rr
ipvsadm -a -t 192.168.150.100:80 -r 192.168.150.12 -g -w 1
ipvsadm -a -t 192.168.150.100:80 -r 192.168.150.13 -g -w 1
ipvsadm -ln

验证:
浏览器访问 192.168.150.100 看到负载 疯狂F5
node01:
netstat -natp 结论看不到socket连接
node02~node03:
netstat -natp 结论看到很多的socket连接
node01:
ipvsadm -lnc 查看偷窥记录本
TCP 00:57 FIN_WAIT 192.168.150.1:51587 192.168.150.100:80 192.168.150.12:80
FIN_WAIT: 连接过,偷窥了所有的包
SYN_RECV: 基本上lvs都记录了,证明lvs没事,一定是后边网络层出问题

keepalived实验:
主机: node01~node04

node01:
ipvsadm -C
ifconfig eth0:8 down


node01,node04:
yum install keepalived ipvsadm -y
配置:
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
vi keepalived.conf
node01:
vrrp:虚拟路由冗余协议!
vrrp_instance VI_1 {
state MASTER // node04 BACKUP
interface eth0
virtual_router_id 51
priority 100 // node04 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.150.100/24 dev eth0 label eth0:3
}
}
virtual_server 192.168.150.100 80 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 0
protocol TCP

			real_server 192.168.150.12 80 {
				weight 1
				HTTP_GET {
					url {
					  path /
					  status_code 200
					}
					connect_timeout 3
					nb_get_retry 3
					delay_before_retry 3
				}   
			}       
			real_server 192.168.150.13 80 {
				weight 1
				HTTP_GET {
					url {
					  path /
					  status_code 200
					}
					connect_timeout 3
					nb_get_retry 3、
					delay_before_retry 3
				}
			}
		scp  ./keepalived.conf  root@node04:`pwd`
网络编程底层 TCP,HTTP协议,负载均衡,IO模型 阅读详情

相关推荐

Spring Cloud 实战 | 解密负载均衡Ribbon底层原理,包含实战源码

围栏策略的优点是根据服务提供者的健康状况和权重进行负载均衡,可以确保请求分配得更均匀,同时避免了传统轮询策略可能导致的不公平问题。缺点是在服务器数量较少时,可能会导致请求次数较多的服务器承担更多的负载,而请求次数较少的服务器负载较轻。方法首先获取所有服务器的 权重总和,然后遍历服务器列表,根据权重比例随机选择一个服务器。如果在遍历过程中找不到合适的服务器(即随机权重小于当前权重),则返回当前服务器的引用。在实际应用中,可以根据实际情况调整服务器的权重,以实现更精确的负载均衡。最后返回响应时间最短的服务器。

AI时代光年 4037

LVS负载均衡搭建详解

Linux虚拟服务器 章文嵩 隐藏VIP的方法:对外隐藏,对内可见 Kernel parameter: 目标MAC地址为全F,交换机促发广播 /proc/sys/net/ipv4/conf/IF目录下的文件只能用echo重定向去覆盖,不能用vi打开;文件系统是把内核或者程序里面的东西映射成文件,你改文件的时候间接改了程序里面的变量,而且并不是把所有东西都暴露出来而是选择性的暴露。 arp_igno...

weixin_43538368的博客 543

【网络】负载均衡

4. 应用层:七层负载均衡工作在应用层,需要解析应用层流量,因此七层负载均衡器在接到客户端的流量后,会建立一条完整的连接,并将应用层的请求流量解析出来,然后按照调度算法选择一个应用服务器来处理请求。在实际应用中,负载均衡通常结合了多种技术,从简单的轮询到更加复杂的基于内容或请求率的负载均衡策略,以此来确保系统的高可用性、可伸缩性和性能。网络层的负载均衡通常通过路由协议来实现。这一层的负载均衡器可能采用虚拟IP地址的方式工作,即外部请求到达虚拟的IP地址,负载均衡器再将请求转发到后端的实际IP地址上。

数字人生 1420

网络并发知识第五天基于DR模型的LVS实操

实操结构图 进行LVS的实操环节,选用node01,node02,node03进行实验。 其中将node01(192.168.150.11)作为LVS的机器,然后一块网卡2个ip,192.168.150.100作为VIP,192.168.150.11作为DIP node02(192.168.150.12),node03(192.168.150.13)作为真实服务器,并在它们内部分别将VIP加入虚...

darkness0604的博客 316

提示工程架构师必读:负载均衡策略的底层原理

当提示工程从“Prompt设计技巧”升级为“分布式大模型服务架构”时,负载均衡已从“边缘组件”变成“系统性能的核心瓶颈”。任务异质性:提示长度(100Token vs 10000Token)、模态(文本vs多模态)、任务类型(代码生成vs长文本摘要)导致计算成本差异达100倍;资源敏感性:大模型推理对GPU显存(上下文窗口占用)、计算能力(Token生成速率)、网络带宽(多模态数据传输)的消耗高度耦合;模型异构性。

操作系统内核探秘的博客 986

11、数据中心网络底层路由与多播流量处理解析

本文深入解析了数据中心网络中底层路由的设计与多播流量的处理机制。内容涵盖网络维护时的隔离操作、底层网络IP地址规划与聚合策略、OSPF、IS-IS和BGP三种主流路由协议在脊叶架构中的应用对比,以及eBGP双AS与多AS模型的配置要点。同时,详细探讨了VXLAN环境下BUM流量的两种处理方式——单播模式(入口复制)与组播模式,并提供了基于实际场景的选择建议。文章强调底层与覆盖层控制协议分离的重要性,提倡分层构建网络并进行独立收敛测试,为构建高效、可靠、可扩展的数据中心网络提供了全面的技术指导。

vscode5coder的博客 796

linux下ipvsadm命令,Linux中ipvsadm命令起什么作用呢?

摘要:下文讲述Linux中ipvsadm的功能说明,如下所示;ipvsadm命令功能:用于 设置,维护,检查Linux内核中的虚拟服务表Linux虚拟服务器简介:linux虚拟服务可将两个或更多节点的集群构建可伸缩网络服务群集中主节点将服务请求重定向到将实际执行服务的服务器主机集合集群目前支持的协议为:TCP和UDP三种数据包转发方法(NAT,隧道和直接路由)及八种负载均衡算法(roundrobi...

weixin_28958485的博客 657

uniapp 使用摄像头 live-pusher (APP)

uniapp 中开发 app 时使用live-pusher踩过的坑

随身笔记 1万+

linux下ipvsadm命令,Linux命令:ipvsadm

ipvsadm 命令简介:ipvsadm是LVS在应用层的管理命令,我们可以通过这个命令去管理LVS的配置。在fedora14、Linux6.0之后系统中,已经集成了LVS相关模块,但是ipvsadm命令仍然需要使用yum单独安装。1.命令格式:ipvsadm COMMAND [protocol] service-address[scheduling-method] [persistence op...

weixin_28909779的博客 738

基于MySQL的京东用户行为分析

对京东用户行为的分析,利用AARRR模型进行分析。

SelenaSelena的博客 1908

实战避坑:泛微E9流程接口与单点登录(SSO)开发全解析(含自定义Action、Restful API与免密登录)

本文深入解析泛微E9流程接口与单点登录(SSO)开发中的关键技术与避坑指南,涵盖自定义Action开发、Restful API鉴权机制及跨系统单点登录实现。通过实战案例与代码示例,帮助开发者高效完成二次开发,解决系统集成中的数据孤岛问题,提升企业信息化建设效率。

weixin_42549451的博客 672

车载 SOME/IP测试 上手整理 - 一万三千字

SOME/IP(Scalable service-Oriented MiddlewarE over IP)是一种在IP网络上实现服务导向(SOA)的中间件协议。它最初是为了满足车载网络的特定需求而设计的,但也可用于其他嵌入式系统。SOME/IP用于定义如何在参与节点(如车载电子控制单元,ECUs)之间发现服务、建立通信并进行数据交换。

weixin_39072720的博客 4421

Python新手必看:5分钟搞定睿尔曼机械臂基础控制(附代码示例)

本文为Python新手提供了快速上手睿尔曼机械臂基础控制的实战指南。通过详细的步骤讲解和代码示例,介绍了从环境搭建、网络配置、SDK安装到建立连接、执行关节运动(movej)、直线运动(movel)等核心控制指令的全过程,帮助零基础开发者快速实现机械臂的基础操控。

hp777的博客 328

Ribbon源码深度刨析-(5)ServiceRequestWrapper

“不积跬步,无以至千里。” 上文写到,ribbon通过其内置的IRule组件,使用指定的负载均衡算法(默认轮询)从ILoadBalancer组件的server list中会拿到一个真正要发送请求的server地址,那么接下来,就会调用网络通信组件发起http请求了。 @Override public <T> T execute(String serviceId, ServiceInstance serviceInstance, LoadBalancerRequest<T> req.

知秋的博客 1399

在UI界面中播放视频_unity基础开发教程

之前我写过一篇在场景中播放视频的文章,但是在开发中有时候也会在UI的界面中播放视频,这期我们做一下在UI的界面中播放视频。操作步骤比较简单,到这里就完成了,如果有问题的话可以在评论区留言,下期见,拜拜!

为者常成,行者常至! 2006

汽车行业OTD业务模式入门学习

本文是在学习彭俊松老师的《汽车行业整车订单交付系统》后,对于OTD理解的一些摘录,供诸位参考学习。

qq_40664711的博客 1万+

后端面试必备: Nginx实现负载均衡的底层原理详解

Nginx实现负载均衡的底层原理主要依赖于反向代理机制。Nginx充当客户端和服务器之间的中介,接收客户端请求后,将这些请求分发到多个后端服务器上,从而实现负载均衡。具体来说,Nginx利用各种负载均衡策略和模块,将流量平均或根据一定规则进行分配,提高网站的可靠性和处理能力。

qq_58299462的博客 1977

基于Simulink进行步进电机的重复控制仿真建模

目的:通过引入一个周期延迟环节来补偿系统的周期性误差,从而提高系统对周期性参考信号或扰动的跟踪性能。方法内部模型原理:在控制器中嵌入一个与周期性信号相关的模型(例如周期延迟环节),以实现对周期性误差的零稳态误差控制。滤波器设计:为了避免高频噪声放大,通常会在重复控制器中加入低通滤波器。优势对周期性信号具有良好的跟踪性能。不需要精确的数学模型即可实现高性能控制。挑战:需要合理设计重复控制器的参数以避免系统不稳定。

MHD0815的博客 379

HTTP和RPC刨析

摘要: HTTP和RPC是微服务通信的两种主要方式。HTTP基于文本传输,兼容性强,适合对外暴露接口(如RESTful API),但性能较低;RPC采用二进制协议,性能高效,适合内部高频服务调用(如gRPC、Dubbo)。HTTP优势在于跨语言支持和易调试,而RPC在服务治理、长连接复用等方面更优。实际场景中,对外交互(如前端调用)多用HTTP,内部服务通信(如订单与库存)优先RPC。选择时需权衡性能、兼容性及治理需求。

w_shixian的博客 586

华为OD机试真题2025双机位B卷 Python&JS 实现【朋友圈个数】

给定一组朋友关系,统计一下该朋友关系网中的朋友圈个数。 朋友圈的定义:一个朋友圈至少由3个朋友组成,且要求同一个朋友圈中的任意两个人都具有直接的朋友关系。 输入描述 输入一个朋友关系列表,如 Fiends =A.B],[A.C],IB,DI,其中的每一个元素 Friendsi表示 Friends[i][0)和 Friends [i][1] 是朋友关系 先输入一个数字 N 代表关系的总数,后面每条关系一行,两个成员以逗号分隔

MISAYAONE的博客 561

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

高并发负载均衡:网络协议原理与实践

高并发负载均衡是现代分布式系统的核心基础设施。其主流程涵盖了入口接收、协议解析、智能调度、请求转发及响应汇总,每一步都蕴含着高性能设计思想和工程技巧。通过异步I/O、健康检查、调度算法选择等手段,实现了高吞吐、低延迟和高可用。结合实际业务场景、调试优化、与多技术栈集成以及对底层原理和高级算法的剖析,可以帮助开发者构建更高效、健壮的负载均衡系统。随着云原生、服务网格等技术的发展,负载均衡正迈向智能化、自动化的新阶段。知其然,更要知其所以然。希望本文能成为你在高并发负载均衡领域的权威参考与进阶指南。

IT技术学习与工作笔记分享 1463

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

企业内部网络的多出口相互冗余备份与负载均衡

企业内部网络的多出口相互冗余备份与负载均衡 目录VRRP简介项目背景项目需求分析 VRRP简介 虚拟路由冗余协议VRRP(Virtual Router Redundancy Protocol)通过把几台路由设备联合组成一台虚拟的路由设备,将虚拟路由设备的IP地址作为用户的默认网关实现与外部网络通信。当网关设备发生故障时,VRRP机制能够选举新的网关设备承担数据流量,从而保障网络的可靠通信。 项目背景 企业为了提高网络可用性,增强了网络的健壮性,希望网络的核心层能实现冗余链路的同时能消除网络中的环路。此外,

正月十六工作室 6585

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Elasticsearch 核心原理刨析

1. Elasticsearch是什么 在了解ES相关概念之前,我们首先了解一下使用数据库做搜索有那些弊端。 1.1 数据库做搜索相关弊端 在部分站内搜索中,数据量小、简单条件的搜索,我们是可以使用数据库进行搜索的。 但是数据量大了之后可能就会出现相关问题了。 存储问题 电商网站商品上亿条时,涉及到单表数据过大必须拆分表,数据库磁盘占用过大必须分库(mycat)。 性能问题 解决上面问题后,查询“笔记本电脑”等关键词时,上亿条数据的商品名字段逐行扫描,性能跟不上。 不能分词 如搜索“笔记本电脑”

Java是世界上最好的语言 744

OpenFeign 与负载均衡

在启动类上添加@EnableFeignClients 注解。

qq806925608的博客 2029

【SpingCloud】客户端与服务端负载均衡机制,微服务负载均衡NacosLoadBalancer, 拓展:OSI七层网络模型

可能有些同学第一次听说集群和负载均衡,所以呢,我们先来做一个介绍,然后再聊服务端与客户端的负载均衡区别。

qq_50446805的博客 1805

DNS负载均衡的底层实现原理

DNS(域名系统)实现负载均衡是通过分散到不同服务器的请求来管理网络流量和优化资源使用的一种策略。下面详细介绍这种技术的实现原理、原因、以及其优缺点。

goTsHgo的博客 2272
上一篇: 微服务SpringCloud开弓之SpringCloud Alibaba Seata处理分布式事务「十五」
下一篇: redis再战之基础常识和安装《一》
漂吧
博客等级 码龄8年 15粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值