`

构建高性能Web站点(笔记八)

阅读更多

第十二章 Web负载均衡(Load Balancing)


    Web规模扩展: Web服务器自身硬件的垂直扩展,服务器的水平扩展
1、Http重定向:
    Web服务器可通过Http响应头信息中的Location标记来返回一个新的URL。
    镜像下载的目的就是实现负载均衡。HttpWatch可监视Http请求和响应。
    实现: 可以通过Web应用程序实现你想到的调度策略,如可根据请求的URL的不同来进行合理的过滤和转移。
    Http重定向关心的是主站点的最大吞吐率和它扩展能力的关系。
    多台服务器的调度策略: 
    依次轮询(Road Robin),可以实现绝对意义上的均衡。需要代价: 由于Http是无状态的,如果按顺序转移请求,就必须记录最后一次轮询到得服务器序号,这会带来额外开销。要实现绝对的按顺序转移,必然会使得主站点请求转移计算的并发性大打折扣,因为转移状态是互斥资源。
    顺序调度的性能比不上随机调度的性能。
    使用用户IP地址来散列计算实际服务器序号,这样可以使得用户每次请求都能访问同一台实际服务器。
2、DNS负载均衡:
    均衡: 就是希望所有服务器都不要过载,并能够最大程度地发挥作用。
    DNS负责将用户请求的域名映射为实际的IP地址,这种映射可以是一对多的,这样DNS服务器便充当负载均衡调度器。
    DNS的职能类似于重定向调度程序。
    DNS节省了所谓的主站点,DNS服务器已经充当了主站点的职能。
    DNS的A记录,用来指定域名对应的IP地址。 
    Http重定向的负责均衡系统受到主站点性能的制约,但是它足够灵活,完全可以通过Web应用程序实现你想到的调度策略,如可根据请求的URL的不同来进行合理的过滤和转移。
    DNS服务器作为负载均衡调度器工作在DNS层面,其调度灵活性大大削弱,无法将Http请求的上下文引入到调度策略中。
    DNS的缓存过期时间一般比较长(TTL的值一般不会为0),如果某台服务器出现故障,很难及时将它从调度策略中拿掉。
    动态DNS,允许DNS服务器开放特定的服务,提供自动化远程修改DNS记录的功能。
    影响服务器并发处理能力的因素有哪些?(第三章)
3、反向代理负载均衡:
    反向代理服务器的核心工作是转发Http,它工作在Http层面,因此,基于反向代理的负载均衡也称为七层负载均衡
    HTTP重定向和DNS解析在请求的调度上体现在“转移”上,而反向代理调度器则体现在“转发”上。
    任何对于实际服务器的http请求都必须经过调度器;调度器必须等待实际服务器的http响应,并将它反馈给用户。
    反向代理服务器如何进行调度: 可以按权重分配任务(如Nginx),HAProxy也是一款主流的反向代理服务器。
    扩展制约: Http层面的反向代理服务器扩展能力的制约,不仅来自于自身对外的服务能力,也归咎于其转发开销是否上升为主要时间。
    监控服务器的状态: 包括系统负载、响应时间、是否可用、TCP连接数、流量等。
    粘滞会话: 
    让用户的一次回话周期内的所有请求始终转发到一台特定的后端服务器上。
    解决的问题: (1)某台服务器启用了Session来本地化保存用户的一些数据后,下次用户请求如果转发给了其他后端服务器,导致之前的Session数据无法访问。(2)后端服务器实现了动态内容缓存,毫无规律的转发使得这些缓存利用率下降。
    解决方案: (1) 使用用户IP地址来散列计算实际服务器序号(2)利用Cookie机制设计持久性算法,如调度器将某个后端服务器的编号追加到写给用户的Cookie中,这样调度器就可以在该用户随后的请求中知道应该转发给那个后端服务器。
    注: 在后端服务器保存Session和本地化缓存使得后端服务器显得过于个性化,应该避免这些情况,尽量做到让后端服务器与本地无关。
    将实际服务器的默认网关设置为NAT服务器。
3、IP负载均衡:
    NAT(网络地址转换)负载均衡工作在传输层,对数据包中的IP地址和端口信息进行修改,也称为四层负载均衡。DNAT(反向网络地址转换)
    如何修改IP数据包: Linux 的Netfilter,当网络数据包到达服务器的网卡并且进入某个进程的地址空间之前,先要通过内核缓冲区,这时候内核中的Netfilter便对数据包有着绝对的控制权。可以通过iptables对Netfilter的过滤表进行增删改查。
    路由器的工作是存储转发,只修改数据包的MAC地址。
    IPVS可以实现基于NAT的负载均衡、直接路由均衡和IP隧道负载均衡。可通过ipvsadm多IPVS进行管理,快速实现负载均衡系统。
    网关瓶颈: NAT服务器的网络带宽成为转发能力的主要制约,可通过将基于NAT的集群和DNS-RR混合使用,可组建多条件允许的NAT集群。
4、直接路由

    路由器的工作原理
    让响应数据包不经过调度器。
    一个网卡可以设置多个IP地址,并且拥有同样的MAC地址。
    LVS-DR和LVS-NAT相比,它们都远远超过了基于反向代理的负载均衡系统。LVS-DR最大的特点是实际服务器的响应数据包不经过调度器直接发往用户端,这就避免了LVS-NAT中调度器带来的瓶颈。这时的瓶颈更多的转移到了WAN的出口带宽。
5、IP隧道
    基于IP隧道的负载均衡系统同样可以用LVS来实现,也称为LVS-TUN,与LVS-DR不同的是,实际服务器可以和调度器不在一个WAN网段,但实际服务器也须有合法的IP地址。
    IP隧道的请求转发机制,是将调度器收到的IP数据包封装在一个新的IP数据包中,转交给实际服务器,然后实际服务器的响应数据可以直接到达用户端。

分享到:
评论

相关推荐

    Linux性能与安全合集

    Linux Security Tips(Linux 安全技巧).pdf linux 系统安全与优化中文版 by smallfish.pdf Linux 系统安全与优化中文版221.pdf Linux 进程管理.pdf Linux安全和优化.pdf ... 构建高性能WEB站点.p

    笔记资料.zip

    例如,Java应用处理业务逻辑,Nginx负责静态资源服务和负载均衡,两者共同构建出高性能的Web服务架构。 这份笔记资料可能详细记录了作者在学习过程中遇到的问题、解决方法以及一些实用技巧,对于初学者和有经验的...

    easyUI笔记

    ### easyUI笔记知识点详解 #### 一、什么是jQuery EasyUI? **jQuery EasyUI** 是一组基于 jQuery 的 UI 插件集合。它的目标是帮助 Web 开发者更容易地创建功能丰富且美观的用户界面。通过使用 **jQuery EasyUI**...

    基于PHP的minIsay php笔记程序beta.zip

    1. **轻量级架构**:minIsay的设计理念是简洁,因此其代码结构清晰,资源占用少,对于小型和个人站点而言,运行效率高,且易于部署和维护。 2. **PHP技术栈**:作为一款PHP程序,minIsay充分利用了PHP的灵活性和...

    Portal门户开发笔记

    IBM WebSphere Portal是一款强大的企业级门户平台,用于构建和管理高度可定制的、集成了多种应用和服务的用户入口。在本开发笔记中,我们将深入探讨WebSphere Portal V6到V8版本的相关知识点,涵盖从基础架构到高级...

    ngotes:使用MongoDB的笔记站点

    MongoDB是一款高性能、开源、无模式的文档型数据库,被广泛应用于Web开发中,尤其是对于处理JSON、BSON格式数据的应用场景。Ngotes是一个基于MongoDB构建的笔记站点,它利用了MongoDB的强大功能来存储和检索用户的...

    Nginx-笔记1

    【Nginx】是俄罗斯开发的一款高性能的HTTP和反向代理服务器,因其高效稳定、内存消耗小、并发能力...通过本课程的学习,你将能够全面了解Nginx,掌握其基本配置和应用场景,为构建高效稳定的Web服务环境打下坚实基础。

    尚硅谷_韩顺平_Go语言核心编程.docx

    - **后端服务开发**:由于 Golang 高效的性能表现,非常适合用于构建高性能的 Web 服务器和 API 服务。 - **云计算/云服务后台**:随着云计算的发展,越来越多的企业开始采用 Golang 来构建云服务的后端系统。 ####...

    nginx笔记+JAVA+运维

    Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,由俄罗斯开发者伊戈尔·赛索耶夫为 Rambler.ru 站点开发,以其稳定性、高效能和低系统资源消耗著称。自 2004 年首次发布以来,Nginx 已经发展成为一个广泛使用的...

    老男孩linux运维课程笔记

    - **Nginx优势**:高性能、稳定性好、资源消耗低、易于扩展。 - **模块和工作原理**: - Nginx支持多种模块,如HTTP Proxy模块、HTTP FastCGI模块等。 - 工作模式采用异步非阻塞的方式,能够高效处理大量并发请求...

    lucene笔记

    - **Nutch**: 包含大规模爬虫工具,能够抓取和分析Web站点数据。 - **jsoup**: Java HTML解析器,支持直接解析URL地址、HTML文本。 - **Heritrix**: 开源的网络爬虫,具有良好的可扩展性。 #### 索引文件的逻辑...

    documentation::open_file_folder:我用盖茨比制成的个人笔记本

    首先,Gatsby是一款基于React的静态站点生成器,它结合了现代Web开发的最佳实践,如JAMstack(JavaScript、APIs、Markup),为构建高性能的网站提供了一流的解决方案。通过Gatsby,我们可以快速搭建起个人笔记本的...

    JavaScript_使用 NextJS Notion API 实现的支持多种部署方案的静态博客无需服务器零门槛搭建网站为

    它简化了React应用的开发流程,提供了诸如自动代码分割、预渲染、路由、热模块替换等特性,让开发者可以快速地构建可扩展的、高性能的Web应用。 **Notion API** Notion是一款强大的笔记和项目管理工具,它的API...

    flutter 环境搭建-flutter环境搭建,很不错的学习笔记

    其核心优势在于跨平台性和高性能表现。 **跨平台性**:Flutter 的跨平台特性意味着开发者可以使用同一套代码库来部署应用程序至多个不同的平台。这些平台包括但不限于: - **移动端**:Android 和 iOS。 - **Web端...

    《Apache服务器配置与使用工作笔记》.(王江伟).[PDF].&ckook;

    ### Apache服务器配置与使用知识点详解 #### 一、Apache服务器简介...通过以上知识点的学习,读者可以深入了解Apache服务器的基本原理、配置方法及高级用法,从而更好地利用Apache构建稳定、高效、安全的Web服务环境。

    PriorityQueue带优先级的队列md,学习代码笔记

    **PriorityQueue带优先级的队列** `PriorityQueue`是Java集合框架...理解这些技术并合理选择使用,对于构建高性能、安全的Web应用至关重要。在实际开发中,需要根据应用场景和需求来决定使用哪种机制来管理用户状态。

    notebook:每日笔记本迷你博客

    1. **Gatsby**:Gatsby是一个基于React的开源静态站点生成器,用于快速构建现代Web应用。Gatsby以其出色的性能、丰富的插件生态系统和SEO优化而闻名。在“notebook”项目中,Gatsby被用来构建响应式的博客界面,能够...

    B2C商城系统 PC端+H5移动端 + 微信端 快速为你构建自己的商城系统.rar

    对于高并发的B2C商城,性能优化至关重要,包括缓存策略、负载均衡、CDN内容分发网络等技术的应用,以保证系统的稳定性和响应速度。 11. **API接口**: 商城系统可能需要与其他服务集成,如物流查询、第三方支付、...

Global site tag (gtag.js) - Google Analytics