0.常用的调度算法
轮询调度(Round Robin 简称'RR')算法就是按依次循环的方式将请求调度到不同的服务器上,该算法最大的特点就是实现简单。轮询算法假设所有的服务器处理请求的能力都一样的,调度器会将所有的请求平均分配给每个真实服务器。
加权轮询(Weight Round Robin 简称'WRR')算法主要是对轮询算法的一种优化与补充,LVS会考虑每台服务器的性能,并给每台服务器添加一个权值,如果服务器A的权值为1,服务器B的权值为2,则调度器调度到服务器B的请求会是服务器A的两倍。权值越高的服务器,处理的请求越多。
最小连接调度(Least Connections 简称'LC')算法是把新的连接请求分配到当前连接数最小的服务器。最小连接调度是一种动态的调度算法,它通过服务器当前活跃的连接数来估计服务器的情况。调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接数加1;当连接中断或者超时,其连接数减1。
(集群系统的真实服务器具有相近的系统性能,采用最小连接调度算法可以比较好地均衡负载。)
加权最少连接(Weight Least Connections 简称'WLC')算法是最小连接调度的超集,各个服务器相应的权值表示其处理性能。服务器的缺省权值为1,系统管理员可以动态地设置服务器的权值。加权最小连接调度在调度新连接时尽可能使服务器的已建立连接数和其权值成比例。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
目标地址散列调度(Destination Hashing 简称'DH')算法先根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且并未超载,将请求发送到该服务器,否则返回空。
源地址散列调度(Source Hashing 简称'SH')算法先根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且并未超载,将请求发送到该服务器,否则返回空。它采用的散列函数与目标地址散列调度算法的相同,它的算法流程与目标地址散列调度算法的基本相似。
LVS三种模式介绍
NAT模式(网络地址映射)
IP TUN模式(IP Tunneling IP隧道)
DR模式(Direct Routing 直接路由)
不同的转发模式决定了不同的的网络结构
NAT模式
NAT 模式(即:网络地址映射)其工作原理是:客户端访问LVS时,LVS通过重写请求报文的目标地址,且根据预设的调度算法,将请求分派给后端真实服务器,真实服务器接收到请求处理后,发出响应报文也需要通过LVS返回,返回时需要修改报文的源地址,然后返回给客户,完成整个负载调度过程
DNAT:目标地址转换,改变的是目标地址
SNAT:源地址转换,改变的是源地址
NAT 模式就是使用 SNAT 和 DNAT 技术完成报的转发,NAT 方式可支持任何的操作系统,以及私有网络,并且只需一个 Internet IP 地址,非常节省成本,但是整个系统的性能受到限制。因为执行 NAT 每次需要重写数据包,有一定的延迟,另外,大部分应用有 80%的数据是从服务器流向客户机,也就是用户的请求非常短,而服务器的回应非常大,对LVS形成很大压力,容易成为瓶颈
IP TUN模式
IP TUN(IP Tunneling 即 IP隧道)当 LVS 分配请求到不同的 real server,real server 处理请求后直接回应给用户,这样 LVS 仅处理客户机与服务器的一半连接。IP TUN 技术极大地提高了 LVS 的调度处理能力,同时也极大地提高了系统能容纳的最大节点数,可以超过 100 个节点。real server 可以在任何 LAN 或 WAN 上运行,这意味着允许地理上的分布,这在灾难恢复中有重要意义。但此模式要求所有服务器必须支持 IP 隧道协议,因此只能在 linux 下使用,在 windows 无法使用
DR模式
DR(即 Direct Routing 直接路由)与 IP TUN 类似,负载均衡器仅处理一半的连接,避免了新的性能瓶颈,同样增加了系统的可伸缩性,DR 与 IP TUN 相比,没有 IP 封装的开销,但由于采用物理层(修改 MAC地址)技术,所有服务器都必须在同一个局域网
DR 和 IP TUN 的区别:
DR 与 IP TUN 相比,没有 IP 封装的开销,但由于采用数据链路层(修改 MAC地址)技术,所有服务器都必须在一个物理网段
三种模式对比
NAT模式 | IP TUN模式 | DR模式 | |
---|---|---|---|
对服务器要求 | 任何操作系统均支持 | 必须支持IP隧道协议,目前只有Linux支持 | 支持虚拟网卡,且可以禁用ARP响应 |
网络要求 | 局域网 | 局域网或广域网 | 局域网 |
支持的节点数 | 10~20个,视Director处理能力而定 | 可以支持到100个节点 | 可以支持到100个节点 |
安全性 | 较高,可隐藏real server | 较差,real server 容易暴露 | 较差,real server 容易暴露 |
IP要求 | 仅需要一个合法IP地址作为VIP | 除VIP外,每个服务器需要拥有合法IP地址可以直接路由至客户端 | 除VIP外,每个服务器需要拥有合法IP地址可以直接路由至客户端 |
拓展性 | 差 | 很好 | 好 |
特点 | 地址转换 | 封装IP | 修改MAC地址 |
1.安装
yum -y install ipvsadm #虽然lvm是集成在内核中,但是需要透过ipvsadm去管理lvm
2.语法
[root@localhost ~]# ipvsadm -L #查看现有列表
-A --add-service
在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也就是增加一台新的虚拟服务器。
-E --edit-service
编辑内核虚拟服务器表中的一条虚拟服务器记录。
-D --delete-service
删除内核虚拟服务器表中的一条虚拟服务器记录。
-C --clear
清除内核虚拟服务器表中的所有记录。
-R --restore
恢复虚拟服务器规则
-S --save
保存虚拟服务器规则,输出为-R 选项可读的格式
-a --add-server
在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。也就是在一个虚拟服务器中增加一台新的真实服务器
-e --edit-server
编辑一条虚拟服务器记录中的某条真实服务器记录
-d --delete-server
删除一条虚拟服务器记录中的某条真实服务器记录
-L|-l --list
显示内核虚拟服务器表
[root@localhost ~]# ipvsadm -A -t 192.168.122.200:80 -s wrr #其中-A 新增集群 -t 使用tcp协议 ip为新的集群ip -s指定模式 wrr 权重轮询
[root@localhost network-scripts]# ipvsadm -a -t 192.168.122.200:80 -r 192.168.2.100 -w 1 #-a 添加true server -t 向192.168.122.200:80的集群中添加 -w权重 默认为1
再向集群中增加一台主机
[root@localhost network-scripts]# ipvsadm -a -t 192.168.122.200:80 -r 192.168.2.200 -w 1
默认的工作模式router模式,如果想使用nat模式则需要加-m参数 ,如果想使用隧道模式,则需要加- i参数
若要修改调度算法,需要使用-E 配合-s 指定新的调度算法
若要修改其中的模式,可以使用 -e 参数进行相应的修改,下图中将模式修改成了nat 权重修改成了2
若要删除真是服务器记录,则使用-d 参数
若要删除整个集群,则使用-D
[root@localhost network-scripts]# ipvsadm-save -n >/etc/sysconfig/ipvsadm-config #永久保存 -n以数字形式显示
[root@localhost network-scripts]# ipvsadm -C #清空所有规则
实验一
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
2020-04-28 记录 MySQL的学习过程(4)起停 配置文件 多实例 内置功能