做h5的网站的区别,昆明app开发公司,分销系统软件,最新域名查询网目录 LVS原理
LVS概念
lvs集群的类型
lvs-nat
解释
传输过程
lvs-dr
解释
传输过程
特点
lvs-tun LVS#xff08;Linux Virtual Server#xff09;常见的调度算法
防火墙标记#xff08;Firewall Marking#xff09;结合轮询调度
实战案例
lvs的nat模式配置 …目录 LVS原理
LVS概念
lvs集群的类型
lvs-nat
解释
传输过程
lvs-dr
解释
传输过程
特点
lvs-tun LVSLinux Virtual Server常见的调度算法
防火墙标记Firewall Marking结合轮询调度
实战案例
lvs的nat模式配置
准备工作
配置过程
测试结果
lvs的dr模式综合实践
虚拟机配置准备五个虚拟机
编辑编辑编辑编辑编辑配置过程
测试结果
lvs的防火墙标记解决轮询调度问题
错误示范
正确示范
编辑测试结果 LVS原理
LVSLinux Virtual ServerLinux 虚拟服务器的基本原理是通过将多个真实服务器组合成一个虚拟服务器集群实现对客户端请求的高效负载均衡和高可用性服务。 其主要工作流程如下
1. 客户端向虚拟服务器VIP发送请求。
2. 负载均衡器通常称为 Director接收到请求。
3. Director 根据预先配置的负载均衡算法如轮询、加权轮询、最少连接等选择一个合适的真实服务器Real Server。
4. Director 将客户端请求转发到选定的 Real Server。
5. Real Server 处理请求并将响应直接返回给客户端。
为了实现请求的转发LVS 支持多种工作模式如 NATNetwork Address Translation网络地址转换模式、TUNIP TunnelingIP 隧道模式和 DRDirect Routing直接路由模式。
在 NAT 模式中Director 不仅负责调度还对请求和响应数据包进行网络地址转换。
在 TUN 模式中Director 将请求数据包封装后发送给 Real ServerReal Server 处理后直接将响应返回给客户端。
在 DR 模式中Director 根据算法选择 Real Server 后将请求的 MAC 地址修改为选定 Real Server 的 MAC 地址然后通过局域网将请求直接发送给 Real ServerReal Server 处理后直接响应给客户端。
通过 LVS 的负载均衡机制可以提高服务器集群的整体性能、可扩展性和可用性确保客户端能够获得快速和可靠的服务。
LVS概念
名称意义VS(Virtual Server)/虚拟服务器负责调度将客户端的请求分配到合适的后端服务器RS(Real Server)/真实服务器负责真正提供服务处理来自 VS 调度分配的请求CIP(Client IP)/客户端主机IP地址客户端用户计算机请求集群服务器的IP地址该地址用作发送给集群的请求的源IP地址VIP(Virtual serve IP)/虚拟IP地址Director用于向客户端计算机提供服务的IP地址DIP(Director IP)/Director的IP地址Director用于连接内外网网络的IP地址RIP(Real server IP)/真实IP地址在集群下面节点上使用的IP地址 访问过程CIP--VIP DIP--RIP
lvs集群的类型
此处我们详细讲解lvs-nat和lvs-br
lvs-nat
解释
LVSLinux Virtual Server的网络地址转换NAT模式是一种在网络层第四层实现负载均衡的方法。在NAT模式中Director ServerDS充当所有服务器节点的网关既是客户端请求的入口也是Real Server响应客户端的出口。优点是可以进行端口转换缺点是存在性能瓶颈。它主要工作在OSI模型的第三层网络层和第四层传输层。NAT允许内部网络使用私有IP地址并通过公共IP地址进行外部通信。
传输过程
1.客户端发送访问请求请求数据包中含有请求来源cip访问目标地址VIP访问目标端口 9000port
2.VS服务器接收到访问请求做DNAT把请求数据包中的目的地由VIP换成RS的RIP和相应端口
3.RS1相应请求发送响应数据包包中的相应保温为数据来源RIP1响应目标CIP相应端口 9000port
4.VS服务器接收到响应数据包改变包中的数据来源RIP1--VIP,响应目标端口9000--80
5.VS服务器把修改过报文的响应数据包回传给客户端 6.lvs的NAT模式接收和返回客户端数据包时都要经过lvs的调度机所以lvs的调度机容易阻塞
客户请求到达vip后进入PREROUTING,在没有ipvs的时候因该进入本机INPUT,当IPVS存在后访问请求在通 过PREROUTING后被ipvs结果并作nat转发 因为ipvs的作用点是在PREROUTING和INPUT链之间所以如果在prerouting中设定规则会干扰ipvs的工 作。所以在做lvs时要把iptables的火墙策略全清理掉。
lvs-dr
解释
LVSLinux Virtual Server的 DRDirect Routing直接路由模式这种模式适用于非ARP设备的Real ServerReal Server网络是局域网同样支持大量Real Server高达100个Real Server有自己的路由器。优点是性能最佳缺点是不支持跨网段和端口转换。工作在数据链路层。在DR模式中RS接收到访问请求后不需要回传给VS调度器直接把回传数据发送给client所以RS和vs 上都要有vip
传输过程
1.客户端发送数据帧给vs调度主机帧中内容为客户端IP客户端的MACVIPVIP的MAC
2.VS调度主机接收到数据帧后把帧中的VIP的MAC该为RS1的MAC此时帧中的数据为客户端IP客户端 的MACVIPRS1的MAC
3.RS1得到2中的数据包做出响应回传数据包数据包中的内容为VIPRS1的MAC客户端IP客户端IP的 MAC
特点
1.Director和各RS都配置有VIP
2.确保前端路由器将目标IP为VIP的请求报文发往Director
3.在前端网关做静态绑定VIP和Director的MAC地址 lvs-tun
LVSLinux Virtual Server的 TUNIP TunnelingIP 隧道模式是另一种负载均衡模式。
在 TUN 模式中Director 接收到客户端请求后根据负载均衡算法选择一台合适的 Real Server。然后Director 将请求数据包重新封装在一个新的 IP 数据包中并将其发送给所选的 Real Server。
Real Server 接收到数据包后解封装得到原始的请求数据包并进行处理。处理完成后Real Server 直接将响应数据包返回给客户端而不经过 Director。
TUN 模式的优点是可以跨越不同的网络区域对服务器进行负载均衡Real Server 可以位于不同的物理网络。但它也有一些缺点比如需要所有服务器支持 IP 隧道功能会增加一定的系统开销。 LVSLinux Virtual Server常见的调度算法
静态调度算法RR,WRR,DH,SH动态调度算法LC,WLC,LBLC,LBLCR
静态调度算法
1. 轮询Round RobinRR将请求依次分配给各个真实服务器依次循环。
2. 加权轮询Weighted Round RobinWRR给每个真实服务器设置一个权重根据权重的比例将请求分配给服务器。权重越高分配到的请求越多。
3.目标地址散列Destination Hashing, DH根据请求的目标 IP 地址进行哈希运算将请求分配到固定的服务器。
4.源地址散列Source Hashing, SH根据请求的源 IP 地址进行哈希运算将请求分配到固定的服务器。
动态调度算法
1. 最少连接Least ConnectionsLC将新的请求分配给当前连接数最少的真实服务器。
2. 加权最少连接Weighted Least ConnectionsWLC为真实服务器设置权重综合考虑服务器的权重和当前连接数来分配请求。
3. 基于局部性的最少连接Locality-Based Least ConnectionsLBLC主要考虑请求的目标 IP 地址优先将请求分配给同一 IP 地址对应的真实服务器。
4. 带复制的基于局部性最少连接Locality-Based Least Connections with ReplicationLBLCR结合了 LBLC 和复制功能对于目标 IP 地址相同的请求如果对应的真实服务器没有活动连接则可以在有活动连接的真实服务器中选择一个并复制该连接。
防火墙标记Firewall Marking结合轮询调度
在 LVS 环境中使用防火墙标记Firewall Marking结合轮询调度可以实现更灵活和定制化的负载均衡策略。
通过防火墙标记可以为不同的连接或数据包打上特定的标记。然后在 LVS 的配置中可以根据这些标记来进行调度决策而不仅仅依赖于默认的轮询方式。
实战案例
lvs的nat模式配置 准备工作
lvs主机需要两个网络适配器其中一个为NAT模式另外一个为仅主机模式还需要两个server主机一个为server1还有一个为server2都为仅主机模式 配置过程
配置ip
lvs主机
[rootlvs ~]# cat /etc/NetworkManager/system-connections/eth1.connection
[connection]
ideth1
typeethernet
interface-nameeth1[ipv4]
address1192.168.0.100/24
methodmanual server1主机
[rootwebserver1 ~]# cat /etc/NetworkManager/system-connections/eth0.connection
[connection]
ideth0
typeethernet
interface-nameeth0[ipv4]
address1192.168.0.10/24,192.168.0.100
methodmanual server2主机配置
[rootwebserver2 ~]# cat /etc/NetworkManager/system-connections/eth0.connection
[connection]
ideth0
typeethernet
interface-nameeth0[ipv4]
address1192.168.0.20/24,192.168.0.100
methodmanual 在lvs主机中配置 lvs中打开内核路由功能ip_forward 1通常表示启用了 IP 转发功能使网络适配器分别为nat和仅主机之间连通
vim /etc/sysctl.conf #在最后一行添加
net.ipv4.ip_forwaed 1 #启用了 IP 转发功能sysctl -p #使配置生效 下载ipvsadm
yum install ipvsadm -y 配置规则
ipvsadm -A -t 172.25.254.100:80 -s rr
ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10 -m
ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10 -mipvsadm -Ln
watch -n 1 ipvsadm -Ln --rate #也可以使用监控命令来看 在server主机配置
yum install httpd -y #两个都要下载httpdecho webserver1-192.168.0.10 /var/www/html/index.html #server1中配置
ystemctl restart httpdecho webserver1-192.168.0.10 /var/www/html/index.html #server2中配置
systemctl restart httpd 测试结果 lvs的dr模式综合实践 nodeipvip角色模式client172.25.254.200客户端NATrouter 192.168.0.100 172.25.254.100 路由器NAT仅主机lvs192.168.0.50lo:192.168.0.200/32调度器仅主机webserver1192.168.0.10lo:192.168.0.200/32真实服务器仅主机webserver2192.168.0.20lo:192.168.0.200/32真实服务器仅主机
虚拟机配置准备五个虚拟机 配置过程
配置ip
配置client主机
[rootclient ~]# cat /etc/NetworkManager/system-connections/eth0.connection
[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 配置router主机
[rootrouter ~]# cat /etc/NetworkManager/system-connections/eth0.connection
[connection]
ideth0
typeethernet
interface-nameeth0[ipv4]
address1172.25.254.100/24,172.25.254.2
dns114.114.114.114;
methodmanual[rootrouter ~]# cat /etc/NetworkManager/system-connections/eth1.connection
[connection]
ideth1
typeethernet
interface-nameeth1[ipv4]
address1192.168.0.100/24
methodmanual[rootrouter ~]# nmcli connection reload
[rootrouter ~]# nmcli connection up eth0
[rootrouter ~]# nmcli connection up eth1 配置lvs主机vip使用环回来创建
[rootlvs ~]# cat /etc/NetworkManager/system-connections/eth0.connection
[connection]
ideth0
typeethernet
interface-nameeth0[ipv4]
address1192.168.0.50/24,192.168.0.100
methodmanual[rootlvs ~]# nmcli connection reload
[rootlvs ~]# nmcli connection up eth0[rootlvs ~]# ip addr add dev lo 192.168.0.200/32 配置server1主机vip使用环回来创建
[rootserver1 ~]# cat /etc/NetworkManager/system-connections/eth0.connection
[connection]
ideth0
typeethernet
interface-nameeth0[ipv4]
address1192.168.0.10/24,192.168.0.100
methodmanual[rootserver1 ~]# nmcli connection reload
[rootserver1 ~]# nmcli connection up eth0[rootserver1 ~]# ip addr add dev lo 192.168.0.200/32 配置server2主机vip使用环回来创建
[rootserver2 ~]# cat /etc/NetworkManager/system-connections/eth0.connection
[connection]
ideth0
typeethernet
interface-nameeth0[ipv4]
address1192.168.0.20/24,192.168.0.100
methodmanual[rootserver2 ~]# nmcli connection reload
[rootserver2 ~]# nmcli connection up eth0[rootserver2 ~]# ip addr add dev lo 192.168.0.200/32 修改Linux内核参数。
server1和server2上面都要做
rs主机中使vip不对外响应将RS上的VIP配置为lo接口的别名限制Linux仅对对应接口的ARP请求做响应
限制响应级别 :arp_ignore
0:默认值表示可使用本地任意接口上配置的任意地址进行响应 1:仅在请求的目标IP配置在本地主机的接收到请求报文的接口上时才给予响应
限制通告级别 :arp_announce
0:默认值把本机所有接口的所有信息向每个接口的网络进行通告 1:尽量避免将接口信息向非直接连接网络进行通告 2:必须避免将接口信息向非本网络进行通告
echo 1 /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 /proc/sys/net/ipv4/conf/lo/arp_ignore 配置ipvsadm 在lvs主机中进行配置 IP 虚拟服务器
yum install ipvsadm -yipvsadm -A -t 192.168.0.200:80 -s wrr
ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10:80 -g -w 1
ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20:80 -g -w 2 启用 IP 转发功能 在router主机进行配置
(设置持久连接,保持客户端与后端服务器的连接关系)
vim /etc/sysctl.conf #在最后一行添加
net.ipv4.ip_forward 1ipvsadm -p 配置web服务
yum install httpd -yecho 11111111 /var/www/html/index.html #server1中配置
ystemctl restart httpdecho 22222222 /var/www/html/index.html #server2中配置
systemctl restart httpd
测试结果
for i in {1..10}; do curl 192.168.0.200; done lvs的防火墙标记解决轮询调度问题
错误示范
ipvsadm -A -t 192.168.0.200:80 -s rr
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 -A -t 192.168.0.200:443 -s rr
ipvsadm -a -t 192.168.0.200:443 -r 192.168.0.10:80 -g
ipvsadm -a -t 192.168.0.200:443 -r 192.168.0.20:80 -g
错误结果
[rootlvs ~]# curl -k https://192.168.0.200;curl 192.168.0.200
1111111
1111111 正确示范
FWM:FireWall Mark
MARK target 可用于给特定的报文打标记,
--set-mark value
其中:value 可为0xffff格式表示十六进制数字借助于防火墙标记来分类报文而后基于标记定义集群服 务:可将多个不同的应用使用同一个集群服务进行调度
#在lvs主机打标记:
#并且lvs主机基于标记定义集群服务:
iptables -t mangle -A PREROUTING -d 192.168.0.200 -p tcp -m multiport --dport 80,443 -j MARK --set-mark 66ipvsadm -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 测试结果