0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

IPVS负载均衡原理解析

马哥Linux运维 来源:博客园hongdada 2024-10-24 17:34 次阅读

概念:

ipvs (IP Virtual Server)实现了传输层负载均衡,也就是我们常说的4层LAN交换,作为 Linux 内核的一部分。ipvs运行在主机上,在真实服务器集群前充当负载均衡器。ipvs可以将基于TCP和UDP的服务请求转发到真实服务器上,并使真实服务器的服务在单个 IP 地址上显示为虚拟服务。

ipvs vs. iptables

我们知道kube-proxy支持 iptables 和 ipvs 两种模式, 在kubernetesv1.8 中引入了 ipvs 模式,在 v1.9 中处于 beta 阶段,在 v1.11 中已经正式可用了。iptables 模式在 v1.1 中就添加支持了,从 v1.2 版本开始 iptables 就是 kube-proxy 默认的操作模式,ipvs 和 iptables 都是基于netfilter的,那么 ipvs 模式和 iptables 模式之间有哪些差异呢?

ipvs 为大型集群提供了更好的可扩展性和性能

ipvs 支持比 iptables 更复杂的复制均衡算法(最小负载、最少连接、加权等等)

ipvs 支持服务器健康检查和连接重试等功能

ipvs 依赖 iptables

ipvs 会使用 iptables 进行包过滤、SNAT、masquared(伪装)。具体来说,ipvs 将使用ipset来存储需要DROP或masquared的流量的源或目标地址,以确保 iptables 规则的数量是恒定的,这样我们就不需要关心我们有多少服务了

LVS调度算法:

1. 轮叫调度 rr
这种算法是最简单的,就是按依次循环的方式将请求调度到不同的服务器上,该算法最大的特点就是简单。轮询算法假设所有的服务器处理请求的能力都是一样的,调度器会将所有的请求平均分配给每个真实服务器,不管后端 RS 配置和处理能力,非常均衡地分发下去。

2. 加权轮叫 wrr
这种算法比 rr 的算法多了一个权重的概念,可以给 RS 设置权重,权重越高,那么分发的请求数越多,权重的取值范围 0 – 100。主要是对rr算法的一种优化和补充, LVS 会考虑每台服务器的性能,并给每台服务器添加要给权值,如果服务器A的权值为1,服务器B的权值为2,则调度到服务器B的请求会是服务器A的2倍。权值越高的服务器,处理的请求越多。

3. 最少链接 lc
这个算法会根据后端 RS 的连接数来决定把请求分发给谁,比如 RS1 连接数比 RS2 连接数少,那么请求就优先发给 RS1

4. 加权最少链接 wlc
这个算法比 lc 多了一个权重的概念。

5. 基于局部性的最少连接调度算法 lblc
这个算法是请求数据包的目标 IP 地址的一种调度算法,该算法先根据请求的目标 IP 地址寻找最近的该目标 IP 地址所有使用的服务器,如果这台服务器依然可用,并且有能力处理该请求,调度器会尽量选择相同的服务器,否则会继续选择其它可行的服务器

6. 复杂的基于局部性最少的连接算法 lblcr
记录的不是要给目标 IP 与一台服务器之间的连接记录,它会维护一个目标 IP 到一组服务器之间的映射关系,防止单点服务器负载过高。

7. 目标地址散列调度算法 dh
该算法是根据目标 IP 地址通过散列函数将目标 IP 与服务器建立映射关系,出现服务器不可用或负载过高的情况下,发往该目标 IP 的请求会固定发给该服务器。

8. 源地址散列调度算法 sh
与目标地址散列调度算法类似,但它是根据源地址散列算法进行静态分配固定的服务器资源。

ipvsadm参数

添加虚拟服务器
    语法:ipvsadm -A [-t|u|f]  [vip_addr:port]  [-s:指定算法]
    -A:添加
    -t:TCP协议
    -u:UDP协议
    -f:防火墙标记
    -D:删除虚拟服务器记录
    -E:修改虚拟服务器记录
    -C:清空所有记录
    -L:查看
添加后端RealServer
    语法:ipvsadm -a [-t|u|f] [vip_addr:port] [-r ip_addr] [-g|i|m] [-w 指定权重]
    -a:添加
    -t:TCP协议
    -u:UDP协议
    -f:防火墙标记
    -r:指定后端realserver的IP
    -g:DR模式
    -i:TUN模式
    -m:NAT模式
    -w:指定权重
    -d:删除realserver记录
    -e:修改realserver记录
    -l:查看
通用:
    ipvsadm -ln:查看规则
    service ipvsadm save:保存规则

负载均衡器端:

安装LVS
    [root@lb01 ~]#yum -y install ipvsadm 
    [root@lb01 ~]#ipvsadm  
添加绑定VIP
    [root@lb01 ~]#ip addr add 192.168.0.89/24 dev eth0 label eth0:1
配置LVS-DR模式
    [root@lb01 ~]#ipvsadm -A -t 192.168.0.89:80 -s rr //创建一个DR,并指定调度算法采用rr。
    [root@lb01 ~]#ipvsadm -a -t 192.168.0.89:80 -r 192.168.0.93 -g  //添加RS
    [root@lb01 ~]#ipvsadm -a -t 192.168.0.89:80 -r 192.168.0.94 -g  //添加RS

Real-Server端

