LVS(Linuxの仮想サーバー)のモデルとアルゴリズム

LVS(Linux仮想サーバ)のLinux仮想サーバー

IP使用してLVSクラスタの負荷分散技術とコンテンツベースの要求配信技術を。

ロードバランサのスケジューラへのユーザー要求は、スケジューリングの負荷分散アルゴリズムに従ってスケジューラは、実サーバに要求を設定します。ユーザーの場合、クラスタは透明です。

LVSクラスタ3層構造、主なコンポーネントは次のとおりです。

1、ロードバランサ(負荷分散装置)、それはフロントエンドマシンの外にクラスタ全体で、顧客はサーバーのセットを実行するための要求を送信するための責任があり、顧客サービスは、単一のIPアドレスから考えられている(私たちは、仮想IP、それを呼び出すことができますアドレス)に。

2は、サーバプール(サーバプール)は、実際の顧客の要求を実行するサーバーのグループです、サービスがWEB、MAIL、FTP、およびDNSを行いました。

図3は、サーバープールの共有記憶領域を提供するメモリ(共有ストレージ)を、共有、同じサービスを提供する、サーバ・プールが同じコンテンツを有することが容易です。

モデル

ネットワークアドレス変換を経由1.仮想サーバー(VS / NAT)

スケジューリングアルゴリズムのIPに応じてスケジューラによって計算され、サーバの宛先アドレスを書き換えることにより、ユーザの要求パケット。ネットワークアドレス変換での同様の応答パケットスケジューラ。欠点は、すべてのパケットは、スケジューラ、スケジューラに大きな圧力を通過しなければならないことです。

IPトンネリングを経由2.仮想サーバー(VS / TUN)

ユーザーの要求パケットと新しいIPカプセル化ヘッダ、スケジューリングアルゴリズムに従ってスケジューラサーバのIPにより算出した宛先アドレスを追加します。サーバーは、スケジューラを経由せず、直接クライアントに応答を返します。NATは、スケジューラへの圧力を解決します。

ダイレクトルーティングを経由3.仮想サーバー(VS / DR)

将用户请求的mac地址改写为真实服务器mac地址,直接通过mac寻址将请求转发到真实服务器。服务器将响应直接发给客户端。这种模型需要调度器和服务器在同一局域网,且服务器需要配置lo ip为vip,并且设置non-arp模式。前者为了服务器能够收到处理这个请求,后者是为了避免arp请求mac出错。这个模式优于上面两种,个人认为DR模式只对mac进行处理,上面均需要对网络层数据进行一定操作,开销上mac应该较少。

调度算法

1 轮叫(Round Robin)简称RR

均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。

2 加权轮叫(Weighted Round Robin) 简称WRR

处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

3 最少链接(Least Connections)简称LC

调度器通过"最少连接"调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。

4 加权最少链接(Weighted Least Connections)简称WLC

具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。最少链接的扩展,加上权值的最少链接。

5 基于局部性的最少链接(Locality-Based Least Connections)简称LBLC

主要用于Cache集群系统。该算法找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用"最少链接"的原则选出一个可用的服务器,将请求发送到该服务器。

6 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)简称LBLCR

它与LBLC算法的不同之处是它要维护从一个目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按"最小连接"原则从服务器组中选出一台服务器。

7 目标地址散列调度(Destination Hashing)简称DH

一种静态映射算法,通过一个散列(Hash)函数将一个目标IP地址映射到一台服务器。

8 源地址散列调度(Source Hashing)简称SH

算法正好与目标地址散列调度算法相反,它根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器。

9 最短的期望的延迟(shortest expected delay scheduling)简称sed

基于wlc算法

10 最少队列调度(never queue scheduling)简称nq

无需列队,如果有台realserver的连接数=0 就直接分配过去,不需要进行sed运算 。

小结

问题

  1. 需要多次连接,缓存,数据保存在不同服务器上。
  2. TUN模式需要设置lo IP?怎么实现拆包后被自己处理而不是丢弃。
  3. NAT 调度器如何知道服务器返回报文要发给哪个具体客户端。当请求数大于服务器数,如何判断。 (nat网络地址转换只将目标IP和端口修改为真实服务器IP端口,对源没有修改。)
  4. nat模型,是否可以直接在真实服务器中将响应报文修改为VIP?(直接使用隧道模型即可。若在服务器修改,增加服务器开销,只需使用隧道模型即可)

参考链接

https://blog.csdn.net/weixin_40470303/article/details/80541639

https://blog.csdn.net/weixin_33704234/article/details/86332145

https://www.xuebuyuan.com/3214658.html

https://www.cnblogs.com/Csir/p/6754077.html

https://blog.csdn.net/qq_41772936/article/details/80146464

https://www.cnblogs.com/yaboya/p/9109745.html

おすすめ

転載: www.cnblogs.com/boxker/p/11224400.html