lvs知识点归纳

LVS(Linux Virtual Server)是 Linux 内核的一种负载均衡技术,主要用于实现高可用性和高性能的服务器集群。以下是一些关键知识点的归纳:

  1. 基本概念

    虚拟服务器:将多台物理服务器(真实服务器)抽象为一个虚拟服务器,用户访问虚拟服务器。

    负载均衡:根据预设算法将请求分配到后端真实服务器。

  2. 组成部分

    LVS 负载均衡器:负责接收客户端请求并将其转发到真实服务器。

    真实服务器:实际处理请求的服务器。

    调度算法:决定如何将请求分配给真实服务器的策略。

  3. 调度算法

    轮询(Round Robin):依次将请求分配给每台服务器。

    加权轮询(Weighted Round Robin):根据服务器的权重进行请求分配。

    最少连接(Least Connections):将请求分配给当前连接数最少的服务器。

    加权最少连接(Weighted Least Connections):结合权重和连接数进行请求分配。

  4. 工作模式

NAT(Network Address Translation)模式:负载均衡器通过修改数据包的源地址和目标地址实现转发。

图示:

bash 复制代码
流程:
1 客户端发起请求,访问的是可供客户端通信的vip
2 lvs负载均衡服务器首先接收这个请求
3 lvs负载均衡器进行地址转换,保留客户端源ip(CIP),将请求的VIP替换为真实的后端物理服务器地址(RIP)
4 负载均衡器将修改后的请求转发到真实服务器。
5 真实服务器处理请求并将响应返回给负载均衡器.
6 负载均衡器再将响应的源地址(真实服务器的 IP,RIP)替换为虚拟服务器的 IP(VIP),然后发送回客户端。

特点
透明性:客户端并不需要知道真实服务器的存在,只需与虚拟服务器进行通信。
支持多种协议:NAT 模式支持多种网络协议,包括 TCP、UDP 和 ICMP。
简单配置:相对 DR 模式,NAT 模式的配置较为简单,适合对后端真实服务器进行统一管理。

优点
灵活性:可以灵活配置和管理真实服务器。
负载均衡功能:能有效地将流量分配到后端多个服务器,提升系统的处理能力。

缺点
性能开销:由于负载均衡器需要对数据包进行源和目标地址的转换,可能会导致一定的性能损失。
带宽限制:所有数据包都要经过负载均衡器,可能成为网络瓶颈,尤其在高流量情况下。
请求/响应延迟:由于需要经过负载均衡器,可能会增加请求和响应的延迟

配置示例
使用 ipvsadm 配置 NAT 模式的基本示例:
# 创建虚拟服务器
ipvsadm -A -t <virtual_server_ip>:<port> -s rr
# 添加真实服务器
ipvsadm -a -t <virtual_server_ip>:<port> -r <real_server_ip>:<port> -m
-A:添加虚拟服务。
-a:添加真实服务器。
-s:设置调度算法(如轮询)。
-m:指定 NAT 模式。

DR(Direct Routing)模式:负载均衡器仅修改数据包的目标地址,真实服务器直接响应请求。

在这种模式下,负载均衡器(LVS)只修改请求的目标地址,而不改变源地址,真实服务器直接响应客户端的请求。

关键点:

同一网络段:负载均衡器和真实服务器必须在同一个网络段,以便能够直接通信和处理请求。

直接响应:真实服务器直接向客户端发送响应,减少了网络延迟和负担。

性能优势:通过直接通信,DR 模式能够显著提高性能,特别是在高流量的场景下。

bash 复制代码
1 客户端请求:客户端向虚拟服务器的 IP(VIP)发送请求,源 IP 是客户端的 IP,目标 IP 是 VIP。
2 负载均衡器接收请求:
  LVS 负载均衡器接收请求,目标地址被替换为一台真实服务器的 IP,源地址保持为客户端的 IP。
3 请求转发:负载均衡器将修改后的请求直接转发到真实服务器。
4 真实服务器处理:真实服务器看到请求的目标 IP 是自己的 IP,处理请求后将响应直接发送给客户端。
5 ARP 解析:负载均衡器对 VIP 的 ARP 请求做出响应,确保网络中其他设备知道 VIP 的 MAC 地址。