配置测试后端realserver
    配置httpd省略
    [root@realserver-1 ~]#curl 192.168.0.93 #测试realserver-1网站是否正常    
    192.168.0.93
    [root@realserver-2 ~]#curl 192.168.0.94 #测试realserver-2网站是否正常
    192.168.0.94
绑定VIP到lo网卡
    [root@realserver-1 ~]#ip addr add 192.168.0.89/32 dev lo label lo:1  #由于DR模式需要realserver也有VIP
抑制ARP
    [root@realserver-1 ~]#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce  
    [root@realserver-1 ~]#echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
    [root@realserver-1 ~]#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
    [root@realserver-1 ~]#echo 1 >/proc/sys/net/ipv4/conf/lo/arp_ignore

客户端测试

[root@test ~]#curl 192.168.0.89
192.168.0.93
[root@test ~]#curl 192.168.0.89
192.168.0.94

链接:https://www.cnblogs.com/hongdada/p/9758939.html

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内核
    +关注

    关注

    3

    文章

    1372

    浏览量

    40276
  • Linux
    +关注

    关注

    87

    文章

    11292

    浏览量

    209327
  • 服务器
    +关注

    关注

    12

    文章

    9123

    浏览量

    85324
  • 负载均衡
    +关注

    关注

    0

    文章

    110

    浏览量

    12364

原文标题:IPVS负载均衡

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    利用LVS中的IP负载均衡技术建立可伸缩性网络服务

    从LVS的通用体系结构入手,分析了IPVS软件的工作原理,讨论了三种IP负载均衡技术;在分析网络地址转换方法(VS/NAT)的缺点和网络服务的非对称性的基础上,给出了通过IP隧道
    发表于 11-10 12:02 13次下载

    负载均衡(Load Balance)

    负载均衡(Load Balance)   &nbs
    发表于 01-08 14:39 852次阅读

    什么是服务器网络负载均衡

    什么是服务器网络负载均衡 什么是负载均衡
    发表于 01-11 10:58 1801次阅读

    负载均衡是什么意思?负载均衡器有什么用

    负载平衡也称负载共享,是指对系统中的负载情况进行动态调整,以尽量消除或减少系统中各节点负载均衡的现象。
    发表于 12-21 09:48 1.9w次阅读
    <b class='flag-5'>负载</b><b class='flag-5'>均衡</b>是什么意思?<b class='flag-5'>负载</b><b class='flag-5'>均衡</b>器有什么用

    基于java的负载均衡算法解析及源码分享

    负载均衡的算法实际上就是解决跨系统调用的时候,在考虑后端机器承载情况的前提下,保证请求分配的平衡和合理。下面是基于java的负载均衡算法解析
    发表于 01-01 19:29 2217次阅读

    服务器负载均衡有几种类型,做负载均衡好在哪

    对于服务器负载均衡可能很多朋友并不了解是什么,服务器负载均衡的简单理解就是指对系统中的负载情况进
    的头像 发表于 09-02 17:57 3266次阅读

    Apacheproxy负载均衡和Session复制

    Apacheproxy负载均衡和Session复制(电源技术交流群)-Apacheproxy负载均衡和Session复制                    
    发表于 08-31 12:29 0次下载
    Apacheproxy<b class='flag-5'>负载</b><b class='flag-5'>均衡</b>和Session复制

    解密负载均衡技术和负载均衡算法

    负载均衡器是一种软件或硬件设备,它起到了将网络流量分散到一组服务器的作用,可以防止任何一台服务器过载。负载均衡算法就是负载
    的头像 发表于 11-12 09:16 1127次阅读

    简述kube-proxy ipvs原理

    iptables 与 IPVS 都是基于 Netfilter 实现的,但因为定位不同,二者有着本质的差别:iptables 是为防火墙而设计的;IPVS 则专门用于高性能负载均衡,并使
    的头像 发表于 05-22 11:35 745次阅读

    负载均衡是如何工作的?

    负载均衡是在多个物理服务器之间智能分配流量以最大化资源利用率的过程。换句话说,在两台或多台计算机/服务器之间共享计算工作负载的过程就是负载均衡
    的头像 发表于 06-15 17:26 677次阅读

    SDWAN和负载均衡的关系

    SDWAN和负载均衡的关系
    的头像 发表于 07-21 14:28 561次阅读

    如何确定适合的负载均衡比例

    路由器的负载均衡是一种应用于网络中的技术,它可以平衡网络流量的分配,提高网络的性能和稳定性。在配置路由器的负载均衡时,选择合适的负载
    的头像 发表于 12-15 10:36 1562次阅读

    深入解析IPVS(IP虚拟服务器)

    IPVS是如何决策应该把请求调度到哪个后端RS(Real Server)上的呢?这是由负载均衡调度算法决定的。
    发表于 02-27 11:12 1162次阅读
    深入<b class='flag-5'>解析</b><b class='flag-5'>IPVS</b>(IP虚拟服务器)

    视频网站服务器的四种负载均衡技术

    视频网站通常会面临大量的用户访问和视频流量,为了提高性能和可用性,需要使用负载均衡技术。以下是四种常用的视频网站服务器负载均衡技术: 1、基于DNS的
    的头像 发表于 04-01 17:36 620次阅读

    nginx负载均衡配置介绍

    目录 nginx负载均衡 nginx负载均衡介绍 反向代理与负载均衡 nginx
    的头像 发表于 11-10 13:39 231次阅读
    nginx<b class='flag-5'>负载</b><b class='flag-5'>均衡</b>配置介绍