基于红帽九系统的LVS超详解析!!

一、LVS集群类型

vs-nat:       修改请求报文的目标IP,多目标IPDNAT
lvs-dr        操纵封装新的MAC地址
lvs-tun:      在原请求IP报文之外新加一个IP首部
lvs-fullnat 修改请求报文的源和目标IP

二、LVS-NAT模式

1.本质是多目标IPDNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RSRIP
PORT实现转发
2.RIPDIP应在同一个IP网络,且应使用私网地址;RS的网关要指向DIP
3.请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈
4.支持端口映射,可修改请求报文的目标PORT
5.VS必须是Linux系统,RS可以是任意OS系统
nat模式数据逻辑
1.客户端发送访问请求,请求数据包中含有请求来源(cip),访问目标地址(VIP)访问目标端口
9000port
2.VS服务器接收到访问请求做DNAT把请求数据包中的目的地由VIP换成RSRIP和相应端口
3.RS1相应请求,发送响应数据包,包中的相应保温为数据来源(RIP1)响应目标(CIP)相应端口
9000port
4.VS服务器接收到响应数据包,改变包中的数据来源(RIP1-->VIP,响应目标端口(9000-->80
5.VS服务器把修改过报文的响应数据包回传给客户端
6.lvsNAT模式接收和返回客户端数据包时都要经过lvs的调度机,所以lvs的调度机容易阻塞
实验环境的部署:
下图是LVS(调度器)的网卡和网络配置环境
编写配置文件将net.ipv4.ip_forward = 1填入文件中,打开lvs中的内核路由功能
webserver1的网卡和网络配置
webserver2的网卡和网络环境配置
最终效果检测,lvs上能够访问到两台主机说明环境ok
用ipvsadm进行部署以及最后的测试结果

三、DR模式

工作流程

直接路由,LVS默认模式,应用最广泛,通过为请求报文重新封装一个MAC首部进行 转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源 IP/PORT,以及目标IP/PORT均保持不变

LVS-DR模式的工作特点:
1、DS作为集群访问入口,但不作为网关
2、DS和RS需处于同一网络,RIP的网关不能指向DIP,以确保响应报文无需经过DS
3、为了响应整个集群的访问,DS和RS需配置相同的VIP
4、请求报文要经由Director,但响应报文不经由Director,而由RS直接发往Client
5、主要基于数据链路层,不支持端口映射

四、LVS-TUN(隧道模式)

1.客户端发送请求数据包,包内有源IP+vip+dport
2.到达vs调度器后对客户端发送过来的数据包重新封装添加IP报文头,新添加的IP报文头中包含
TUNSRCIP(DIP)+TUNDESTIP(RSIP1)并发送到RS1
3.RS收到VS调度器发送过来的数据包做出响应,生成的响应报文中包含SRCIP(VIP)+DSTIPCIP) +port,响应数据包通过网络直接回传给client
 TUN模式特点:
1.DIP, VIP, RIP都应该是公网地址
2.RS的网关一般不能指向DIP
3.请求报文要经由Director,但响应不能经由Director
4.不支持端口映射
5.RSOS须支持隧道功能

五、lvs的调度算法

静态调度算法
1RRroundrobin 轮询 RS分别被调度,当RS配置有差别时不推荐
2WRRWeighted RR,加权轮询根据RS的配置进行加权调度,性能差的RS被调度的次数少
3SHSource Hashing,实现session sticky,源IP地址hash;将来自于同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定
4DHDestination Hashing;目标地址哈希,第一次轮询调度至RS,后续将发往同一个目标地址的请 求始终转发至第一次挑中的RS,典型使用场景是正向代理缓存场景中的负载均衡,如:宽带运营商
动态调度算法
主要根据RS当前的负载状态及调度算法进行调度Overhead=value较小的RS会被调度
1LCleast connections(最少链接发)
适用于长连接应用Overhead(负载值)=activeconns(活动链接数) x 256+inactiveconns(非活
动链接数)
2WLCWeighted LC(权重最少链接)
默认调度方法Overhead=(activeconns x 256+inactiveconns)/weight
3SEDShortest Expection Delay,
初始连接高权重优先Overhead=(activeconns+1+inactiveconns) x 256/weight
但是,当node1的权重为1node2的权重为10,经过运算前几次的调度都会被node2承接
4NQNever Queue,第一轮均匀分配,后续SED
5LBLCLocality-Based LC,动态的DH算法,使用场景:根据负载状态实现正向代理
6LBLCRLBLC with Replication,带复制功能的LBLC,解决LBLC负载不均衡问题,从负载重的复制到负载轻的RS
4.15版本内核以后新增调度算法
1.FO(Weighted Fai Over)调度算法:常用作灰度发布
在此FO算法中,遍历虚拟服务所关联的真实服务器链表,找到还未过载(未设置IP_VS_DEST_FOVERLOAD标志)的且权重最高的真实服务器,进行调度 当服务器承接大量链接,我们可以对此服务器进行过载标记(IP_VS_DEST_F OVERLOAD),那么vs调度器就不会把链接调度到有过载标记的主机中。
2.OVF(Overflow-connection)调度算法基于真实服务器的活动连接数量和权重值实现。将新连接调度到权重值最高的真实服务器,直到其活动连接数量超过权重值,之后调度到下一个权重值最高的真实服务器,在此OVF算法中,遍历虚拟服务相关联的真实服务器链表,找到权重值最高的可用真实服务器。一个可用的真实服务器需要同时满足以下条件:
未过载(未设置IP_VS_DEST_F OVERLOAD标志)
真实服务器当前的活动连接数量小于其权重值
其权重值不为零

六、防火墙标签解决轮询错误

轮询规则中可能会遇到的错误
httphttps为例,当我们在RS中同时开放80443端口,那么默认控制是分开轮询的,这样我们就出 现了一个轮询错乱的问题
当我第一次访问80被轮询到RS1后下次访问443仍然可能会被轮询到RS1
在RS1和RS2中安装mod_ssl并重启apache
]# yum install mod_ssl -y
]# systemctl restart httpd
在lvs中设置调度,因为我们要调度80和443两个端口所以我们需要设定两组策略
]# ipvsadm -C
[root@lvs ~]# ipvsadm -A -t 192.168.0.100:80 -s rr
[root@lvs ~]# ipvsadm -A -t 192.168.0.100:443 -s rr
[root@lvs ~]# ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.101:80 -g
[root@lvs ~]# ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.102:80 -g
[root@lvs ~]# ipvsadm -a -t 192.168.0.100:443 -r 192.168.0.102:80 -g
[root@lvs ~]# ipvsadm -a -t 192.168.0.100:443 -r 192.168.0.101:80 -g
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.100:80 rr
-> 192.168.0.101:80 Route 1 0 0
-> 192.168.0.102:80 Route 1 0 0
TCP 192.168.0.100:443 rr
-> 192.168.0.101:443 Route 1 0 0
-> 192.168.0.102:443 Route 1 0 0
测试问题
[root@node10 ~]# curl http://192.168.0.100;curl -k https://192.168.0.100
RS1 server - 192.168.0.101
RS1 server - 192.168.0.101
当访问vip时两次调度都到了
防火墙标记解决轮询调度问题
​
在vs调度器中设定端口标签,人为80和443是一个整体
]# iptables -t mangle -A PREROUTING -d 192.168.0.100 -p tcp -m multiport --dports
80,443 -j MARK --set-mark 6666
设定调度规则
[root@lvs ~]# ipvsadm -A -f 6666 -s rr
[root@lvs ~]# ipvsadm -a -f 6666 -r 192.168.0.101 -g
[root@lvs ~]# ipvsadm -a -f 6666 -r 192.168.0.102 -g

