Linux集群之美
上QQ阅读APP看书,第一时间看更新

1.1.4 以Nginx作为负载均衡器

Nginx在作为负载均衡器的同时也是反向代理服务器,其配置语法相当简单,可以按轮询、ip_hash、url_hash、权重等多种方法对后端服务器做负载均衡,同时还支持后端服务器的健康检查。另外,它相对于LVS来说比较有优势的一点是,由于它是基于第7层的负载均衡,是根据报头内的信息来执行负载均衡任务的,所以对网络的依赖性比较小,理论上只要可以正确执行ping命令就能够实现负载均衡。在国内,Nginx不仅可以作为一款性能优异的负载均衡器,也可以作为一款适用于高并发环境的Web应用软件,在新浪、金山、迅雷在线等大型网站都有相关应用。其作为负载均衡器的优点如下:

·配置文件非常简单,风格跟程序一样通俗易懂。

·成本低廉。Nginx为开源软件,可以免费使用,而购买F5 Big-IP、NetScaler等硬件负载均衡交换机则需要十多万甚至几十万元。

·支持重写规则,能够根据域名、URL的不同,将HTTP请求分发到不同的后端服务器群组上。

·有内置的健康检查功能。如果Nginx Proxy后端的某台Web服务器宕机了,不会影响前端访问。

·节省带宽,支持GZIP压缩,可以添加浏览器本地缓存的Header。

·稳定性高,用于反向代理,宕机的概率微乎其微。通过跟踪一些已上线的网站和系统,我们发现在高并发的情况下,Nginx作为负载均衡器/反向代理宕机的次数几乎是零。

·目前它更重要的用途就是结合Lua用于一些高并发的Web应用场景。例如用作WAF或企业级API Gateway网关(例如Kong)等,还有就是会进行一些业务逻辑处理,甚至用于比较耗CPU的模板渲染的业务场景(例如京东的列表页/商品详情页)。