目录
LVS简介:
LVS是Linux virtual server的缩写,为linux虚拟服务器,是一个虚拟的服务器集群系统。它通过将多个服务器组成一个虚拟服务器集群,实现了高效的负载均衡和流量分发。LVS的核心思想是利用IP负载均衡技术和内容请求分发机制,将客户端的请求均衡地分配给服务器集群中的各个节点。这种机制能够有效地提高服务器的利用率,降低单点故障的风险,并提供高可用性和可伸缩性的服务。
LVS的四种集群类型
1.NAT模式(VS服务器的压力太大)
NAT模式应用于网络层和传输层即改变数据包的ip和端口
工作过程(如下图所示):
1.客户端发出请求包,包中包含这客户端ip(cip)目的IP(vip)以及目的端口
2.VS收到请求进行调度修改,将目的IP由vip修改为服务器真实ip(rip)以及修改目标端口号
3.服务器rip收到请求做出响应发送数据包,此时数据包起始ip为rip目的ip为客户端ip(cip)
4.响应回去路上VS再次进行调度修改将起始ip转换为vip目的ip转换为cip以及转换对应的目的端口
5.客户端接受服务器的响应包
2.DR模式
3.TUN模式(不常用)
4.fullnet模式(不常用)
Fullnet模式是一种在LVS中配置的特殊模式,它允许使用Linux系统上的所有网络接口进行输入和输出负载均衡操作。这种模式的核心优势在于其能够利用全部可用的网络资源,从而最大化数据传输的效率和处理能力。
LVS的算法
静态算法:
动态算法:
lvs部署命令
要成功部署LVS,首先要确保系统已经安装了ipvsadm
工具。这个工具是用于管理LVS服务的命令行界面,通过它可以轻松地添加、删除和修改虚拟服务器和真实服务器之间的映射关系
一些常用的ipvsadm
命令参数:
-A, --add-service
:添加一个新的虚拟服务。例如,ipvsadm -A -t 192.168.1.100:80 -s rr
会添加一个使用轮询调度算法的TCP虚拟服务。
-E, --edit-service
:修改现有的虚拟服务配置。通过这个命令,可以调整现有服务的调度算法、超时设置等参数。
-D, --delete-service
:删除一个虚拟服务。这个命令用于从虚拟服务表中移除一条记录。
-C, --clear
:清除整个IPVS表。这个命令将清空所有的虚拟服务和真实服务器配置。
-S, --save
:将当前IPVS配置输出到标准输出。这可以用于备份当前的配置。
-R, --restore
:从标准输入恢复IPVS表。与-S
配合使用,可以实现配置的备份与恢复。
-a, --add-server
:为虚拟服务添加一个新的真实服务器。例如,ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.101:80 -g
将指定的真实服务器以直接路由模式添加到现有的虚拟服务中。
-e, --edit-server
:修改已存在的真实服务器配置。可以更改转发模式、权重等参数。
-d, --delete-server
:从虚拟服务中删除一个真实服务器。当某个服务器需要下线维护时,可以使用此命令。
-L, --list
:列出所有当前的IPVS配置。这对于检查当前配置状态非常有帮助。
-Z, --zero
:将所有数据相关的记录清零。这些记录一般用于调度策略。
此外,ipvsadm
还提供了一些高级选项来满足特定的负载均衡需求:
-p, --persistent [timeout]
:设置持久连接的超时时间。这个选项可以使来自相同客户的多个请求被发送到同一个真实服务器,常用于FTP或SSL服务中。
-M, --netmask netmask
:指定客户地址的子网掩码。这用于将同一子网内的请求转发到相同的服务器。
-r, --real-server server-address
:指定真实服务器的地址和端口。如果没有指定端口号,将使用虚拟服务的端口号。
-f, --fwmark-service integer
:通过防火墙标记来定义要负载均衡的数据包。这对于根据不同规则将流量路由到不同的服务器非常有用。
ipvsadam的使用
在LVS环境中添加虚拟服务器(Director),使用以下命令:
ipvsadm -A -t 192.168.1.100:80 -s rr
这条命令会添加一个虚拟服务器,其IP地址为192.168.1.100,端口为80,并使用轮询调度算法(rr表示round-robin)
接下来,将真实服务器(Real Server)加入到虚拟服务器中。对于NAT模式,使用以下命令:
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.101:80 -m
这条命令会将IP地址为192.168.1.101且端口为80的真实服务器以NAT模式添加到前面定义的虚拟服务器池中。这里的-m
标志表示使用MASQUERADE模式。
如果要配置直接路由(DR)模式,只需轻微修改上述命令:
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.101:80 -g
LVS实验
LVS的DR工作方式部署
实验准备:五台虚拟机
客户端配置NAT网卡ip地址为172.25.254.200
一台主机充当路由器,配置两块网卡,工作方式为仅主机和NAT,NAT的地址为172.25.254.100,仅主机地址为192.168.0.100
VS配置仅主机网卡,地址为192.168.0.100,并配置vip在lo上,地址为192.168.0.200
真实服务器1配置仅主机网卡,地址为192.168.0.10,并配置vip在lo上,地址为192.168.0.200
真实服务器2配置仅主机网卡,地址为192.168.0.20,并配置vip在lo上,地址为192.168.0.200
1.在真实服务器1,2上安装httpd服务,并制作默认页面,方便后期测试
yum install httpd -y
systemctl start httpd
echo webserver1 --192.168.0.10 > /var/www/html/index.html (RS1上)
echo webserver2 --192.168.0.20 > /var/www/html/index.html (RS2上)
2.在RS1和RS2中解决响应问题 ,使其只接受不发送
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
(RS1和RS2上均配置)
3.在VS上配置策略
ipvsadm -A -t 192.168.0.200:80 -s wrr
ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10:80 -g
ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20:80 -g
ipvsadm -Ln(配置后进行查看)
测试:
LVS中防火墙标签解决轮询错误
ipvsadm -C
ipvsadm -Ln
iptables -t mangle -A PREROUTING -d 192.168.0.200 -p tcp -m multiport --dports
80,443 -j MARK --set-mark 66
3.在VS上重新制定策略
ipvsadm -A -f 66 -s rr
ipvsadm -a -f 66 -r 192.168.0.10 -g
ipvsadm -a -f 66 -r 192.168.0.20 -g
测试