LVS(Linux virtual Server)
简介
Linux虚拟服务器。
原理
在Linux内核中实现了基于IP的数据请求负载均衡调度方案,其体系结构如下所示,终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器。
LVS的三种工作模式
基于NAT的LVS模式负载均衡
Nat(网络地址转换),使用两块网卡,一块网卡与内部网络通过交换机连接,另一块做为外网ip与外网连通。
数据访问方向:用户通过互联网,访问LVS的外网ip,发送请求到VIP,LVS收到请求,通过算法调度后面的web服务器,转发请求到web服务器,web服务器收到请求后,返回数据到LVS,LVS将源IP、源端口,修改为VIP和自身的端口,修改完成后将响应数据包,再发送给用户。
基于TUN的LVS负载均衡
LVS调度器与服务器建立真实连接,LVS调度器将数据封装,通过隧道发送给服务器,服务器收到请求的数据包后,将数据直接通过公网发送响应包给用户。
如果后台服务器数量大于10台,通过NAT返回响应包,LVS调度器将会成为整个集群的瓶颈,而TUN模式下的LVS,则减少了LVS的工作量。
基于DR的LVS负载均衡
NAT和TUN的结合,LVS依然是通过NAT的方式将数据请求包发送到真实的服务器,然后与服务器共享VIP地址,服务器将响应包的源地址设为VIP地址,通过route的方式将响应数据包直接返回给用户。
三种模式对比
LVS负载均衡调度算法
轮询调度
依次循环的方式请求调度到不同的服务器。实现简单,
加权轮询调度
根据服务器的性能,添加权值,权值越大,处理的请求越大。
最小连接调度
把新的连接请求分配到当前连接数最小(处理请求最少)的服务器。
加权最小连接调度
各个服务器相应的权值表示其处理性能。
基于局部的最少连接
针对请求报文的目标IP地址的 负载均衡调度,目前主要用于Cache集群系统,因为在Cache集群客户请求报文的目标IP地址是变化的。
带复制的基于局部性的最少连接
针对目标IP地址的负载均衡,目前主要用于Cache集群系统,它与LBLC算法不同之处是它要维护从一个目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。
目标地址散列调度
根据请求的目标IP地址,作为散列键,从静态分配的散列表找出对应的服务器,若该服务器是可用的且并未超载,将请求发送到该服务器,否则返回空。
源地址散列调度
根据请求的源IP地址,作为散列键,从静态分配的散列表找出对应的服务器,若该服务器是可用的且并未超载,将请求发送到该服务器,否则返回空。
最短的期望的延迟
基于WLC算法。举个例子吧,ABC三台服务器的权重分别为1、2、3 。那么如果使用WLC算法的话一个新请求进入时它可能会分给ABC中的任意一个。
ipvsadm
语法
ipvsadm -A|E -t|u|f <集群服务地址> [-s <调度算法>] [-p <超时时间>] [-M <掩码>] [-b <标志>]
ipvsadm -D -t|u|f <集群服务地址>
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e -t|u|f <集群服务地址> -r <真实服务器地址> [选项]
ipvsadm -d -t|u|f <集群服务地址> -r <真实服务器地址>
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f <集群服务地址>]
ipvsadm --set <超时时间>
ipvsadm --start-daemon <主或备> [--mcast-interface <组播接口>] [--syncid <SID>]
ipvsadm --stop-daemon <主或备>
ipvsadm -h
子命令
--add-service -A 添加一个集群服务,需要使用选项
--edit-service -E 编辑一个集群服务,需要使用选项
--delete-service -D 删除指定集群服务,需要使用选项
--clear -C 删除所有集群服务,包括真实服务器转发策略规则
--restore -R 从标准输入中恢复策略规则
--save -S 保存策略规则到标准输出
--add-server -a 添加一个真实服务器,需要使用选项
--edit-server -e 编辑一个真实服务器,需要使用选项
--delete-server -d 删除一个真实服务器,需要使用选项
--list -L|-l 查看集群服务列表,包括真实服务器转发策略规则
--zero -Z 计数器清零。清除连接数、包转发等数量统计信息
--set <超时时间> 设置TCP、TCPFIN(TCP关闭连接状态)、UDP连接超时时间,用于
会话保持。一般情况下TCP和UDP超时时间保持默认就好,TCPFIN
可以根据情况设定,指定它则用户请求连接关闭,该连接则会变
为非活跃(InActive)空闲等待状态,在空闲等待时间内,如果
来自同一源IP的请求,则还会转发给后端的同一台真实服务器上
--start-daemon 开启连接同步守护进程。在选项后面指定自己是Master(主)还
是backup(备),主负载调度器会同步所有策略及连接状态到备
负载调度器,当主故障,备可以接替其工作
--stop-daemon 停止连接同步守护进程
--help -h 显示帮助信息
标签:负载,请求,LVS,--,ipvsadm,调度,均衡,服务器
From: https://blog.51cto.com/u_14871454/8944322