常德 网站建设,什么是电商,做汽车售后的网站,中山网站关键字优化一、LVS是什么 LVS#xff08;Linux Virtual Server#xff09;#xff0c;是一个极好的负载均衡解决方案#xff0c;它将一个真实服务器集群虚拟成一台服务器来对外提供服务#xff0c;同时在真实服务器集群中实现了负载均衡。该技术由章文嵩博客发起#xff0c;从linux…一、LVS是什么 LVSLinux Virtual Server是一个极好的负载均衡解决方案它将一个真实服务器集群虚拟成一台服务器来对外提供服务同时在真实服务器集群中实现了负载均衡。该技术由章文嵩博客发起从linux2.4开始已经被收录到linux核心中。
二、LVS有什么用 随着互联网在人们生活中的普及企业级应用迎来了海量数据的冲击如微信、美团外卖、微信支付等应用每天的使用人数都在千万以上仅靠单台机器提供服务已经行不通了。 我们可以使用多台服务器分摊这些压力当一定数量的服务器作为一个整体对外提供服务并且分摊压力时我们可以称这些服务器为“负载均衡集群”。LVS就是一个优秀的负载均衡集群方案它理论上能够无限水平扩展使得服务能够应对海量数据的冲击。 三、LVS的原理是什么 首先描述一下LVS中的一些术语
VSVirtual Server 虚拟服务器通常是分发器 RSReal Server 实际提供服务器的真实服务器 CIPClient IP 客户的客户端IP VIPVirtual Server IP 虚拟服务器的IP RIPReal Server IP 真实服务器的IP DIPDirector IP 分发器的IP CIP – VIP DIP – RIP 客户端访问VIPDIP将请求转发到RIP LVS的原理如下图所示 分发服务器以VIP对外提供服务器当接收到客户端服务请求时便根据预定的分发策略例如轮询将请求分发到Real Server中由Real Server做实际的业务处理。当Real Server处理完成后根据不同的模式会使用不同的方式返回请求结果。
四、 LVS的3种工作模式 根据服务返回方式和集群分布的不同LVS有3中不同的工作模式他们分别是NAT地址转换模式、DR直接路由模式和TUN隧道模式。
NAT地址转换模式 NAT地址转换模式是最为简单的一种模式它的原理如下图所示为了简洁用户只画了一个 NAT其实就是通过网络地址转换来实现负载均衡的下面是它的请求流程 分发服务器Director Server后面简称DS接受到请求后通过分发策略得出要将此请求分发到Real Server1。于是将请求报文的目的地址改为RIP1发送出去。 Real Server1收到一个目标地址为自己的数据包于是接受并进行处理。 处理完成后Real Server1将RIP1——CIP的数据包发送出去。 DS接收到RIP1——CIP的数据包后将源地址改为VIP然后发送出去VIP——CIP。 这个过程中DS仅仅起到一个地址转换和分发的作用。在NAT模式中请求和响应报文都要通过DS当真实服务器的数量越来越多时分发器DS将会成为整个集群系统的性能瓶颈。下面的DR模式解决这个问题。 DR直接路由模式 互联网应用中存在一个规律请求报文较短而响应报文往往包含大量的数据。如果能将请求和响应分开处理即在负载调度器(Director)中只负责调度请求而响应直接由RealServer返回给客户将极大地提高整个集群系统的吞吐量。这就是DR的实现原理原理图如下所示 在DR模型中只有在请求的时候会经过DR响应的数据包由Real Server直接返回给用户该模式是3中模式中最常用的。它的请求过程如下所示 DR接受到请求后通过分发策略得出要将此请求分发到Real Server2。DS就将数据帧中的目标MAC地址修改为Real Server2的MAC地址,然后再将数据帧发送出去。为什么要用MAC地址因为此时Real Server也有配置有VIP 当Real Server2 收到一个源地址为CIP目标地址为VIP的数据包时,Real Server2发现目标地址为VIP,而VIP是自己,于是接受数据包并给予处理。 Real Server2处理完成后会将一个源地址为VIP而目标地址为CIP的数据包发送出去此时的响应请求就不会再经过DS而是直接响应给用户了。 在这个过程中存在一个问题由于RealServer也配置了VIP那么当CIP——VIP的数据包到达服务局域网进行广播时所有的服务器都会进行应答此时先应答的服务器就会收到数据包这样就失去了负载均衡的能力。因此在使用DR模式时通常会采用一些方式来确保请求数据包只会由DS接收例如抑制Real Server对广播的应答或者直接在路由器中对DS进行绑定等。 TNU隧道模式 TNU模式与DR模式非常相似它同样是只有请求信息会经过DS应答信息由Real Server直接返回给用户。不过DR模式中要求DS和所有的Real Server必须在一个局域网中而TNU模式去掉了这个限制。
TNU模式原理图如下所示 在TNU模式中DS与Real Server不必在一个网络中。DS在接到请求报文之后在报文的上面再加一层源地址为DIP目的地址为RIP2的IP首部然后通过广域网发送到Real Server2。 Real Server2收到报文拆掉报文以后发现了里面还有一个封装它就知道了这就是隧道。后续的过程就与DR一样了。 五、 LVS的调度算法 LVS的调度算法是指LVS对于请求的分发方式。DS在向Real Server分发请求实现负载均衡时有10种不同的算法 轮询Round Robinrr在Real Server之间轮流分配请求。 加权轮询Weighted Round Robinwrr有权重地进行轮询。 最少链接Least Connnectionslc将请求发送给连接数最少的RS。 加权最少链接Weighted Least Connnectionswlc分发给基于权重的最少链接。 基于局部性的最少链接Locality-Based Least Connectionslblc首先根据目标IP地址找出最近使用的服务器如果该服务器可用且没有超载一半的工作负荷则将请求发送到该服务器。否则使用“最少链接”原则。 带复制的基于局部性最少链接Locality-Based Least Connections with Replicationlblcr它与lblc的不同之处是它要维护从一个目标IP到一组服务器的映射而lblc值维护从一个目标IP到一台服务器的映射。 目标地址散列Destination Hashingdh使用请求的目标IP地址作为散列键从静态分配的散列表找出对应的服务器若该服务器可用且未超载则转发请求否则返回空。 源地址散列Source Hashingsh使用请求的源IP地址作为散列键从静态分配的散列表找出对应的服务器若该服务器可用且未超载则转发请求否则返回空。 最短期望延迟Shortest Expecte Delaysed“最短的期望的延迟”是基于WLC算法的只是其计算方法不同。具体算法如下active1)*256/weight 最少队列调度Never Queue Scheduling无需队列。如果有台 realserver的连接数0就直接分配过去不需要在进行SED运算。如果没有服务器连接数为空闲则使用SED算法。 六、LVS的优缺点是什么 LVS的优点有
工作在网络层可以实现高性能、高可用的服务器集群技术。 廉价可把许多低性能的服务器组合在一起形成一个水平扩展的集群服务器。 易用配置非常简单且有多重负载均衡的方法 稳定可靠即使集群中的一台服务器挂掉也不影响整体服务效果。 可扩展性好可以用户透明地进行水平扩展加减机器非常方便。 LVS的缺点
由于是通用组件因此不能对特定业务进行针对优化。 对于长连接无法进行负载均衡。 自身没有健康状态检查需要结合脚本或者Keepalived等软件实现。 LVS Linux Virtual Server跟SLB(Server Load Balancing)最大的区别就是LVS是在网络层起作用的而SLB是在应用层起作用的 ———————————————— 版权声明本文为CSDN博主「ximeneschen」的原创文章遵循CC 4.0 BY-SA版权协议转载请附上原文出处链接及本声明。 原文链接https://blog.csdn.net/cristianoxm/article/details/120546371