面试题Nginx负载均衡算法是如何实现的?Nginx有哪些负载均衡策略?为什么Nginx需要动静分离?面试官的心理分析主要看应聘者是否熟悉Nginx的基本原理,在实际业务场景中选择合适的负载均衡(转发)策略。其次,在网站建设方面,了解Nginx的优势和劣势,能够想办法弥补其不足,让企业的业务达到最大限度的访问状态。问题分析1、Nginx负载均衡算法是如何实现的?策略是什么?负载均衡是Nginx常用的功能。当一个服务器单位时间内的访问量越大,服务器的压力就越大,当超过自身的容量时,服务器就会崩溃。为了避免服务器崩溃,大家会通过负载均衡来分担服务器压力。形成相应服务器的集群。用户访问时,首先访问一个转发服务器,然后转发服务器将访问分发给压力较小的服务器。Nginx负载均衡实现了以下五种策略:(1)轮询(默认)每个请求按时间顺序一一分配给不同的后端服务器。如果后端服务器宕机,可以自动排除故障系统。upstreambackserver{server192.168.0.12;server192.168.0.13;}(2)权重weightweight的值越大,分配的访问概率就越高。主要用于各个后端服务器性能不均衡的情况。二是在master和slave的情况下设置不同的权重,以合理有效的利用主机资源。upstreambackserver{server192.168.0.12weight=2;server192.168.0.13weight=8;}权重越高,被访问的概率越大,如上例,分别为20%和80%。(3)ip_hash(IPbinding)每个请求根据访问IP的hash结果进行分配,使同一个IP的访问者访问一个后端服务器,可以有效解决动态网页存在的session共享问题upstreambackserver{ip_hash;server192.168.0.12:88;server192.168.0.13:80;}(4)fair(第三方插件)必须安装upstream_fair模块。与weight、ip_hash等更智能的负载均衡算法相比,fair算法可以根据页面大小和加载时间智能地进行负载均衡,优先响应时间短的负载。upstreambackserver{serverserver1;serverserver2;fair;}哪个服务器的响应速度最快,就把请求分配给那个服务器。(5)url_hash(第三方插件)必须安装Nginx的hash包,根据访问的URL的hash结果分配请求,使每个URL指向同一个后端服务器,可以进一步提高效率后端缓存服务器。upstreambackserver{serversquid1:3128;serversquid2:3128;hash$request_uri;hash_methodcrc32;}2、为什么要分离动态和静态?Nginx是目前最火的web容器。网站优化的重点在于静态网站,静态网站的重点在于动静分离。动静分离是让动态网站中的动态网页按照一定的规则区分不变的资源和频繁变化的资源。它执行缓存操作。让静态资源只使用静态资源服务器,使用动态服务器Nginx静态处理能力强,动态处理能力不足。因此,企业普遍采用动静分离技术。对于图片、js、css等文件等静态资源,我们缓存在反向代理服务器nginx中。这样,当浏览器请求一个静态资源时,代理服务器nginx可以直接处理,而不需要将请求转发给后端服务器tomcat。如果将用户请求的servlet、jsp等动态文件转发给Tomcat服务器处理,从而实现动静分离。这也是反向代理服务器的一个重要作用。
