一:LVS群集简介:
lvs(linux virtual server)Linux的虚拟服务
Internet的快速增长使多媒体网络服务器面对的访问数量快速增加,服务器需要具备提供大量并发访问服务的能力,因此对于大负载的服务器来讲, CPU、I/O处理能力很快会成为瓶颈。由于单台服务器的性能总是有限的,简单的提高硬件性能并不能真正解决这个问题。为此,必须采用多服务器和负载均衡技术才能满足大量并发访问的需要。Linux 虚拟服务器(Linux Virtual Servers,LVS) 使用负载均衡技术将多台服务器组成一个虚拟服务器。它为适应快速增长的网络访问需求提供了一个负载能力易于扩展,而价格低廉的解决方案
二:LVS的结构和工作原理:
LVS由前端的负载均衡器(Load Balancer,LB)和后端的真实服务器(Real Server,RS)群组成。RS间可通过局域网或广域网连接。LVS的这种结构对用户是透明的,用户只能看见一台作为LB的虚拟服务器(Virtual Server),而看不到提供服务的RS群。
三:lvs的工作模式有三种:
1.nat(LVS-NAT)
a.集群接点必须和LB在同一个子网中(即DIP和),不能跨域网段
b.RIP 是私有地址
c.所有的RIP的网关必须指向DIP
d.调度器处理所有的请求
e.端口地址转换
f.因为是NAT
h.单点瓶颈
2.直接路由(LVS-DR)
a.集群接点必须和LB必须在一个物理网段,之间不能有路由器
b.RIP可以使用公网地址,建议使用公网地址
c.LB仅处理请求,不处理响应
d.real server的网关不能指向DIP
e.不能做端口转换
f.并非所有的系统都可以做接点
h.LVS-DR 可以带动比LVS-NAT更多的接点
3.隧道(LVS-TUN)
a.集群接点和LB接点不必在同一个物理网络
b.RIP使用公网地址
c.LB只处理进来的请求,不处理出去的请求
d.响应的请求一定不经过LB
e.不支持端口地址转换
f.只能使用支持IP隧道协议的操作系统做集群接点
四:lvs的LB的调度方法及各个调度方法对应的算法:
1.静态调度方法:(fixed scheduling)不考虑后端连接状态
a:RR(round-robin)轮循着,它将请求依次分配不同的RS,也就是在RS中均摊请求。这种算法简单,但是只适合于RS处理性能相差不大的情况;
b:WRR(weight round-robin)加权轮调,它将依据不同RS的权值分配任务。权值较高的RS将优先获得任务,并且分配到的连接数将比权值较低的RS更多。相同权值的RS得到相同数目的连接数;
c:destination hashing 根据服务的请求转发到特定的服务器,跟用户建立粘性,提高缓存命中率
d:source hashing 将来自同一个用户的请求,始终转发到特定的路由器或防火墙(平均内网负载)
2.动态调度方法:(dynamic scheduling)考虑后端连接状态
a:LC (least-connect)最少连接,检查active和inactive,连接数(overhead)最少的接受请求
b:WLC(weight least-connect)加权最小连接数(集群最好的算法)
c:shortest expected delay (SED)最短期望延迟 ,不考虑非活动状态,在计算overhead之前,把非活动状态的总数加上1
d:NQ(never query)只要有空闲的,不考虑算法的接受请求;
e:LBLC(locality-based-least-connect:DH)支持权重(后面的是缓存服务器的)基于地址的最小连接数调度(Locality-Based Least-Connection) 将来自同一目的地址的请求分配给同一台RS如果这台服务器尚未满负荷,否则分配给连接数最小的RS,并以它为下一次分配的首先考虑;
f:LBLCR (locality-based-least-connect with replication scheduling)是对LBLC的改进,对于某一目的地址,对应有一个RS子集。对此地址的请求,为它分配子集中连接数最小的RS;如果子集中所有的服务器均已满负荷,则从集群中选择一个连接数较小的服务器,将它加入到此子集并分配连接;若一定时间内,这个子集未被做任何修改,则将子集中负载最大的节点从子集删除;