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

VSole2021-12-10 07:50:05

常用负载均衡的工具

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。


负载均衡lvs
本作品采用《CC 协议》,转载必须注明作者和本文链接
NAT模式支持对IP地址和端口进行转换。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
B 站高可用架构实践
2022-05-05 22:07:44
通过改进负载均衡算法,引入惩罚值的方式,慢慢放入流量进行预热。所以过载保护的目的是为了自保。API 级别的重试需要考虑集群的过载情况。比如只允许 10% 的流量进行重试,Client 端做统计,当发现有 10% 都是重试,那么剩下的都拒绝掉。重试的统计图和记录 QPS 的图分开。问题诊断的时候,可以知道它是来自流量重试导致的问题放大。超时大部分的故障都是因为超时控制不合理导致的。
神器 Nginx 的学习手册
2022-02-23 07:35:52
Nginx 是一个高性能的 HTTP 和反向代理服务器,特点是占用内存少,并发能力强,事实上 Nginx 的并发能力确实在同类型的网页服务器中表现较好。 Nginx 专为性能优化而开发,性能是其最重要的要求,十分注重效率,有报告 Nginx 能支持高达 50000 个并发连接数。 01 Nginx 知识网结构图 Nginx 的知识网结构图如下:
一招搞定 Nginx
2022-03-07 08:25:33
安装PCRE库,用于解析正则表达式yum?zlib压缩和解压缩依赖yum?SSL 安全的加密的套接字协议层,用于HTTP安全传输,也就是httpsyum?
防范DDoS攻击最主要的手段是加钱上高防,同时隐藏网站真实IP。做一个永不暴露真实IP的网站返回目录既然不想暴露网站的真实IP,那么真实服务器前面至少套一层代理。对于普通的网站,使用CDN或者高防就足够,业务量大的情况下才会用到SLB。例如使用CloudFlare的免费CDN服务,其回源IP可从?获取,然后将其加入白名单,同时屏蔽其他IP:# 将cf ip地址放在 cf_ips.txt# 首先将cf的ip加入白名单while read -r linedo
对Evilnum的运作进行了分析,该恶意软件背后的APT集团此前曾对金融科技公司发起攻击。尽管该恶意软件至少从2018年起就被发现,之前也有文件记录,但很少有关于其背后的组织及其运作方式的报道。 在本文中,我们将两...
VMware公司近日对其独立的负载均衡器进行了升级,并将其与NSX-T虚拟网络以及用于私有数据中心和公共云的安全软件集成。他正在进行两个项目涉及VMware虚拟网络技术。VMware公司将继续支持使用NSX-T中的负载均衡功能的客户。否则,企业必须为未使用的服务器容量付费,以应对流量高峰。在此之前,该产品会存在配置错误,并将其应用于所有应用程序服务器。新产品将仅在主服务器中安装配置更改。
一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。#user administrator administrators; #配置用户或者组,默认为nobody nobody。keepalive_requests 120;#单连接请求上限次数。
在介绍Nginx的负载均衡实现之前,先简单的说下负载均衡的分类,主要分为硬件负载均衡和软件负载均衡 ,硬件负载均衡是使用专门的软件和硬件相结合的设备,设备商会提供完整成熟的解决方案,比如F5,在数据的稳定性以及安全性来说非常可靠,但是相比软件而言造价会更加昂贵;软件的负载均衡以Nginx这类软件为主,实现的一种消息队列分发机制。
IDC发布《2020年Q4中国应用交付市场跟踪报告》,深信服应用交付AD以28.24%的市占率位列第一。值得一提的是,这也是中国IT厂商第一次在应用交付领域反超国外厂商F5。
VSole
网络安全专家