LVS(Linux Virtual Server)是Linux平台上的一种高效、可伸缩的服务器集群技术,主要用于实现负载均衡。LVS是Linux内核的一部分,它通过在Linux操作系统中集成虚拟服务器功能来实现。LVS可以将来自客户端的请求分发到后端的多个真实服务器上,从而提高系统的整体处理能力、可靠性和可扩展性。
lvs概念
- VS:Virtual Server
- RS:Real Server
- CIP:Client IP
- VIP: Virtual serve IP VS外网的IP
- DIP: Director IP VS内网的IP
- RIP: Real server IP
访问流程:CIP <--> VIP == DIP <--> RIP
lvs集群的类型
- lvs-nat: 修改请求报文的目标IP,多目标IP的DNAT
- lvs-dr: 操纵封装新的MAC地址
- lvs-tun: 在原请求IP报文之外新加一个IP首部
- lvs-fullnat: 修改请求报文的源和目标IP
nat模式
- 本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和
- PORT实现转发
- RIP和DIP应在同一个IP网络,且应使用私网地址;RS的网关要指向DIP
- 请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈
- 支持端口映射,可修改请求报文的目标PORT
- VS必须是Linux系统,RS可以是任意OS系统
nat模式数据逻辑
实验配置(rhel9.3)
vs主机(lvs-nat )基础配置
1,添加仅主机模式网卡
2,此主机以提前修改网卡生成名称,请自行查看修改
3,打开内核路由功能
这个参数控制IPv4数据包转发是否启用。当设置为0
时,表示禁用IP转发。这意呀着,如果Linux系统接收到一个目的地址不是本机地址的数据包,它将不会尝试将该数据包转发到另一个网络接口。这通常用于防止系统意外地成为路由器或网关。如果你想要你的Linux系统能够转发数据包(例如,作为一个路由器或网关),你需要将这个参数设置为1
。
rs1(web1)基础配置
1,修改网络适配器模式
2,网络配置 192.168.206.10
3,修改网关为 vs主机的eth1网卡ip地址
4,重启该网卡
5,下载httpd
6,方便之后观察效果
7,启用服务
rs2(web2)基础配置
1,修改网络适配器模式
2,网络配置 192.168.206.20
3,修改网关为 vs主机的eth1网卡ip地址
4,重启该网卡
5,下载httpd
6,方便之后观察效果
7,启用服务
测试web1,2是否设置成功(在lvs主机中测试)
在vs主机上开始lvs-nat模式配置
1,下载ipvsadm
2, IPVS 中添加一个虚拟服务
具体来说,它做了以下几件事情:
-
-A
:这个选项用于添加一个新的虚拟服务到 IPVS 表中。 -
-t 192.168.110.50:80
:这里指定了虚拟服务的 IP 地址和端口号。在这个例子中,IP 地址是192.168.110.50
,端口号是80
,通常用于 HTTP 服务。这意味着所有发往这个 IP 地址和端口的请求都会被 IPVS 捕获并可能转发给后端的真实服务器。 -
-s rr
:这个选项指定了调度算法,rr
代表轮询(Round Robin)。轮询调度算法会按顺序将请求依次转发到后端服务器列表中的下一个服务器,直到列表末尾,然后又从头开始。这是一种简单的负载均衡算法,可以确保每个后端服务器接收到大致相等数量的请求。
总结来说,这条命令在 IPVS 系统中创建了一个新的虚拟服务,监听 192.168.110.86
的 80
端口,并使用轮询调度算法来分配进来的请求到后端服务器。然而,请注意,仅仅添加虚拟服务是不够的,你还需要添加后端真实服务器到 IPVS 表中,并指定它们如何接收和处理这些请求。这通常通过 ipvsadm -a
命令来完成,其中会指定后端服务器的 IP 地址、端口号以及相关的权重等参数。
3,添加一个真实服务器
-
-a
:这个选项用于向 IPVS 表中添加一个真实服务器到已存在的虚拟服务。 -
-t 192.168.110.50:80
:指定虚拟服务的 IP 地址和端口号。在这个例子中,IP 地址是192.168.110.50
,端口号是80
,这通常用于 HTTP 服务。 -
-r 192.168.206.10
:指定要添加的真实服务器的 IP 地址。在这个例子中,真实服务器的 IP 地址是192.168.206.10
。 -
-m
:这个选项指定了转发方法,m
代表 NAT(网络地址转换)模式。在 NAT 模式下,IPVS 会修改进入的数据包的目标 IP 地址和端口号,将它们指向后端真实服务器的 IP 地址和端口号(如果后端服务器使用非标准端口,则也需要指定)。然后,从真实服务器返回的数据包会被 IPVS 捕获,并且源 IP 地址和端口号会被修改为虚拟服务的 IP 地址和端口号,再发送回客户端。这样,客户端就只会与虚拟服务的 IP 地址通信,而不会知道后端真实服务器的存在。
4,检查是否成功
5,也可以修改权重,更改访问方式
6,新效果
DR模式
DR模式数逻辑
DR模式数据传输过程
DR模式的特点
实验配置(rhel9.3)
各主机基础配置
1,客户端 client 单网卡 nat 192.168.110.20
【1】网络配置
【2】修改网关
2,路由器 router 双网卡 nat 192.168.110.10 仅主机 192.168.206.200
【1】加网卡
【2】网络配置
eth0 ---NAT
eth1 ---仅主机
【3】开启内核路由功能
3,lvs主机 lvs-dr 双网卡 仅主机 192.168.206.40 仅主机 192.168.206.100
【1】添加网卡
【2】网络配置
eth0--仅主机
eth1--仅主机
【3】开启内核路由
【4】下载ipvsadm\
4,re主机1 webserver1 双网卡 仅主机 192.168.206.10 仅主机 192.168.206.100
【1】添加网卡
【2】网络配置
eth0
eth1
【3】httpd下载使用
【4】限制响应级别,限制通告级别
5,re主机2 webserver1 双网卡 仅主机 192.168.206.20 仅主机 192.168.206.100
【1】加网卡
【2】配置网络
eth0
eth1
【3】httpd下载使用
【4】限制响应级别,限制通告级别
6,在lvs-dr检测httpd是否成功
7,检验ip配置是否正确(在client上做)
8,在系统中添加一个新的虚拟服务,该服务的 IP 地址为 192.168.206.100
,使用加权轮询(WRR)算法来进行负载均衡
LVS 是一种用于构建高可用性和高可扩展性的网络服务器的技术,它通过在网络层(IP 层)进行负载均衡来实现。
命令 ipvsadm -A -t 192.168.206.100 -s wrr
的具体含义如下:
-
ipvsadm
:这是调用 IPVS 管理器的命令。 -
-A
:这个选项用于添加一个新的虚拟服务。这意味着你正在为某个 IP 地址和端口组合配置一个新的负载均衡器。 -
-t 192.168.206.100
:这里的-t
选项后面跟的是虚拟服务的 IP 地址和端口(尽管在这个命令中没有直接指定端口,所以默认是 TCP/IP 服务的标准端口,如 HTTP 的 80)。192.168.206.100
是这个虚拟服务的 IP 地址,客户端将向这个 IP 地址发送请求。 -
-s wrr
:这个选项指定了虚拟服务的调度算法。在这个例子中,使用的是wrr
(加权轮询)算法。加权轮询算法会根据后端服务器的权重来分配请求,权重越高的服务器接收到的请求越多。这种算法允许管理员根据服务器的性能来分配负载,以实现更优的负载均衡效果。
9,向已存在的虚拟服务中添加一个真实服务器
命令 ipvsadm -a -t 192.168.206.100:80 -r 192.168.206.10 -g -w 1
的含义如下:
-
ipvsadm
:这是调用 IPVS(IP 虚拟服务器)管理器的命令,用于在 Linux 系统上设置和管理基于 IP 的虚拟服务器。 -
-a
:这个选项用于向已经存在的虚拟服务中添加一个新的真实服务器(real server)。 -
-t 192.168.206.100:80
:这里-t
选项后面跟的是虚拟服务的 IP 地址和端口号。192.168.206.100
是虚拟服务器的 IP 地址,80
是 TCP 端口号(通常用于 HTTP 服务)。这意味着客户端将向192.168.206.100
的80
端口发送 HTTP 请求。 -
-r 192.168.206.10
:这里的-r
选项后面跟的是真实服务器的 IP 地址。192.168.206.10
是将要接收和处理从虚拟服务转发过来的请求的真实服务器的 IP 地址。 -
-g
:这个选项指定了 LVS 的转发模式为直接路由(Direct Routing,简称 DR)。在 DR 模式下,真实服务器(real servers)和负载调度器(director)必须位于同一物理网络中,并且真实服务器必须配置有虚拟服务的 IP 地址作为别名,但仅由负载调度器响应此 IP 地址的 ARP 请求。这样,客户端的请求会直接发送给真实服务器,但响应会经过负载调度器返回给客户端(对于 TCP 响应,这通常不是问题,因为 TCP 是面向连接的协议)。 -
-w 1
:这个选项指定了真实服务器的权重为1
。在加权轮询(WRR)或其他需要权重的调度算法中,权重决定了服务器接收请求的比例。在这个例子中,虽然-s
选项(用于指定调度算法)没有在这个命令中明确给出,但如果虚拟服务使用的是加权轮询算法,那么权重为1
的服务器将按照其权重比例接收请求。然而,如果虚拟服务使用的是其他调度算法(如轮询 RR),权重可能不会被直接使用。