로드 밸런싱 세부 - 알고리즘 및 전달을 구현

로드 밸런싱은 무엇인가?

한계에 응용 프로그램 서버 성능, 우리는이 클러스터링 기술을 사용할 수 있습니다 때 사이트의 전반적인 성능을 향상시킬 수 있습니다. 그런 다음, 서버 클러스터에서, 당신은 스케줄러로 서버 역할이 필요하고, 모든 요청은 먼저 각 서버가 처리 할 수있는 하나의 응용 프로그램 서버에 할당 요청합니다 부하 디스패처에 따라, 그것의 사용자가 수신됩니다.

스케줄러는로드 밸런싱 서버입니다.

서버로드 밸런싱은 사이트의 아키텍처를 구현하는 데 사용할 수있는 고 가용성확장 성 :

  • 가용성 : 노드가 실패하면 모든 서비스의 지속적인 가용성을 보장하기 위해,로드 밸런서가 다른 사용자 노드로 요청을 전달합니다;
  • 확장 성 : 전체 시스템 부하 조건은 쉽게 추가하거나 노드를 제거 할 수 있습니다.

서버로드 밸런싱은 두 부분으로 나눌 수 있습니다 :

  • 에 따르면 로드 밸런싱 알고리즘 웹 서버와 웹 서버 목록의 클러스터 주소를 계산
  • 데이터 요청이 주소에 해당하는 웹 서버로 전송됩니다

다음은로드 밸런싱 알고리즘 및 두 부분으로이를 전송을 설명한다.

첫째,로드 밸런싱 알고리즘

폴링 (라운드 로빈)

폴링은 각 서버에 차례로 전송 된 각 요청을 알고리즘입니다.

모든 서버 하드웨어에 적합 같은 장면이다.

아래에 도시 된 바와 같이, 부하 분산 스케줄러 순차적으로 네 개의 요청 (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 주소이며, 병목 현상을 방지하기 위해 서버로드 밸런싱.

이것은 직접적인 경로라고 삼각형 모드입니다. 다운로드 및 비디오 서비스 웹 사이트에 대해 직접 경로로드 밸런싱 서버를 통해 네트워크 트래픽을 많이 방지 할 수 있습니다.

여기에 그림 삽입 설명

참조 : "대형 웹 사이트 기술 프레임 워크"- 리 Zhihui
두 번째 부분은, 전달 섹션의 그림은 책이다 부하 분산을 달성했다.

추천

출처blog.csdn.net/u013568373/article/details/91403446