ロードバランシングの詳細は - アルゴリズムと転送を実現します

負荷分散とは何ですか?

その限界にすると、アプリケーション・サーバーのパフォーマンスは、我々は、サイトの全体的なパフォーマンスを向上させるために、このクラスタリング技術を使用することができます。その後、サーバークラスタでは、あなたは、スケジューラなどのサーバー行為を持っている必要があり、そしてすべての要求が最初にそれをユーザーが受信され、負荷配分に応じて、各サーバが処理するために、単一のアプリケーション・サーバーに割り当てられた要求します。

スケジューラは、負荷分散サーバです。

サーバーの負荷分散は、サイトのアーキテクチャを実装するために使用することができ、高可用性スケーラビリティを

  • 可用性:ノードに障害が発生した場合、すべてのサービスの継続的な可用性を確保するために、ロードバランサは、他のユーザノードに要求を転送します。
  • スケーラビリティ:システム全体の負荷条件は、容易にノードを追加または削除することができます。

サーバーの負荷分散の2つの部分に分けることができます:

  • よると、負荷分散アルゴリズム WebサーバとWebサーバリストのクラスタアドレスを計算
  • データ要求は、アドレスに対応するWebサーバーに送信される

以下は、ロードバランシングアルゴリズム2つの部分でこれを達成するための転送について説明します。

まず、ロードバランシングアルゴリズム

ポーリング(ラウンドロビン)

ポーリングは、各サーバーに順番に送られた各要求をアルゴリズムです。

すべてのサーバハードウェアに適した同じシーンです。

以下に示すように、負荷分散スケジューラ順次4つの要求(1,2,3,4)の合計が、それらは順番に、サーバAとサーバBに送信します

ここに画像を挿入説明
サーバーのパフォーマンスの差が大きすぎる場合には、その後、サーバーのパフォーマンスの低下が過大な負荷を負担することができない可能性がサーバーBに示すように、それだけの要求を余裕があります。

ここに画像を挿入説明
2. WRR(重み付けラウンドロビン)

WRRは、サーバの性能の差に応じて、ポーリングに基づいて、サーバは特定の重みを与え、高性能サーバーは、より高い重みが割り当てられます。

如下图所示,服务器 A 被赋予的权值为 3,服务器 B 被赋予的权值为 1,那么 (1, 2, 3) 请求会被发送到服务器 A,(4) 请求会被发送到服务器 B。

ここに画像を挿入説明

3. 随机(Random)

把请求随机发送到服务器上。和轮询算法类似,该算法比较适合服务器性能差不多的场景。同样,对于服务器性能有差异的场景,也可以使用加权随机算法。

ここに画像を挿入説明

4. 最少连接(least Connections)

记录每个应用服务器正在处理的连接数(请求数),将新到的请求分发到最少连接的服务器上,应该说,这是最符合负载均衡定义的算法。同样,最少连接算法也可以实现加权最少连接。

如下所示,此时服务器 B 的连接数较少,那么新到达的请求,将会被转发到服务器 B上。
ここに画像を挿入説明

5. 源地址散列(Source Hashing)

根据请求来源的IP地址进行Hash计算,再对应用服务器数量进行取模,得到应用服务器,这样来自同一个IP地址的请求总在同一个服务器上处理,该请求的上下文信息可以存储在这台服务器上,在一个会话周期内重复使用,从而实现会话粘滞(Session 复制)

ここに画像を挿入説明

二、转发实现

1. HTTP 重定向负载均衡

HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服务器的 IP 地址之后,将该地址写入 HTTP 重定向报文中,状态码为 302。客户端收到重定向报文之后,需要重新向服务器发起请求。

ここに画像を挿入説明
优点:实现简单。

缺点:

  • 两次请求,访问延迟较高
  • HTTP 负载均衡器处理能力有限,会限制集群的规模。

实践中使用这种方案进行负载均衡的案例并不多见。

2. DNS 域名解析负载均衡

在 DNS 服务器中配置多个 A 记录,如 : www.mysite.com IN A 114.100.80.1、www.mysite.com IN A 114.100.80.2、www.mysite.com IN A 114.100.80.3。

每次域名解析请求都会根据负载均衡算法计算一个不同的IP地址返回,这样 A 记录中配置的多个服务器就构成一个集群,并可以实现负载均衡。

ここに画像を挿入説明
优点:DNS 能够根据地理位置进行域名解析,返回离用户最近的服务器 IP 地址。

缺点:由于 DNS 具有多级结构,每一级的域名记录都可能被缓存,当下线一台服务器需要修改 DNS 记录时,需要过很长一段时间才能生效。

大型网站总是部分使用 DNS 域名解析, 利用 DNS 做为第一级负载均衡手段,然后在内部使用其它方式做第二级负载均衡。也就是说,域名解析的结果为内部的负载均衡服务器 IP 地址,而不是实际提供Web服务的物理服务器。之后再有这些内部的负载均衡服务器进行负载均衡,将请求发到真实的Web服务器上。

3. 反向代理负载均衡

利用反向代理可以缓存资源,以改善网站性能。

在部署位置上,反向代理服务器处于Web服务器前面(所以可以缓存Web响应,加速访问),这个位置正好也是负载均衡服务器的位置,所以大多数反向代理服务器同时提供负载均衡的功能。

在这种负载均衡转发方式下,客户端不直接请求源服务器,因此源服务器不需要外部 IP 地址,而反向代理需要配置内部和外部两套 IP 地址。

ここに画像を挿入説明
由于反向代理服务器转发请求在HTTP协议层面,因此也叫应用层负载均衡。

优点:与其它功能集成在一起,部署简单。

缺点:所有请求和响应都需要经过反向代理服务器,它可能会成为性能瓶颈。

4. IP负载均衡

在网络层通过修改请求目标地址进行负载均衡。

負荷分散サーバーへのユーザー要求パケットの後、負荷分散サーバは、サーバロードバランシングの送信元IPアドレスのアルゴリズムに従って、オペレーティングシステムのカーネルプロセスでネットワークパケットを取得し、パケットの要求先のIPアドレスを変更し、最後に転送されます。

サーバから返されたソース・レスポンスは、典型的には、ゲートウェイ・サーバ・クラスタとして負荷分散サーバーの行為を達成するためにそれらを取得することにより、負荷分散サーバーを経由する必要があります。

ここに画像を挿入説明
長所:カーネルプロセスで処理され、パフォーマンスが比較的高いです。

短所:すべての要求と応答は、負荷分散サーバーとなっているとして、およびリバースプロキシは、パフォーマンスのボトルネックになります。

データリンク層のロードバランシング

リンク負荷分散アルゴリズム元サーバのMACアドレスに基づい層、及び、要求パケット、および転送の宛先MACアドレスを変更します。

することにより、ソースサーバと負荷、サーバーのIPアドレスの仮想IPアドレスを均衡IPアドレスを変更する必要がなくなるのと同じ構成を転送することができますバックソースサーバへの応答は、サーバの負荷分散がクライアントに直接転送することができます転送する必要はありませんので、それが、理由は同じIPアドレスであり、ボトルネックを回避するために、サーバロードバランシング。

これは、直接ルートと呼ばれる三角形のモードです。ダウンロードおよびビデオサービスのWebサイトの場合は、直接ルートは、負荷分散サーバを介してネットワークトラフィックの多くを避けるために。

ここに画像を挿入説明

参考:「大規模Webサイトの技術フレームワーク」 -李Zhihui
第二部、転送部のイラストをロードバランシングを達成するためには、本からです。

おすすめ

転載: blog.csdn.net/u013568373/article/details/91403446