设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 重新 试卷 文件
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

浅谈几种常用负载均衡架构(2)

发布时间:2019-04-30 13:54 所属栏目:21 来源:Kingreatwill
导读:Load Balancer 层:位于整个集群系统的最前端,有一台或者多台负载调度器(Director Server)组成,LVS 模块就安装在 Director Server上,而 Director 的主要作用类似于一个路由器,它含有完成 LVS 功能所设定的路由

Load Balancer 层:位于整个集群系统的最前端,有一台或者多台负载调度器(Director Server)组成,LVS 模块就安装在 Director Server上,而 Director 的主要作用类似于一个路由器,它含有完成 LVS 功能所设定的路由表,通过这些路由表把用户的请求分发给 Server Array 层的应用服务器(Real Server)上。同时,在 Director Server 上还要安装对 Real Server 服务的监控模块 Ldirectord,此模块用于监测各个 Real Server 服务的健康状况。在 Real Server 不可用时把它从 LVS 路由表中剔除,恢复时重新加入。

Server Array 层:由一组实际运行应用服务的机器组成,Real Server 可以是 Web 服务器、Mail 服务器、FTP 服务器、DNS 服务器、视频服务器中的一个或者多个,每个 Real Server 之间通过高速的 LAN 或分布在各地的 WAN 相连接。在实际的应用中,Director Server 也可以同时兼任 Real Server 的角色。

Shared Storage 层:是为所有 Real Server 提供共享存储空间和内容一致性的存储区域,在物理上一般由磁盘阵列设备组成,为了提供内容的一致性,一般可以通过 NFS 网络文件系统共享数 据,但 NFS 在繁忙的业务系统中,性能并不是很好,此时可以采用集群文件系统,例如 Redhat 的 GFS 文件系统、Oracle 提供的 OCFS2 文件系统等。

从整个 LVS 结构可以看出,Director Server 是整个 LVS 的核心,目前用于 Director Server 的操作系统只能是 Linux 和 FreeBSD,Linux 2.6 内核不用任何设置就可以支持 LVS 功能,而 FreeBSD 作为 Director Server 的应用还不是很多,性能也不是很好。对于 Real Server,几乎可以是所有的系统平台,Linux、windows、Solaris、AIX、BSD 系列都能很好地支持。

2、Nginx

Nginx(发音同 engine x)是一个网页服务器,它能反向代理 HTTP、HTTPS,、SMTP、POP3、IMAP的协议链接,以及一个负载均衡器和一个HTTP缓存。

Nginx 主要用来做七层负载均衡。

并发性能:官方支持每秒 5 万并发,实际国内一般到每秒 2 万并发,有优化到每秒 10 万并发的。具体性能看应用场景。

特点:

  • 模块化设计:良好的扩展性,可以通过模块方式进行功能扩展。
  • 高可靠性:主控进程和 worker 是同步实现的,一个 worker 出现问题,会立刻启动另一个 worker。
  • 内存消耗低:一万个长连接(keep-alive),仅消耗 2.5 MB 内存。
  • 支持热部署:不用停止服务器,实现更新配置文件,更换日志文件、更新服务器程序版本。
  • 并发能力强:官方数据每秒支持 5 万并发;
  • 功能丰富:优秀的反向代理功能和灵活的负载均衡策略

Nginx 的基本工作模式

一个 master 进程,生成一个或者多个 worker 进程。但这里 master 是使用 root 身份启动的,因为 Nginx 要工作在 80 端口。而只有管理员才有权限启动小于低于 1023 的端口。master 主要是负责的作用只是启动 worker,加载配置文件,负责系统的平滑升级。其它的工作是交给 worker。那当 worker 被启动之后,也只是负责一些 web 最简单的工作,而其它的工作都是由 worker 中调用的模块来实现的。

模块之间是以流水线的方式实现功能的。流水线,指的是一个用户请求,由多个模块组合各自的功能依次实现完成的。比如:第一个模块只负责分析请求首部,第二个模块只负责查找数据,第三个模块只负责压缩数据,依次完成各自工作。来实现整个工作的完成。

它们是如何实现热部署的呢?是这样的,我们前面说 master 不负责具体的工作,而是调用 worker 工作,它只是负责读取配置文件,因此当一个模块修改或者配置文件发生变化,是由 master 进行读取,因此此时不会影响到 worker 工作。在 master 进行读取配置文件之后,不会立即把修改的配置文件告知 worker 。而是让被修改的 worker 继续使用老的配置文件工作,当 worker 工作完毕之后,直接当掉这个子进程,更换新的子进程,使用新的规则。

3、HAProxy

HAProxy 也是使用较多的一款负载均衡软件。HAProxy 提供高可用性、负载均衡以及基于 TCP 和 HTTP 应用的代理,支持虚拟主机,是免费、快速并且可靠的一种解决方案。特别适用于那些负载特大的 Web站点。运行模式使得它可以很简单安全的整合到当前的架构中,同时可以保护你的web服务器不被暴露到网络上。

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

Haproxy 主要用来做七层负载均衡。

常见负载均衡算法

上面介绍负载均衡技术的时候提到过,负载均衡服务器在决定将请求转发到具体哪台真实服务器时,是通过负载均衡算法来实现的。负载均衡算法可以分为两类:静态负载均衡算法和动态负载均衡算法。

  • 静态负载均衡算法包括:轮询、比率、优先权。
  • 动态负载均衡算法包括:最少连接数、最快响应速度、观察方法、预测法、动态性能分配、动态服务器补充、服务质量、服务类型、规则模式。

轮询(Round Robin):顺序循环将请求一次顺序循环地连接每个服务器。当其中某个服务器发生第二到第 7 层的故障,BIG-IP 就把其从顺序循环队列中拿出,不参加下一次的轮询,直到其恢复正常。

以轮询的方式依次请求调度不同的服务器;实现时,一般为服务器带上权重;这样有两个好处:针对服务器的性能差异可分配不同的负载;当需要将某个结点剔除时,只需要将其权重设置为0即可;

  • 优点:实现简单、高效;易水平扩展
  • 缺点:请求到目的结点的不确定,造成其无法适用于有写的场景(缓存,数据库写)
  • 应用场景:数据库或应用服务层中只有读的场景

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读