构建高性能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,Web,应用服务器,nginx,网络应用)