• LVS集群


    目录

    一.LVS简介

    二.LVS调度算法

    1.静态方法

    2.动态方法

    三.ipvsadm工具选项

    四.LVS的三种工作模式

    1.搭建LVS的NAT模式架构

    2.LVS中DR模式

    五.总结

    1. NAT 模式

    2. DR 模式

    3. TUN 模式

    一.LVS简介

    Linux Virtual Server,负载调度器,内核集成,章文嵩(花名正明), 阿里的四层SLB(Server Load Balance)是基于LVS+keepalived实现

    LVS的核心组件包括:

    1. IPVS(IP Virtual Server):这是LVS的核心模块,运行在Linux内核空间,用于实现负载均衡功能。它通过虚拟IP地址接收客户端请求,然后根据预定义的调度算法将请求分发给后端的真实服务器。

    2. LVS-DR(Direct Routing):一种负载均衡方式,数据包直接从客户端发送到负载均衡器,然后直接路由到后端服务器,响应则直接返回客户端,避免了负载均衡器成为瓶颈。

    3. LVS-NAT(Network Address Translation):另一种负载均衡方式,所有流量都通过负载均衡器进行NAT转换,这样可以支持不在同一网段的服务器,但会增加负载均衡器的负担。

    4. LVS-TUN(IP Tunneling):通过IP隧道将请求发送到后端服务器,适用于地理上分布的服务器集群。

    LVS通常与其他高可用性和监控工具(如Keepalived、HAProxy等)结合使用,以实现更复杂和健壮的集群管理方案。

    主要特点:

    • 高性能:通过内核级别的数据包处理,实现高效的负载均衡。
    • 高可用性:支持多种调度算法和健康检查机制,确保服务的稳定运行。
    • 扩展性:支持添加和移除服务器节点,以应对业务需求的变化。
    • 灵活性:支持多种网络拓扑和部署模式,适应不同的应用场景。

    二.LVS调度算法

    ipvs scheduler:根据其调度时是否考虑各RS当前的负载状态

    分为两种:

    静态方法: 不管后端真实服务器的 状态,根据自身 算法进行调度

    动态方法: 会根据后端服务器的状态来进行调度

    1.静态方法

    1、RR:roundrobin,轮询,较常用

    2、WRR:Weighted RR,加权轮询,较常用 先算总权重 再用自己的 权重去除以 总权重

    3、SH:Source Hashing,实现session sticky,源IP地址hash;将来自于同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定

    4、DH:Destination Hashing;目标地址哈希,第一次轮询调度至RS,后续将发往同一个目标地址的请求始终转发至第一次挑中的RS,典型使用场景是正向代理缓存场景中的负载均衡,如: Web缓存 缓存

    2.动态方法

    个参考值     来确定服务器是否忙   这个值越小   代表服务器 闲   就会优先调度给闲的服务器

    主要根据每RS当前的负载状态及调度算法进行调度Overhead=value 较小的RS将被调度 

    1、LC:least connections 适用于长连接应用    最小连接数    不考虑权重

    Overhead=activeconns*256+inactiveconns

    2、WLC:Weighted LC,默认调度方法,较常用     默认调度    加权最小连接数    第一轮不合理  都是 一样的    优先级

    Overhead=(activeconns*256+inactiveconns)/weight

    3、SED:Shortest Expection Delay,初始连接高权重优先,只检查活动连接,而不考虑非活动连接   权重小的  空闲的

    Overhead=(activeconns+1)*256/weight

    4、NQ:Never Queue,第一轮均匀分配,后续SED       

    5、LBLC:Locality-Based LC,动态的DH算法,使用场景:根据负载状态实现正向代理,实现Web Cache等    检查 后端服务器忙不忙

    6、LBLCR:LBLC with Replication,带复制功能的LBLC,解决LBLC负载不均衡问题,从负载重的复制到负载轻的RS,,实现Web Cache等

    三.ipvsadm工具选项

    -A: 添加虚拟服务器
    -D: 删除整个虚拟服务器
    -s: 指定负载调度算法(轮询: rr、加权轮询: wrr、最少连接: lc、加权最少连接: wlc)
    -a: 添加真实服务器(节点服务器)
    -d: 删除某一个节点
    -t: 指定VIP地址及TCP端口
    -r: 指定RIP地址及TCP端口
    -m: 表示使用NAT群集模式
    -g: 表示使用DR模式
    -i: 表示使用TUN模式
    一w: 设置权重(权重为0时表示暂停节点)
    -p 60: 表示保持长连接60秒
    -l: 列表查看 LVS虚拟服务器(默认为查看所有)
    -n: 以数字形式显示地址、端口等信息,常与"-l“选项组合使用。ipvsadm -ln

    四.LVS的三种工作模式

    1.搭建LVS的NAT模式架构

    (1)配置LVS调度服务器

    新增一个网卡ens36,并修改为仅主机模式

    复制网卡ens33配置文件到ens36,并修改网卡ens36,IP地址和网关为12.0.0.1

    并重启网卡

    开启路由转发

    下载安装epel源和ipvsadm服务

    1. yum install epel-release.noarch -y
    2. yum install ipvsadm -y

    保存配置文件,启动  ipvsadm服务 指定服务器地址

    1. [root@localhost network-scripts]# ipvsadm-save > /etc/sysconfig/ipvsadm
    2. #保存配置文件
    3. [root@localhost network-scripts]# systemctl start ipvsadm.service
    4. #开启服务
    5. [root@localhost network-scripts]# ipvsadm -A -t 12.0.0.1:80 -s rr
    6. #指定IP地址 外网的入口 -s rr 轮询
    7. [root@localhost network-scripts]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.240.12:80 -m
    8. ##先指定虚拟服务器再添加真实服务器地址,-r:真实服务器地址 -m指定nat模式
    9. [root@localhost network-scripts]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.240.13:80 -m
    10. [root@localhost network-scripts]# ipvsadm -Ln
    11. #查看规则
    12. IP Virtual Server version 1.2.1 (size=4096)
    13. Prot LocalAddress:Port Scheduler Flags
    14. -> RemoteAddress:Port Forward Weight ActiveConn InActConn
    15. TCP 12.0.0.1:80 rr
    16. -> 192.168.240.12:80 Masq 1 0 0
    17. -> 192.168.240.13:80 Masq 1 0 0

    (2)配置真实服务器192.168.240.12

    下载http服务,开启http服务,并制作网页

    1. [root@localhost network-scripts]# systemctl stop nginx
    2. [root@localhost network-scripts]# systemctl start httpd
    3. [root@localhost network-scripts]#
    4. [root@localhost network-scripts]# echo zxy12 > /var/www/html/index.html

    (3)配置真实服务器192.168.240.13

    重启网卡systemctl  restart network

    1. [root@localhost network-scripts]# yum install httpd -y
    2. [root@localhost network-scripts]# systemctl start httpd
    3. [root@localhost network-scripts]# systemctl restart network
    4. [root@localhost network-scripts]# echo zxy13 > /var/www/html/index.html

    (4)修改客户机192.168.240.10

    修改IP地址为12.0.0.100,网关为12.0.0.1,网卡类型为仅主机

    1. [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
    2. NAME=ens33
    3. DEVICE=ens33
    4. ONBOOT=yes
    5. IPADDR=12.0.0.100
    6. METMASK=255.255.255.0
    7. GATEWAY=12.0.0.1
    8. DNS1=8.8.8.8
    9. [root@localhost ~]# systemctl restart network

    (5)登录客户机使用curl命令访问12.0.0.1 进行测试

    2.LVS中DR模式

    (1)配置调度服务器

    关闭防火墙

    1. systemctl stop firewalld.service
    2. setenforce 0

    yum  安装 ipvsadm.x86_64 

    [root@localhost ~]#yum install ipvsadm.x86_64 -y

    配置虚拟网卡

    1. [root@localhost ~]# cd /etc/sysconfig/network-scripts
    2. [root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0
    3. [root@localhost network-scripts]# vim ifcfg-ens33:0
    4. NAME=ens33:0
    5. DEVICE=ens33:0
    6. ONBOOT=yes
    7. IPADDR=192.168.240.188
    8. NETMASK=255.255.255.255
    9. [root@localhost network-scripts]#systemctl restart network
    10. [root@localhost network-scripts]#ifup ifcfg-ens33:0
    11. #启动网卡
    12. [root@localhost network-scripts]#ifconfig ifcfg-ens33:0

    调整/proc响应参数

    1. [root@localhost network-scripts]# vim /etc/sysctl.conf
    2. net.ipv4.ip_forward = 0
    3. net.ipv4.conf.all.send_redirects = 0
    4. net.ipv4.conf.default.send_redirects = 0
    5. net.ipv4.conf.ens33.send_redirects = 0
    6. [root@localhost network-scripts]#sysctl -p
    7. #刷新配置
    8. #调整/proc响应参数 对于 DR 群集模式来说,由于 LVS 负载调度器和各节点需要共用 VIP 地址,应该关闭 Linux 内核的重定向参数响应服务器不是一台路由器,那么它不会发送重定向,所以可以关闭该功能

    加载模块,配置负载分配策略

    1. [root@localhost network-scripts]# ipvsadm-save > /etc/sysconfig/ipvsadm
    2. ##保存设置
    3. [root@localhost network-scripts]# systemctl start ipvsadm.service
    4. [root@localhost network-scripts]# ipvsadm -C #清空策略
    5. [root@localhost network-scripts]# ipvsadm -A -t 192.168.240.188:80 -s rr
    6. [root@localhost network-scripts]# ipvsadm -a -t 192.168.240.188:80 -r 192.168.240.12:80 -g
    7. [root@localhost network-scripts]# ipvsadm -a -t 192.168.240.188:80 -r 192.168.240.13:80 -g
    8. [root@localhost network-scripts]# ipvsadm -Ln
    9. IP Virtual Server version 1.2.1 (size=4096)
    10. Prot LocalAddress:Port Scheduler Flags
    11. -> RemoteAddress:Port Forward Weight ActiveConn InActConn
    12. TCP 192.168.240.188:80 rr
    13. -> 192.168.240.12:80 Route 1 0 0
    14. -> 192.168.240.13:80 Route 1 0 0
    15. #添加真实服务器-a 指定VIP地址及TCP端口-t 指定RIP地址及TCP端口 -r 指定DR模式-g

    (2)配置节点服务器(真实服务器192.168.240.12)

    关闭防火墙,下载启动http服务

    1. [root@localhost ~]#systemctl stop firewalld.service
    2. [root@localhost ~]#setenforce 0
    3. [root@localhost ~]#yum install httpd -y
    4. [root@localhost ~]#systemctl start httpd

    制作网页

    1. [root@localhost ~]# cd /var/www/html
    2. [root@localhost html]# ls
    3. [root@localhost html]# echo zxy12 > /var/www/html/index.html

    修改回环网卡名,IP地址,子网掩码,配置路由

    1. [root@localhost ~]# cd /etc/sysconfig/network-scripts/
    2. [root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
    3. [root@localhost network-scripts]# vim ifcfg-lo:0
    4. #修改回环网卡名,IP地址,子网掩码
    5. DEVICE=lo:0
    6. IPADDR=192.168.240.188
    7. NETMASK=255.255.255.255
    8. NETWORK=127.0.0.0
    9. ONBOOT=yes
    10. [root@localhost network-scripts]# systemctl restart network
    11. [root@localhost network-scripts]# route add -host 192.168.240.188 dev lo:0
    12. #设置路由
    13. [root@localhost network-scripts]# route -n
    14. Kernel IP routing table
    15. Destination Gateway Genmask Flags Metric Ref Use Iface
    16. 0.0.0.0 192.168.240.2 0.0.0.0 UG 100 0 0 ens33
    17. 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
    18. 192.168.240.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
    19. 192.168.240.188 0.0.0.0 255.255.255.255 UH 0 0 0 lo

    开机执行命令,或者写入 /etc/profile 文件

    1. [root@localhost network-scripts]#vim /etc/rc.d/rc.local
    2. /usr/sbin/route add -host 192.168.240.188 dev lo:0
    3. [root@localhost network-scripts]#chmod +x /etc/rc.d/rc.local
    4. [root@localhost network-scripts]#ll /etc/rc.d/rc.local

    调整/proc响应参数

    1. [root@localhost network-scripts]#vim /etc/sysctl.conf
    2. #添加系统只响应目的IP为本地IP的ARP请求
    3. #系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
    4. net.ipv4.conf.all.arp_ignore = 1
    5. net.ipv4.conf.all.arp_announce = 2
    6. net.ipv4.conf.default.arp_ignore = 1
    7. net.ipv4.conf.default.arp_announce = 2
    8. net.ipv4.conf.lo.arp_ignore = 1
    9. net.ipv4.conf.lo.arp_announce = 2
    10. [root@localhost network-scripts]#sysctl -p #刷新配置

    (3)配置节点服务器(真实服务器192.168.240.13)

    关闭防火墙,下载启动http服务

    1. [root@localhost ~]#systemctl stop firewalld.service
    2. [root@localhost ~]#setenforce 0
    3. [root@localhost ~]#yum install httpd -y
    4. [root@localhost ~]#systemctl start httpd

    制作网页

    1. [root@localhost ~]# cd /var/www/html
    2. [root@localhost html]# ls
    3. [root@localhost html]# echo zxy13 > /var/www/html/index.html

    修改回环网卡名,IP地址,子网掩码,配置路由

    1. [root@localhost ~]# cd /etc/sysconfig/network-scripts/
    2. [root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
    3. [root@localhost network-scripts]# vim ifcfg-lo:0
    4. #修改回环网卡名,IP地址,子网掩码
    5. DEVICE=lo:0
    6. IPADDR=192.168.240.188
    7. NETMASK=255.255.255.255
    8. NETWORK=127.0.0.0
    9. ONBOOT=yes
    10. [root@localhost network-scripts]# systemctl restart network
    11. [root@localhost network-scripts]# route add -host 192.168.240.188 dev lo:0
    12. #设置路由
    13. [root@localhost network-scripts]# route -n
    14. Kernel IP routing table
    15. Destination Gateway Genmask Flags Metric Ref Use Iface
    16. 0.0.0.0 192.168.240.2 0.0.0.0 UG 100 0 0 ens33
    17. 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
    18. 192.168.240.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
    19. 192.168.240.188 0.0.0.0 255.255.255.255 UH 0 0 0 lo

    开机执行命令,或者写入 /etc/profile 文件

    1. [root@localhost network-scripts]#vim /etc/rc.d/rc.local
    2. /usr/sbin/route add -host 192.168.240.188 dev lo:0
    3. [root@localhost network-scripts]#chmod +x /etc/rc.d/rc.local
    4. [root@localhost network-scripts]#ll /etc/rc.d/rc.local

    调整/proc响应参数

    1. [root@localhost network-scripts]#vim /etc/sysctl.conf
    2. #添加系统只响应目的IP为本地IP的ARP请求
    3. #系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
    4. net.ipv4.conf.all.arp_ignore = 1
    5. net.ipv4.conf.all.arp_announce = 2
    6. net.ipv4.conf.default.arp_ignore = 1
    7. net.ipv4.conf.default.arp_announce = 2
    8. net.ipv4.conf.lo.arp_ignore = 1
    9. net.ipv4.conf.lo.arp_announce = 2
    10. [root@localhost network-scripts]#sysctl -p #刷新配置

    (4)测试结果

    五.总结

    LVS工作模式总结和比较

    NATTUNDR
    优点端口转换WAN性能最好
    缺点性能瓶颈服务器支持隧道模式不支持跨网段
    真实服务器要求anyTunnelingNon-arp device
    支持网络private(私网)LAN/WAN(私网/公网)LAN(私网)
    真实服务器数量low (10~20)High (100)High (100)
    真实服务器网关lvs内网地址Own router(网工定义)Own router(网工定义)

    1. NAT 模式(Network Address Translation)

    工作原理

    • LVS 负载均衡器接收客户端请求,并将请求转发到后端服务器。
    • 后端服务器处理请求并将响应数据发送回 LVS 负载均衡器,由其再转发给客户端。

    特点

    • LVS 负载均衡器需要处理进出流量,性能瓶颈在 LVS 本身。
    • 后端服务器可以位于不同的子网。
    • 实现简单,配置方便。

    优缺点

    • 优点:配置简单,对后端服务器无特殊要求。
    • 缺点:LVS 负载均衡器成为单点瓶颈,适用于小规模系统。

    2. DR 模式(Direct Routing)

    工作原理

    • LVS 负载均衡器只负责将请求转发给后端服务器,但响应数据由后端服务器直接发送给客户端,不经过 LVS 负载均衡器。

    特点

    • 流量只有一半经过 LVS 负载均衡器,减少了负载。
    • 后端服务器必须与 LVS 负载均衡器处于同一物理网络中,因为它们需要共享相同的 MAC 地址。
    • 需要修改后端服务器的网络配置。

    优缺点

    • 优点:减轻了 LVS 负载均衡器的负担,适合大流量的应用。
    • 缺点:配置复杂,要求后端服务器在同一物理网络中。

    3. TUN 模式(IP Tunneling)

    工作原理

    • LVS 负载均衡器通过 IP 隧道将请求转发给后端服务器,后端服务器直接将响应数据发送给客户端。
    • 后端服务器需要支持 IP 隧道(IPIP)。

    特点

    • 类似于 DR 模式,但后端服务器可以位于不同的地理位置或不同的网络中。
    • LVS 负载均衡器处理的流量较少,仅限于请求包。

    优缺点

    • 优点:后端服务器不需要与 LVS 负载均衡器在同一物理网络,扩展性好。
    • 缺点:后端服务器需要支持 IP 隧道,配置较为复杂。

    总结

    • NAT 模式:适合小规模应用,配置简单,但 LVS 负载较大。
    • DR 模式:适合大流量应用,LVS 负载较轻,但配置要求高。
    • TUN 模式:适合地理分布广泛的后端服务器,扩展性强,但需要 IP 隧道支持。

  • 相关阅读:
    RKMPP API安装使用总结
    [Spring] @Bean 修饰方法时如何注入参数
    【网络服务&数据库教程】09 Rsync 实操
    入门Vue2 11 参数传递和重定向
    【5. 事务】
    【面试题精讲】为什么重写equals时必须重写hashCode方法?
    ShardingSphere-Proxy基本使用
    《windows 程序设计》读书笔记 三
    【如何看待Unity收费】对标中小公司的待就业者的该如何做
    一小时极速掌握HybridCLR热更新
  • 原文地址:https://blog.csdn.net/weixin_56770318/article/details/139742013