配置示例
lvs负载均衡服务器和后端真实服务器配置相同的虚拟ip地址(VIP)
lvs负载均衡服务器配置:
	1.添加vip 
	  sudo ip addr add <virtual_server_ip>/<netmask> dev <interface>
	  sudo ip addr add 192.168.1.100/24 dev eth0

	2.在 DR 模式下,如果负载均衡器和真实服务器在同一子网,通常不需要额外配置路由。
	  但如果它们不在同一网络段,就需要进行路由配置
	  sudo route add -host 192.168.0.123 dev ens32
	  
	3.设置路由转发 vim /etc/sysctl.conf
	  net.ipv4.ip_forward = 1
	  net.ipv4.conf.all.send_redirects = 0
      net.ipv4.conf.ens32.send_redirects = 0
      net.ipv4.conf.default.send_redirects = 0
    4.利用ipvsadm设置负载均衡条目规则
      sudo ipvsadm -A -t <virtual_server_ip>:<port> -s <scheduler>
      sudo ipvsadm -a -t <virtual_server_ip>:<port> -r <real_server_ip>:<port> -g
      示例:
      sudo ipvsadm -A -t 192.168.0.123:80 -s rr
	  sudo ipvsadm -a -t 192.168.0.123:80 -r 192.168.0.101:80 -g
      sudo ipvsadm -a -t 192.168.0.123:80 -r 192.168.0.102:80 -g
      设置权重
      sudo ipvsadm -a -t 192.168.0.123:80 -r 192.168.0.101:80 -g -w <weight>
 	  查看配置
	  sudo ipvsadm -L -n
	  保存配置(可选)
	  sudo ipvsadm-save > /etc/ipvsadm.rules

后端真实服务器配置:
	 1.安装web  yum -y  install nginx
	 2.在 lo(本地回环)接口上配置 VIP(虚拟 IP)32位
	    ifconfig lo:0 192.168.0.123/32
	    ip addr show dev lo	  
	 3.调整内核参数
	   echo 1 | sudo tee /proc/sys/net/ipv4/conf/all/arp_ignore
       echo 2 | sudo tee /proc/sys/net/ipv4/conf/all/arp_announce
     4.测试查看
       ipvsadm -Lnc

优势:
高性能:
DR 模式能够直接将流量转发到真实服务器,减少了负载均衡器的负担,因此性能相对较高,适合处理大量的并发连接。
客户端 IP 可见:
真实服务器能够看到客户端的原始 IP 地址,这对于日志记录、访问控制和分析非常重要。
简化配置:
相比于其他模式(如 FULL-NAT),DR 模式的网络配置相对简单,通常只需要在负载均衡器和真实服务器上进行基础的网络设置。
支持多种协议:
DR 模式可以支持多种协议(如 TCP 和 UDP),灵活性较强。
缺点:
ARP 配置复杂:
需要正确配置 ARP,确保负载均衡器和真实服务器能够正确响应 ARP 请求,这可能会增加网络配置的复杂性。
需要在同一子网内:
真实服务器必须在与负载均衡器相同的子网内,这限制了网络的灵活性。
网络依赖性:
由于 DR 模式依赖于 ARP,因此在某些网络环境下可能会遇到问题,比如跨越多个子网时,可能需要额外的路由配置。
可扩展性问题:
当真实服务器数量增加时,可能需要调整网络配置,确保所有服务器的 ARP 响应正常工作。

TUN(Tunneling)模式:负载均衡器将请求通过隧道转发到真实服务器,适用于不同网络之间的负载均衡。

FULL-NAT模式

  1. 应用场景
    大型网站的流量分担。
    分布式服务架构中的请求路由。
    提高系统的可用性和扩展性
相关推荐
小晶晶京京1 天前
day35-负载均衡
运维·网络·网络协议·学习·负载均衡
xujiangyan_1 天前
HAProxy使用方法以及和LVS区别
lvs
CodeDevMaster2 天前
Gemini Balance:轻松实现Gemini API负载均衡与无缝切换的终极指南
负载均衡·api·gemini
扶风呀5 天前
具有熔断能力和活性探测的服务负载均衡解决方案
运维·负载均衡
Hello World呀5 天前
springcloud负载均衡测试类
spring·spring cloud·负载均衡
菜菜子爱学习6 天前
Nginx学习笔记(七)——Nginx负载均衡
笔记·学习·nginx·负载均衡·运维开发
扶风呀6 天前
负载均衡详解
运维·后端·微服务·面试·负载均衡
PXM的算法星球6 天前
spring gateway配合nacos实现负载均衡
spring·gateway·负载均衡
抛物线.9 天前
Docker Compose 部署高可用 MongoDB 副本集集群(含 Keepalived + HAProxy 负载均衡)
mongodb·docker·负载均衡
ZNineSun10 天前
什么是负载均衡,有哪些常见算法?
负载均衡·osi·七层网络模型