LVS服务

LVS(Linux Virtual Server)负载调度器

应用于解决LB Cluster(集群的负载均衡)

LVS充当的角色是虚拟服务器VS(Virtual Server)的角调度给真正色,负责调度,提供服务的服务器RS(Real Server)

工作原理:VS根据接收到的请求报文的目标IP和目标协议及其端口,然后将其调度给某个RS


LVS在网络防火墙链中的工作位置

Client -----> PREROUTING -----> LVS -----> POSTROUTING -----> RS

客户端若需要通过LVS访问RS

1.首先需要经过LVS主机的PREROUTING链验证

2.因为此时LVS中不存在Client要访问的服务,所以在进入INPUT链前隔断

3.LVS根据设定好的调度算法进行转发调度,通过POSTROUTING链出去,发送给RS


LVS一般是有两个IP地址

VIP:VS用来连接外部客户端访问的IP地址

DIP:VS用来连接RS的IP地址(一般为私网地址,为了安全,节省成本)

LVS集群的类型分为四种:

第一种:lvs-nat 

本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为通过算法挑出的RS的RIP和PORT实现转发

工作特点:

1.请求报文与响应报文都需要经过lvs转发

2.端口可映射,也就是可以进行修改

3.VS因为是基于内核级的,所以必须是Linux系统

 

第二种:lvs-dr(direct routing)(LVS默认使用的模式)

本质上是通过为请求报文重新封装MAC进行转发,最终的源MAC是DIP位置的MAC地址,目标MAC是通过lvs计算调度挑选出的RS的RIP位置的MAC地址,在此过程中源以及目标的IP/PORT都不变

工作特点:

1.RS需要有和VS一样的VIP,RIP与DIP需要在同一个物理网段内

2.为避免RS与VS上VIP的冲突,并且保证客户端发起的以VIP为目标的请求报文发送给VS,则需要如下操作:

      在RS上修改内核参数来限制ARP通告及应答级别

      echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore(不进行ARP通告)

      echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce(不向外通告本地IP)

除了在“all”上需要进行配置,还应该在配置VIP的网卡上设置上述ARP相关信息

3.因为是基于MAC地址,所以DIP与R IP地址必须在同一网段

4.RIP的网关不能指向DIP,实现请求报文经过VS,响应报文不经过VS,由RS直接发往Client

 

第三种:lvs-tun

本质是在CIP不变的情况下,在请求报文外另外封装一个新的请求报文首部,也就是将(源CIP,目标VIP)封装成(源DIP,目标RIP),然后将此请求报文转发给RS,由RS直接响应Client

工作特点:

1.RS需要有和VS一样的VIP,RS网关一般不指向DIP

2.请求报文经过VS,响应报文不经过VS

3.不支持端口映射

 

第四种:lvs-fullnat(此模式内核默认不支持)

本质上是同时修改请求报文的源IP地址和目标IP地址,也就是将 "CIP -----> VIP" 转换为 "DIP -----> RIP"

工作特点:

1.请求报文与响应报文都需要经过lvs转发

2.支持端口映射


Lvs的调度算法(ipvs scheduler)

静态方法:不考虑RS的状态,lvs主观调度

1.RR:RoundRobin                      表示轮流调度

2.WRR:Weighted RR                  表示权重下的RR,按照一定比列调度

3.SH:Source Hashing                表示将源IP与访问过的RS相互绑定,重复调度

4.DH:Destination Hashing        表示将发往同一目标地址的请求全发往首次调度给的RS

动态算法:根据RS的负载状况进行合理分配调度,会在内存记录已经调度的RS情况,通过负载Overhead=值,来进行分配,越小越优先

1.LC:least connection   通过记录的RS已调度的连接数,来进行按少分配

       Overhead=activeconns(已连接数)*256+inactiveconns(未连接数)

2.WLC:Weighted LC           带权重的LC,这是默认的调度算法

       Overhead=(activeconns*256+inactiveconns)/weight

3.SED:Shortest Expection Delay 初始连接时权重高者优先

       Overhead=(activeconns+1)*256/weight

4.NQ:Never Queue            第一次连接调度时均匀分配,后续按照SED算法

5.LBLC:Locality-Based LC   动态算法的DH,根据负载状况选择需要调度给的RS

6.LBLCR:LBLC with Replication  可以将负载重的RS复制到负载轻的RS上


Lvs的命令工具,由ipvsadm程序包提供

定义集群服务的命令格式如下:

ipvsadm -A -t VIP:PORT

其中的含义如下:

-A 表示增加一条集群规则,除此之外还有“-E 修改”、“-D 删除”

-t 表示基于TCP协议的PORT,除此之外还有“-u UDP协议”、“-f 防火墙的数字标记”

另外还可以增加选项

“-s SCHEDULER” 指定调度算法,默认算法为 WLC

“-p [TIME]” 在指定的时间内可实现持久连接,若不指定时间大小,则默认是360秒

 定义指定集群服务中RS的命令格式如下:

ipvsadm -a -t VIP:PORT -r RIP:PORT

其中的含义如下:

-a 表示增加一条集群中RS的规则,除此之外还有“- 修改”、“-d 删除”

-t 表示基于TCP协议的PORT,除此之外还有“-u UDP协议”、“-f 数字标记”

另外还可以另加选项

“-g 指定DR模型,默认就是”、“-i 指定tun模型”、“-m 指定nat模型”、“-w WEIGHT 指定RS权重”

需要注意的是在定义规则时,若RIP:PORT的PORT省略,则表示不做端口映射

 

还有一些其他命令如下:

ipvsadm  –C     表示清空所有规则

ipvsadm  –Ln    表示以数字方式查看已经定义好的集群服务规则

ipvsadm-save -n > /PATH 以数字方式将所有规则存放在指定文件路径中

ipvsadm-restore < /PATH 加载文件中的lvs规则



 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值