做汽车网站怎么挣钱吗,万网官网登录,推广小程序拿佣金,wap网站技术目录
一、LVS技术原理
二、NAT模式原理及部署方法
1、工作原理
2、部署方法
1、网络配置
2、软件安装与启用
3、测试
三、DR模式原理及部署方法
1、工作原理
2、部署方法
1、网络配置
2、解决vip响应问题
3、测试
四、ipvsadm命令及参数
1、管理集群服务#x…目录
一、LVS技术原理
二、NAT模式原理及部署方法
1、工作原理
2、部署方法
1、网络配置
2、软件安装与启用
3、测试
三、DR模式原理及部署方法
1、工作原理
2、部署方法
1、网络配置
2、解决vip响应问题
3、测试
四、ipvsadm命令及参数
1、管理集群服务负载均衡器的命令
2、管理集群中 RealServer 的命令
五、LVS中的调度方法
1、静态调度算法
2、动态调度算法
六、LVS优化
1、防火墙标签
2、LVS持久链接 LVS 技术出现的背景 随着互联网的迅速发展网站和网络服务的访问量不断增加。早期单个服务器很难应对大量的并发请求容易导致性能下降、响应延迟甚至服务崩溃。 在这种情况下需要一种有效的方法来实现服务器的负载均衡以提高系统的整体性能和可用性。 传统的负载均衡方法存在诸多局限性例如硬件负载均衡设备成本高昂而且缺乏灵活性和可扩展性。 Linux 操作系统因其开源、稳定、高效等特点在服务器领域得到广泛应用。基于 Linux 开发一种高效、灵活且成本相对较低的负载均衡技术成为了一种迫切的需求。 于是LVS 技术应运而生它充分利用了 Linux 系统的内核功能和网络特性为解决服务器负载均衡问题提供了一种强大而经济有效的解决方案。
一、LVS技术原理
LVSLinux Virtual Server技术是一种基于 Linux 操作系统的开源负载均衡技术。
LVS 工作在网络的第四层即传输层它通过 IP 负载均衡技术和基于内容请求分发技术来实现对大量网络服务请求的高效分发和处理。
LVS 主要有三种工作模式 NAT 模式Network Address Translation通过修改请求数据包的目标 IP 地址和目标端口来实现请求的分发。这种模式配置简单但对 LVS 服务器的性能要求较高因为所有的请求和响应都要经过 LVS 服务器。 例如在一个小型企业网络中如果有多台 Web 服务器提供相同的服务就可以使用 LVS 的 NAT 模式来均衡访问流量。 DR 模式Direct Routing直接路由模式请求数据包在通过 LVS 服务器时LVS 服务器只修改数据包的目的 MAC 地址然后将数据包直接发送到真实服务器。响应数据包直接由真实服务器返回给客户端不再经过 LVS 服务器。 比如在大型电商网站的服务器架构中为了提高性能和可扩展性常常采用 DR 模式进行负载均衡。 TUN 模式IP TunnelingIP 隧道模式LVS 服务器和真实服务器之间通过 IP 隧道进行通信。LVS 服务器将请求数据包封装在新的 IP 数据包中然后发送到真实服务器真实服务器解封装后处理请求并直接将响应返回给客户端。 此种模式适用于服务器分散在不同地域的情况通过公共网络建立隧道来实现负载均衡。 LVS 技术具有高可用性、高扩展性和高性能等优点被广泛应用于大型网站、云计算平台等场景能够有效地提升系统的整体性能和可靠性。
本文主要介绍常用的NAT模式和DR模式。
LVS集群体系总框架 VSVirtual Server指的是虚拟服务器它是由 LVS 负载均衡器所构建的一个逻辑上的服务实体。客户端实际上是向这个虚拟服务器发送请求。 RSReal Server即真实服务器是实际处理客户端请求并提供服务的服务器节点。 VIPVirtual IP虚拟 IP 地址是客户端用来访问服务的公共 IP 地址。 DIPDirector IP负载均衡器Director的 IP 地址用于与后端真实服务器进行通信。 RIPReal Server IP真实服务器的 IP 地址。 CIPClient IP客户端的 IP 地址。
访问流程:CIP-VIP DIP-RIP
二、NAT模式原理及部署方法
1、工作原理
在 LVS NAT 模式中存在一个作为负载均衡器的 LVS 服务器和一组后端的真实服务器Real Server。 当客户端发送请求到 LVS 服务器时LVS 服务器接收到请求数据包。 它会修改数据包中的目标 IP 地址和目标端口将其转换为后端某一台真实服务器的 IP 地址和端口。 然后LVS 服务器将修改后的数据包转发给选定的真实服务器。 真实服务器处理请求后将响应数据包发送回 LVS 服务器。 LVS 服务器再对响应数据包进行源 IP 地址和源端口的转换将其转换为客户端的 IP 地址和端口。 最后LVS 服务器将响应数据包发送回客户端。 2、部署方法
基于RHEL9系统的环境搭建
RHEL9基础环境配置
vmset.sh脚本配置
#企业9
[rootlocalhost mlh]# vim /bin/vmset.sh
#配置内容
#!/bin/bash
rm -fr /etc/NetworkManager/system-connections/$1.nmconnection
cat /etc/NetworkManager/system-connections/$1.nmconnection EOF
[connection]
id$1
typeethernet
interface-name$1[ipv4]
address1$2/24,172.25.254.2
methodmanual
dns114.114.114.114;
EOFchmod 600 /etc/NetworkManager/system-connections/$1.nmconnection
nmcli connection reload
nmcli connection up $1hostnamectl hostname $3cat /etc/hosts EOF
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
$2 $3
EOF
实验准备一台LVS负载均衡器和两台真实服务器
1、网络配置
LVS一个两个网卡分别为NAT模式和仅主机模式
两台真实服务器仅添加一个仅主机模式网卡
网卡配置
LVS负载均衡器VS
vmset.sh eth0 172.25.254.100 lvs.mlh.org vmset.sh eth1 192.168.0.100 lvs.mlh.org nmcli connection reloadnmcli connection up eth0nmcli connection up eth1[rootlvs ~]# vim /etc/NetworkManager/system-connections/eth1.nmconnection
#配置内容
[connection]
ideth1
typeethernet
interface-nameeth1[ipv4]
address1192.168.0.100/24
methodmanualnmcli connection reload
nmcli connection up eth1
由于两个网卡不在同一网络打开内核路由功能
[rootlvs ~]# sysctl -a | grep ip_forward[rootlvs ~]# vim /etc/sysctl.conf[rootlvs ~]# sysctl -p #配置生效
net.ipv4.ip_forward 1 真实服务器RS
vmset.sh eth0 192.168.0.10 webserver1.mlh.org vmset.sh eth0 192.168.0.20 webserver2.mlh.org nmcli connection reload
nmcli connection up eth0
网关设置
[rootwebserver1 ~]# vim /etc/NetworkManager/system-connections/eth0.nmconnection
#配置内容
[connection]
ideth0
typeethernet
interface-nameeth0[ipv4]
address1192.168.0.10/24,192.168.0.100
methodmanual
nmcli connection reload
nmcli connection up eth0[rootwebserver2 ~]# vim /etc/NetworkManager/system-connections/eth0.nmconnection
#配置内容
[connection]
ideth0
typeethernet
interface-nameeth0[ipv4]
address1192.168.0.20/24,192.168.0.100
methodmanual
nmcli connection reload
nmcli connection up eth0
2、软件安装与启用
程序包ipvsadm
Unit File: ipvsadm.service
主程序/usr/sbin/ipvsadm
规则保存工具/usr/sbin/ipvsadm-save
规则重载工具/usr/sbin/ipvsadm-restore
配置文件/etc/sysconfig/ipvsadm-config
ipvs调度规则文件/etc/sysconfig/ipvsadm
[rootlvs ~]# dnf install ipvsadm -y[rootwebserver1 ~]# dnf install httpd
[rootwebserver1 ~]# systemctl enable --now httpd[rootwebserver2 ~]# dnf install httpd
[rootwebserver2 ~]# systemctl enable --now httpd
第一次安装未存储过/etc/sysconfig/ipvsadm文件使用systemctl restart ipvsadm.service会报错systemctl restart ipvsadm.service启动这个服务的作用就是加载ipvsadm文件内容如果没有/etc/sysconfig/ipvsadm文件或者其中没有有效的配置服务可能无法正确初始化或找不到所需的配置信息从而导致报错。
3、测试
[rootwebserver1 ~]# echo webserver-192.168.0.10 /var/www/html/index.html[rootwebserver2 ~]# echo webserver2-192.168.0.20 /var/www/html/index.html
[rootlvs ~]# ipvsadm -A -t 172.25.254.100:80 -s rr[rootlvs ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m
[rootlvs ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -m
测试结果
[rootlvs home]# for i in {1..10}docurl 172.25.254.100done
webserver2-192.168.0.20
webserver1-192.168.0.10
webserver2-192.168.0.20
webserver1-192.168.0.10
webserver2-192.168.0.20
webserver1-192.168.0.10
webserver2-192.168.0.20
webserver1-192.168.0.10
webserver2-192.168.0.20
webserver1-192.168.0.10
保存策略需要做本地解析
[rootlvs home]# ipvsadm-save /etc/sysconfig/ipvsadm
三、DR模式原理及部署方法
1、工作原理
在 LVS DR 模式中同样存在负载均衡器LVS 服务器和后端的真实服务器Real Server。 当客户端发送请求到负载均衡器时负载均衡器根据调度算法选择一台合适的真实服务器。 与 NAT 模式不同的是负载均衡器不会修改请求数据包的目标 IP 地址而是仅仅修改目标 MAC 地址为所选真实服务器的 MAC 地址。 然后数据包直接通过交换机被转发到真实服务器。 真实服务器接收到请求后直接处理请求并将响应数据包直接返回给客户端而不再经过负载均衡器。 2、部署方法
基于RHEL9系统的环境搭建
在NAT模式环境基础上增删配置新增客户和路由两台主机
1、网络配置
LVS配置
删除之前网卡设置新网卡为仅主机模式
vmset.sh eth0 192.168.0.50 lvs.mlh.org[rootlvs ~]# vim /etc/NetworkManager/system-connections/eth0.nmconnection
#配置内容
[connection]
ideth0
typeethernet
interface-nameeth0[ipv4]
address1192.168.0.50/24,192.168.0.100
methodmanual
[rootlvs ~]# ip a a 192.168.0.200/32 dev lo
[rootlvs ~]# nmcli connection reload
[rootlvs ~]# nmcli connection up eth0
路由主机配置
vmset.sh eth1 192.168.0.100 router.mlh.orgvmset.sh eth0 172.25.254.100 router.mlh.org[rootrouter ~]# vim /etc/NetworkManager/system-connections/eth1.nmconnection
#配置内容
[connection]
ideth1
typeethernet
interface-nameeth1[ipv4]
address1192.168.0.100/24
methodmanual[rootrouter ~]# nmcli connection reload
[rootrouter ~]# nmcli connection up eth1
[rootrouter ~]# nmcli connection up eth0
由于两个网卡不在同一网络打开内核路由功能
[rootrouter ~]# vim /etc/sysctl.conf
[rootrouter ~]# sysctl -p
net.ipv4.ip_forward 1
client客户端配置
vmset.sh eth0 172.25.254.200 client.mlh.org
[rootclient ~]# vim /etc/NetworkManager/system-connections/eth0.nmconnection
#配置内容
[connection]
ideth0
typeethernet
interface-nameeth0[ipv4]
address1172.25.254.200/24,172.25.254.100
methodmanual[rootclient ~]# nmcli connection reload
[rootclient ~]# nmcli connection up eth0
RS设备vip配置
[rootwebserver1 ~]# ip a a 192.168.0.200/32 dev lo[rootwebserver2 ~]# ip a a 192.168.0.200/32 dev lo
网络测试 2、解决vip响应问题
在 LVS 的 DR 模式中VIP 的响应存在一些需要特别注意的问题。首先在 DR 模式下真实服务器RS需要直接响应客户端的请求。为了实现这一点RS 上需要配置 VIP 地址。但由于网络规则的限制同一个网络段内不能存在相同的 IP 地址这就可能导致网络冲突。 为了避免冲突RS 上配置的 VIP 地址不能对外广播通常是通过修改内核参数或者使用一些特殊的网络配置技巧来实现。 另外当 RS 响应客户端请求时源 IP 地址应该是 VIP 地址。然而如果 RS 没有正确配置可能会使用其真实的 IP 地址作为源 IP 进行响应这会导致客户端无法正确接收响应因为客户端发送请求的目标是 VIP 。
DR模型中各主机上均需要配置VIP解决地址冲突的方式有三种
(1)在前端网关做静态绑定
(2)在各RS使用arptables
(3)在各RS修改内核参数来限制arp响应和通告的级别
限制响应级别:arp_ignore
0:默认值表示可使用本地任意接口上配置的任意地址进行响应
1:仅在请求的目标IP配置在本地主机的接收到请求报文的接口上时才给予响应限制通告级别:arp_announce
0:默认值把本机所有接口的所有信息向每个接口的网络进行通告
1:尽量避免将接口信息向非直接连接网络进行通告
2:必须避免将接口信息向非本网络进行通告
在Real Server上做配置使rs主机vip不对外响应
[rootwebserver1 ~]# echo 1 /proc/sys/net/ipv4/conf/all/arp_ignore
[rootwebserver1 ~]# echo 2 /proc/sys/net/ipv4/conf/all/arp_ignore
[rootwebserver1 ~]# echo 2 /proc/sys/net/ipv4/conf/lo/arp_ignore
[rootwebserver1 ~]# echo 1 /proc/sys/net/ipv4/conf/lo/arp_ignore[rootwebserver2 ~]# echo 1 /proc/sys/net/ipv4/conf/all/arp_ignore
[rootwebserver2 ~]# echo 2 /proc/sys/net/ipv4/conf/all/arp_ignore
[rootwebserver2 ~]# echo 2 /proc/sys/net/ipv4/conf/lo/arp_ignore
[rootwebserver2 ~]# echo 1 /proc/sys/net/ipv4/conf/lo/arp_ignore
#重启后不生效
3、测试
在lvs主机上做策略如下
[rootlvs ~]# ipvsadm -A -t 192.168.0.200:80 -s wrr[rootlvs ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10:80 -g -w 1[rootlvs ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20:80 -g -w 1
实验结果
[rootclient ~]# for i in {1..20}; do curl 192.168.0.200; done
webserver2-192.168.0.20
webserver1-192.168.0.10
webserver2-192.168.0.20
webserver1-192.168.0.10
webserver2-192.168.0.20
webserver1-192.168.0.10
webserver2-192.168.0.20
webserver1-192.168.0.10
webserver2-192.168.0.20
webserver1-192.168.0.10
webserver2-192.168.0.20
webserver1-192.168.0.10
webserver2-192.168.0.20
webserver1-192.168.0.10
webserver2-192.168.0.20
webserver1-192.168.0.10
webserver2-192.168.0.20
webserver1-192.168.0.10
webserver2-192.168.0.20
webserver1-192.168.0.10
四、ipvsadm命令及参数
1、管理集群服务负载均衡器的命令
ipvsadm -A -t VIP:Port -s 调度算法 添加一个新的集群服务其中 VIP 是虚拟 IP 地址Port 是端口调度算法 可以是 rr轮询、wrr加权轮询、lc最少连接等。 例如ipvsadm -A -t 192.168.1.100:80 -s wrr
ipvsadm -E -t VIP:Port -s 调度算法 修改已存在的集群服务的调度算法。 例如ipvsadm -E -t 192.168.1.100:80 -s lc
ipvsadm -D -t VIP:Port 删除一个集群服务。 例如ipvsadm -D -t 192.168.1.100:80
2、管理集群中 RealServer 的命令
ipvsadm -a -t VIP:Port -r RIP:Port -m 添加一个真实服务器到集群服务中-m 表示使用 NAT 模式。 例如ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.11:80 -m
ipvsadm -e -t VIP:Port -r RIP:Port [-g| -i| -m] 修改真实服务器的属性如模式-g 表示 DR 模式-i 表示 TUN 模式。 例如ipvsadm -e -t 192.168.1.100:80 -r 192.168.1.11:80 -g
ipvsadm -d -t VIP:Port -r RIP:Port 从集群服务中删除一个真实服务器。 例如ipvsadm -d -t 192.168.1.100:80 -r 192.168.1.11:80
五、LVS中的调度方法
1、静态调度算法
1、轮询Round RobinRR
原理按照服务器列表的顺序依次将请求分配给每台服务器循环进行。
优点实现简单容易理解和配置确保每台服务器都有机会处理请求公平性较好。
缺点不考虑服务器的实际负载和性能差异可能导致性能较好的服务器无法充分发挥优势而性能较差的服务器成为瓶颈
适用场景服务器性能相当且请求处理时间相对均匀对负载均衡的精度要求不高的场景。
示例假设有三台服务器 S1、S2、S3请求依次按照 S1、S2、S3 的顺序分配。
2、加权轮询Weighted Round RobinWRR
原理为每台服务器设置一个权重值根据权重比例分配请求。
优点能够根据服务器的性能差异分配不同比例的请求无法动态适应服务器负载变化。
缺点权重设置可能不够精确导致负载不均衡无法动态适应服务器负载变化。
适用场景服务器性能有差异但差异相对稳定能够大致评估服务器性能并设置合理权重。
示例S1 权重为 2S2 权重为 3S3 权重为 5对于 10 个请求大约 2 个分配给 S13 个分配给 S25 个分配给 S3。
3、源地址哈希Source HashingSH
原理根据请求的源 IP 地址进行哈希计算将具有相同源 IP 地址的请求始终分配到同一台服务器。
优点保证来自同一源的请求处理一致性有利于会话保持。
缺点可能导致服务器负载不均衡对服务器故障的容错性较差。
适用场景需要保持源 IP 相关会话或状态的应用。
示例用户 A 的源 IP 哈希后始终对应服务器 S1其后续请求都分配到 S1。
4、目标地址哈希Destination HashingDH
原理基于请求的目标 IP 地址进行哈希运算将请求分配到特定服务器。
优点对于目标地址固定的请求提高缓存命中率。
缺点不够灵活目标地址分布变化时可能负载不均。
适用场景目标地址分布较为固定的场景。
示例特定目标 IP 范围的请求总是分配到特定服务器。
2、动态调度算法
1、最少连接Least ConnectionsLC
原理实时统计每台服务器当前的连接数将新请求分配给连接数最少的服务器。
优点能动态适应服务器负载变化将请求分配到相对空闲的服务器较好地平衡服务器负载。
缺点对于短连接请求连接数统计可能不准确计算和更新连接数有一定开销
适用场景服务器处理请求的时长差异较大长连接和短连接混合的场景
示例假设 S1 有 5 个连接S2 有 8 个连接S3 有 3 个连接新请求会分配给 S3。
2、加权最少连接Weighted Least ConnectionsWLC
原理为每台服务器设置权重计算加权后的连接数连接数×权重将请求分配给加权连接数最少的服务器。
优点综合考虑服务器性能和当前负载更精准地平衡负载。
缺点计算加权连接数较复杂增加系统开销权重设置需准确评估服务器性能。
适用场景服务器性能和重要性不同对负载均衡精度要求较高。
示例S1 权重为 2连接数为 5S2 权重为 3连接数为 8S3 权重为 5连接数为 3。S1 的加权连接数为 10S2 为 24S3 为 15新请求分配给 S1。
3、基于局部性的最少连接Locality-Based Least ConnectionsLBLC
原理根据请求的目标 IP 地址所属网段将请求分配给同一网段中连接数最少的服务器。
优点提高同一网段请求的处理效率和缓存命中率。
缺点依赖准确的网段划分和识别对跨网段请求的处理不够灵活。
适用场景同一网段内请求较为集中的场景。
示例若多个请求来自同一网段且该网段内 S1 的连接数最少则优先分配给 S1。
4、带复制的基于局部性最少连接Locality-Based Least Connections with ReplicationLBLCR
原理在 LBLC 基础上在多台服务器上复制相同内容提高命中率。
优点进一步提高命中率和处理速度。
缺点增加数据复制的开销管理复杂度较高。
适用场景对命中率和响应速度要求极高的场景。
示例热门数据在多台服务器上复制同一网段请求到来时优先分配到有复制数据的服务器。
5、最短期望延迟Shortest Expected DelaySED
原理在 WLC 基础上计算服务器的预期延迟连接数/权重选择预期延迟最小的服务器。
优点更精确地平衡服务器负载。
缺点计算预期延迟增加系统开销。
适用场景对服务器响应时间要求极高的场景。
示例S1 权重为 2连接数为 5S2 权重为 3连接数为 6S1 的预期延迟为 2.5S2 为 2新请求分配给 S2。
6、永不排队Never QueueNQ
原理若有空闲服务器直接将请求分配给空闲服务器不排队。
优点快速响应请求减少等待时间。
缺点可能导致服务器负载不均衡。
适用场景对实时性要求极高不能容忍请求排队的场景。
示例新请求到来时若 S3 空闲直接分配给 S3。
六、LVS优化
1、防火墙标签
轮询错误比如服务器的硬件配置如 CPU、内存、网络带宽以及正在运行的服务不同导致处理能力各异但轮询机制未区分。或者某些时间段或特定事件可能导致请求量突然增加轮询无法快速适应这种负载的急剧变化。
原理防火墙标签本质上是为网络数据包添加一个特定的标识。在 LVS 环境中当数据包进入系统时防火墙根据事先设定的规则为其打上标签。LVS 负载均衡器在进行请求分发时不再仅仅依赖传统的轮询机制而是可以根据这些标签来做出更智能的决策。
传统轮询可能导致性能较强的服务器未得到充分利用而性能较弱的服务器负载过重。通过标签可以将资源需求较大或关键的请求分配给更强大的服务器。
若某台服务器出现故障轮询可能仍将请求发送到该服务器导致服务中断。标签可标识故障服务器使请求避开。
配置
配置防火墙规则并设置标签
使用 iptables 命令为特定的流量设置标签。
假设要为来自特定源 IP 范围的流量设置标签 10
iptables -t mangle -A PREROUTING -s 192.168.1.0/24 -j MARK --set-mark 10
2、LVS持久链接
LVS 持久连接是为了保持同一客户端与后端服务器的持续性连接。当客户端首次与 LVS 建立连接时LVS 根据调度算法将其分配到某一后端服务器。在持久连接的有效期内后续来自该客户端的请求都将被定向到同一台后端服务器以保持会话的一致性。
在 LVS 的配置中可以通过设置持久连接的超时时间来启用持久连接功能。例如使用 ipvsadm 命令设置持久连接超时时间为 3600 秒1 小时
ipvsadm -A -t VIP:Port -s 调度算法 -p 3600
其中VIP 是虚拟 IP 地址Port 是端口调度算法 是选择的调度算法。
总之防火墙标签和 LVS 持久连接都是为了优化 LVS 负载均衡的效果以适应不同的网络环境和业务需求。