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. 应用场景
    大型网站的流量分担。
    分布式服务架构中的请求路由。
    提高系统的可用性和扩展性
相关推荐
linweidong13 小时前
MariaDB面试题及参考答案
linux·运维·数据库·负载均衡·dba·mariadb·后端面试
码农研究僧2 天前
详细分析ipvsadm负载均衡的命令
运维·负载均衡·lvs·ipvsadm
wclass-zhengge2 天前
04高可用高并发(D2_高可用 - D1_负载均衡)
运维·负载均衡
不会编程的懒洋洋2 天前
Spring Cloud OpenFeign 声明式服务调用与负载均衡组件
java·spring boot·后端·spring·spring cloud·负载均衡·openfegin
海绵波波1073 天前
集群聊天服务器(12)nginx负载均衡器
服务器·nginx·负载均衡
.生产的驴3 天前
SpringCloud OpenFeign负载均衡远程调用 跨服务调用 连接池优化
java·运维·spring boot·后端·spring·spring cloud·负载均衡
zyh200504303 天前
SpringCloud多机部署,负载均衡-LoadBalance
spring·spring cloud·负载均衡
Likelong~3 天前
RPC框架负载均衡
网络协议·rpc·负载均衡
Dklau-c3 天前
探索Linux内核中的Runqueue:从O(n)到O(1)的演进与负载均衡应用
linux·服务器·网络·负载均衡
快乐非自愿3 天前
Spring Cloud Ribbon 实现“负载均衡”的详细配置说明
spring cloud·ribbon·负载均衡