​

测试结果

[root@node10 ~]# curl -k https://192.168.0.100
RS2 server - 192.168.0.102
[root@node10 ~]# curl -k https://192.168.0.100;curl 192.168.0.100
RS1 server - 192.168.0.101
RS2 server - 192.168.0.102、

LVS(Linux Virtual Server)是一种基于 Linux 系统的负载均衡集群技术,它主要用于将网络流量分发到多个服务器上,以提高系统的可靠性、可扩展性和性能。 LVS 集群一般包括四个组件:调度器(LVS 调度器)、前端服务器(负载均衡器)、后端服务器(真实服务器)和存储服务器(用于共享数据)。首先,调度器接收来自客户端的请求,然后根据配置的调度算法(如轮询、加权轮询、最小连接数等)将请求分发到多个前端服务器。前端服务器接收到请求后,通过相应的负载均衡算法将请求转发到后端的真实服务器上进行处理。在整个过程中,存储服务器用于存放共享的数据,以确保所有的真实服务器都能获取到相同的数据,并提供一致的服务。 LVS 集群的优点是能够提高网站的稳定性和可靠性,当某一台服务器出现故障时,调度器会自动将请求分发到其他可用的服务器上,从而保证服务的连续性。同时,LVS 集群还能够通过增加前端服务器和后端服务器的数量来提高系统的性能和吞吐量,以满足不断增长的用户需求。 在实际应用中,LVS 集群需要合理配置,包括选择合适的调度算法、调整每台服务器的权重、选择适当的硬件设备等。此外,还需要及时监控集群的运行状态,及时发现和解决故障,以确保整个系统的正常运行。 总的来说,LVS 负载均衡集群是一种强大而高效的集群技术,能够帮助企业提高系统的可靠性和性能,是现代互联网应用中不可或缺的重要组成部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值