您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    一文秒懂散布式架构下的“负载平衡”
    时间:2018-06-10 08:04 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    在网站创立初期,我们普通都运用单台机器提供集中式效劳,但随着业务量越来越大,无论功用还是波动性上都有了更大的应战。这时分我们就会想到经过扩容的方式来提供更好的效劳。

    一文秒懂散布式架构下的“负载平衡”

    什么是负载平衡

    我们普通会把多台机器组成一个集群对外提供效劳。但是,我们的网站对外提供的拜访入口都是一个,比如 。

    那么当用户在阅读器输入 的时分如何将用户的央求分发到集群中不同的机器上呢,这就是负载平衡在做的事情。

    以后大少数的互联网系统都运用了效劳器集群技术,集群行将相反效劳部署在多台效劳器上构成一个集群全体对外提供效劳。

    这些集群可以是 Web 运用效劳器集群,也可以是数据库效劳器集群,还可以是散布式缓存效劳器集群等。

    在实践运用中,在 Web 效劳器集群之前总会有一台负载平衡效劳器,负载平衡设备的义务就是作为 Web 效劳器流量的入口,挑选最适宜的一台 Web 效劳器,将客户端的央求转发给它处置,完成客户端到真实效劳端的透明转发。

    最近几年很火的「云计算」以及散布式架构,本质上也是将后端效劳器作为计算资源、存储资源,由某台管理效劳器封装成一个效劳对外提供。

    客户端不需求关心真正提供效劳的是哪台机器,在它看来,就似乎它面对的是一台拥有近乎有限才能的效劳器,而本质上,真正提供效劳的是后端的集群。

    软件负载处置的两个中心成绩是:选谁、转发,其中最著名的是 LVS(Linux Virtual Server)。

    一文秒懂散布式架构下的“负载平衡”

    一个典型的互联网运用的拓扑结构是这样的:

    一文秒懂散布式架构下的“负载平衡”

    负载平衡分类

    如今我们知道,负载平衡就是一种计算机网络技术,用来在多个计算机(计算机集群)、网络衔接、CPU、磁碟驱动器或其他资源中分配负载,以到达最佳化资源运用、最大化吞吐率、最小化照应时间、同时避免过载的目的。

    那么,这种计算机技术的完成方式有多种。大致可以分为以下几种,其中最常用的是四层和七层负载平衡。

    二层负载平衡

    负载平衡效劳器对外依然提供一个 VIP(虚 IP),集群中不同的机器采用相反 IP 地址,但机器的 MAC 地址不一样。

    当负载平衡效劳器接遭到央求之后,经过改写报文的目的 MAC 地址的方式将央求转发到目的机器完成负载平衡。

    三层负载平衡

    三层负载平衡和二层负载平衡相似,负载平衡效劳器对外依然提供一个 VIP(虚IP),但集群中不同的机器采用不同的 IP 地址。

    当负载平衡效劳器接遭到央求之后,依据不同的负载平衡算法,经过 IP 将央求转发至不同的真实效劳器。

    四层负载平衡

    四层负载平衡任务在 OSI 模型的传输层,由于在传输层,只要 TCP/UDP 协议,这两种协议中除了包含源 IP、目的 IP 以外,还包含源端口号及目的端口号。

    四层负载平衡效劳器在接遭到客户端央求后,之后经过修正数据包的地址信息(IP+端口号)将流量转发到运用效劳器。

    七层负载平衡

    七层负载平衡任务在 OSI 模型的运用层,运用层协议较多,常用 http、radius、DNS 等。

    七层负载就可以基于这些协议来负载。这些运用层协议中会包含很多有意义的内容。

    比似乎一个 Web 效劳器的负载平衡,除了依据 IP 加端口停止负载外,还可依据七层的 URL、阅读器类别、言语来决议能否要停止负载平衡。

    一文秒懂散布式架构下的“负载平衡”

    四层和七层负载平衡

    关于普通的运用来说,有了 Nginx 就够了。Nginx 可以用于七层负载平衡。但是关于一些大的网站,普通会采用 DNS+四层负载+七层负载的方式停止多层次负载平衡。

    一文秒懂散布式架构下的“负载平衡”

    阿里云的 SLB

    常用负载平衡工具

    硬件负载平衡功用优越,功用片面,但价钱昂贵,普通适宜初期或许土豪级公司长期运用。

    因此软件负载平衡在互联网范围少量运用。常用的软件负载平衡软件有 LVS、Nginx、HAProxy 等。LVS/Nginx/HAProxy 是目前运用最普遍的三种负载平衡软件。

    LVS

    LVS(Linux Virtual Server),也就是 Linux 虚拟效劳器,是一个由章文嵩博士发起的自在软件项目。

    运用 LVS 技术要到达的目的是:经过 LVS 提供的负载平衡技术和 Linux 操作系统完成一个高功用、高可用的效劳器群集。

    它具有良好牢靠性、可扩展性和可操作性,从而以昂贵的成本完成最优的效劳功用。LVS 主要用来做四层负载平衡。

    LVS 架构

    LVS 架设的效劳器集群系统由三个部分组成:

    最前端的负载平衡层(Loader Balancer)。

    中间的效劳器群组层,用 Server Array 表示。

    最底层的数据共享存储层,用 Shared Storage 表示。

    在用户看来一切的运用都是透明的,用户只是在运用一个虚拟效劳器提供的高功用效劳。

    一文秒懂散布式架构下的“负载平衡”

    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 在忙碌的业务系统中,功用并不是很好。

    此时可以采用集群文件系统,例如 Red hat 的 GFS 文件系统、Oracle 提供的 OCFS2 文件系统等。

    从整个 LVS 结构可以看出,Director Server 是整个 LVS 的中心,目前用于 Director Server 的操作系统只能是 Linux 和 FreeBSD。

    Linux2.6 内核不用任何设置就可以支持 LVS 功用,而 FreeBSD 作为 Director Server 的运用还不是很多,功用也不是很好。

    关于 Real Server,简直可以是一切的系统平台,Linux、Windows、Solaris、AIX、BSD 系列都能很好地支持。

    Nginx

    Nginx 是一个网页效劳器,它能反向代理 HTTP、HTTPS、SMTP、POP3、IMAP 的协议链接,以及一个负载平衡器和一个 HTTP 缓存。Nginx 主要用来做七层负载平衡。

    并发功用:官方支持每秒 5 万并发,实践国际普通到每秒 2 万并发,有优化到每秒 10 万并发的,详细功用看运用场景。

    特点:

    模块化设计:良好的扩展性,可以经过模块方式停止功用扩展。

    高牢靠性:主控进程和 worker 是同步完成的,一个 worker 出现成绩,会立刻启动另一个 worker。

    内存消耗低:一万个长衔接(keep-alive),仅消耗 2.5MB 内存。

    支持热部署:不用中止效劳器,完成更新配置文件,改换日志文件、更新效劳器顺序版本。

    并发才能强:官方数据每秒支持 5 万并发。

    功用丰厚:优秀的反向代理功用和灵敏的负载平衡策略。

    Nginx 的基本任务形式如下图:

    (责任编辑:admin)