18人参与 • 2026-08-03 • Linux
集群(cluster) 指将多台独立的计算设备(服务器、计算机等)通过网络连接,协同工作形成一个统一整体,对外提供比单台设备更强大的计算能力、存储能力或高可用性的技术架构。简单来说,就是“多台机器一起干活”,目标是解决单机性能不足、单点故障等问题。
lvs:linux virtual server,负载调度器,内核集成,章文嵩,阿里的四层slb(server loadbalance)是基 于lvs+keepalived实现。
核心作用是:把大量客户端请求按规则分发到后端多台真实服务器(real server),让多台机器像“一台超级服务器”一样对外提供服务。
vs:virtual server(调度器)
rs:real server (真实业务主机)
cip:client ip (客户端主机的ip)
vip: virtual serve ip vs外网的ip (对外开放的让客户访问的ip)
dip: director ip vs内网的ip (调度器负责访问内网的ip)
rip: real server ip (真实业务主机ip)
访问流程:cip vip == dip rip
lvs-nat: 修改请求报文的目标ip,多目标ip的dnat
lvs-dr: 操纵封装新的mac地址
lvs-tun: 在原请求ip报文之外新加一个ip首部
lvs-fullnat: 修改请求报文的源和目标ip

原理

原理

原理

原理
静态调度算法
动态调度算法
主要根据rs当前的负载状态及调度算法进行调度overhead=value较小的rs会被调度
以http和https为例,当我们在rs中同时开放80和443端口,那么默认控制是分开轮询的,这样我们就出 现了一个轮询错乱的问题:
当我第一次访问80被轮询到rs1后下次访问443仍然可能会被轮询到rs1上
架构图

未配置前
[root@client ~]#curl 192.168.182.100;curl -k https://192.168.182.100 rs1 192.168.238.10 rs1 192.168.238.10
[root@lvs ~]# ipvsadm -a -f 6666 -s rr [root@lvs ~]# ipvsadm -a -f 6666 -r 192.168.238.10 -m [root@lvs ~]# ipvsadm -a -f 6666 -r 192.168.238.20 -m [root@lvs ~]# systemctl restart ipvsadm.service [root@lvs ~]# ipvsadm-save > /etc/sysconfig/ipvsadm [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.182.100:80 rr persistent 1 -> 192.168.238.10:80 masq 1 0 0 -> 192.168.238.20:80 masq 1 0 0 tcp 192.168.182.100:443 rr -> 192.168.238.10:443 masq 1 0 0 -> 192.168.238.20:443 masq 1 0 0 tcp 192.168.182.100:3306 rr -> 192.168.238.10:3306 masq 1 0 0 -> 192.168.238.20:3306 masq 1 0 0 fwm 6666 rr -> 192.168.238.10:0 masq 1 0 0 -> 192.168.238.20:0 masq 1 0 0
结果
[root@client ~]#curl 192.168.182.100;curl -k https://192.168.182.100 rs2 - 192.168.238.20 rs1 192.168.238.10
在我们客户上网过程中有很多情况下需要和服务器进行交互,客户需要提交响应信息给服务器,如果单 纯的进行调度会导致客户填写的表单丢失,为了解决这个问题我们可以用sh算法,但是sh算法比较简单 粗暴,可能会导致调度失衡
架构图同上
在进行调度时,不管用什么算法,只要相同源过来的数据包我们就把他的访问记录在内存中,也就是把 这个源的主机调度到了那个rs上 如果在短期(默认360s)内同源再来访问我仍然按照内存中记录的调度信息,把这个源的访问还调度到 同一台rs上。 如果过了比较长的时间(默认最长时间360s)同源访问再次来访,那么就会被调度到其他的rs上
[root@lvs ~]# ipvsadm -e -f 6666 -s rr -p 1 [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.182.100:80 rr persistent 1 -> 192.168.238.10:80 masq 1 0 0 -> 192.168.238.20:80 masq 1 0 0 tcp 192.168.182.100:443 rr -> 192.168.238.10:443 masq 1 0 0 -> 192.168.238.20:443 masq 1 0 0 tcp 192.168.182.100:3306 rr -> 192.168.238.10:3306 masq 1 0 0 -> 192.168.238.20:3306 masq 1 0 0 fwm 6666 rr persistent 1 -> 192.168.238.10:0 masq 1 0 0 -> 192.168.238.20:0 masq 1 0 0
测试
[root@client ~]# curl 192.168.182.100 rs2 - 192.168.238.20
观察

到此这篇关于lvs(linux virual server)详解的文章就介绍到这了,更多相关linux virual server内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论