常用负载均衡的工具讲解及说明

常用负载均衡的工具

Nginx、LVS、HAProxy、 F5

​ 负载均衡即是代理服务器将接收的请求均衡的分发到各服务器中,负载均衡主要解决网络拥塞问题,提高服务器响应速度,服务就近提供,达到更好的访问质量,减少后台服务器大并发压力。

什么是 Nginx ?

​ Nginx ,是一个 Web 服务器和反向代理服务器,用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 协议。

Nginx负载均衡的原理是什么?

​ 客户端向反向代理发送请求,接着反向代理根据某种负载机制转发请求至目标服务器(这些服务器都运行着相同的应用),并把获得的内容返回给客户端,期中,代理请求可能根据配置被发往不同的服务器。

Nginx的优点:

  • 高并发连接:官方测试Nginx能够支撑5万并发连接,实际测试可达到3万左右,每天可以处理亿次访问量;原因是:采用最新epoll(linux2.6内核)和kqueue(freebsd)网络I/O模型,而Apache采用的是传统的select模型
  • 内存消耗小
  • Nginx支持负载均衡
  • Nginx支持反向代理
  • 成本低廉

Nginx正向代理

​ 一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器)然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。

正向代理总结就一句话:代理端代理的是客户端

Nginx反向代理

​ 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求,发给内部网络上的服务器并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

反向代理总结就一句话:代理端代理的是服务端

Nginx 可以用于七层负载均衡。
但是对于一些大的网站,一般会采用 DNS+四层负载+七层负载的方式进行多层次负载均衡。

LVS是什么?

​ LVS(Linux Virtual Server),也就是 Linux 虚拟服务器,是一个由章文嵩博士发起的自由软件项目, 是中国国内最早出现的自由软件项目之一。

LVS集群采用哪三层结构?

一般来说,LVS集群采用三层结构,其主要组成部分为:

A、负载调度器(load balancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。

B、服务器池(server pool),是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等。

C、共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。

LVS优点:

  1. 开源,免费;
  2. 在网上能找到一些相关技术资源;
  3. 具有软件负载均衡的一些优点;

LVS 由哪2部分程序组成?

​ 包括 ipvs 和 ipvsadm。

  1. ipvs(ip virtual server):一段代码工作在内核空间,叫ipvs,是真正生效实现调度的代码。
  2. ipvsadm:另外一段是工作在用户空间,叫ipvsadm,负责为ipvs内核框架编写规则,定义谁是集群服务,而谁是后端真实的服务器(Real Server)

LVS 有几种模式?

NAT模式、 TUN 模式、 DR 模式

NAT模式优缺点:

因为请求与应答都要经过lvs服务器,所以访问量大的话lvs会形成瓶颈,一般要求10-20台节点。

每台节点服务器的网关地址必须是lvs服务器的内网地址。

NAT模式支持对IP地址和端口进行转换。即用户请求的端口和真实服务器的端口可以不一致。

LVS-TUN模式:

​ 它的连接调度和管理与VS/NAT中的一样,利用ip隧道技术的原理,即在原有的客户端请求包头中再加一层IP Tunnel的包头ip首部信息,不改变原来整个请求包信息,只是新增了一层ip首部信息,再利用路由原理将请求发给RS server,不过要求的是所有的server必须支持”IPTunneling”或者”IP Encapsulation”协议。

LVS-DR模式原理:

​ Director Server作为群集的访问入口,但不作为网关使用,后端服务器池中的Real Server与Director Server在同一个物理网络中,发送给客户机的数据包不需要经过Director Server。为了响应对整个群集的访问,DS与RS都需要配置有VIP地址。

LVS十种调度算法介绍

1、轮叫调度(Round Robin)(简称rr)

​ 调度器通过“轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。

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

​ 调度器通过“加权轮叫”调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器能处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

3、最少链接(Least Connections)(LC)

​ 调度器通过“最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用“最小连接”调度算法可以较好地均衡负载。

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

​ 在集群系统中的服务器性能差异较大的情况下,调度器采用“加权最少链接”调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

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

​ “基于局部性的最少链接”调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接” 的原则选出一个可用的服务器,将请求发送到该服务器。

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

​ “带复制的基于局部性最少链接”调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不同之处是它要维护从一个目标 IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按“最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。

7、目标地址散列(Destination Hashing)(DH)

​ “目标地址散列”调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

8、源地址散列(Source Hashing)(SH)

​ “源地址散列”调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

9、最短的期望的延迟(Shortest Expected Delay Scheduling SED)(SED)

基于wlc算法。这个必须举例来说了
ABC三台机器分别权重123 ,连接数也分别是123。那么如果使用WLC算法的话一个新请求进入时它可能会分给ABC中的任意一个。使用sed算法后会进行这样一个运算
A(1+1)/1
B(1+2)/2
C(1+3)/3
根据运算结果,把连接交给C 。

10、最少队列调度(Never Queue Scheduling NQ)(NQ)

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

LVS 主要用来做四层负载和七层负载

所谓四层就是基于IP+端口的负载均衡,主要代表有lvs。

七层负载也称内容交换,就是基于URL等应用层信息的负载均衡,主要代表有nginx。

HAProxy是什么?

HAProxy是一个使用C语言编写的自由及开放源代码软件[1],其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。

HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。

HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户空间(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。

haproxy 配置中分成五部分内容有哪些?

  • global: 设置全局配置参数,属于进程的配置,通常是和操作系统相关。
  • defaults:配置默认参数,这些参数可以被用到frontend,backend,Listen组件;
  • frontend:接收请求的前端虚拟节点,Frontend可以更加规则直接指定具体使用后端的backend;
  • backend:后端服务集群的配置,是真实服务器,一个Backend对应一个或者多个实体服务器;
  • Listen :frontend和backend的组合体。

HAProxy 是一个使用 C 语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于 TCP 和 HTTP 的应用程序代理。
Haproxy 主要用来做七层负载均衡。

F5是什么?

​ F5 Networks(纳斯达克: FFIV) ,全球领先的应用交付网络(ADN)领域的厂商 ,创建于1996年 ,总部位于美国西雅图市 , F5为全球大型企业、运营商、政府与消费品牌提供更加快速、安全以及智能的应用 ,通过交付云与安全解决方案 ,F5帮助企业在不损失速度与管理性的同时享有它们所需的应用架构。

F5负载均衡功能有哪些?

1.多链路的负载均衡和冗余

2.防火墙负载均衡

3.服务器负载均衡

4.系统高可用性

5.高度的安全性

7.系统管理

F5的核心就是Virtual Server。

你可能感兴趣的:(常用负载均衡的工具讲解及说明)