加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

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

发布时间:2019-05-01 06:18:16 所属栏目:建站 来源:Kingreatwill
导读:什么是负载均衡(Load balancing) 在网站创立初期,我们一般都使用单台机器对台提供集中式服务,但随着业务量越来越大,无论性能还是稳定性上都有了更大的挑战。这时候我们就会想到通过扩容的方式来提供更好的服务。我们一般会把多台机器组成一个集群对外提

从整个 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即可;

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

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读