Nginx负载均衡的配置,常用策略,场景,以及特点,放到这里是需要更细化的讲解,毕竟一期还没有做集群,而我们这一期做集群的时候,很多点要单独拿出来深入讲解,第一个轮询,默认的一个配置,简单也好理解,第二个权重,这个也很容易理解,打个比方,我们有两台服务器,第一台服务器的配置非常高,第二胎服务器的配置比较老,那么我想让更多的请求,打到服务器性能更高的服务器上,那么我们可以通过配置权重,然后就是ip hash,那ip hash很容易解释,根据请求的ip地址,进行一个hash,然后分配到指定的服务器上,url hash,第三方,是说这个负载均衡策略,只需要装一个nginx插件,他并不是nginx官方提供的,而是第三方提供的一个插件
fair翻译过来就是公平的,这个也是第三方提供的一个插件,后边会对这些点详细的讲,负载均衡的参数讲解,扩展知识点,也会放到这个章节中,后面呢继续,现在我们深入刚刚提到的这些点
第一个轮询,优点,实现简单,配置是最简单的,也不用装什么插件,而且也不用什么配置,默认就是轮询,他的缺点是不考虑每台服务器的处理能力,刚刚说的一台最牛的服务器,一台过时的老机器,那他的配置是这样的,upstream后面就是要被负载均衡的一个域名,后面的实战也领着大家一起来搞,第一个节点就是要负载在到哪个端口上,第二个节点也是要负载到那个端口上,一个是8080,一个是9080,当然我们课程是用了配置host的方式,因为考虑到小伙伴们,并不是每个人都有购买过域名,所以我们用host配置一个域名,来进行一个测试,那这个server配置成127.0.0.1:8080,也是ok的,这个根据你实际的网络场景,和是否用于域名情况
权重,优点考虑了每台服务器处理能力的不同,可以看一下,这个配置非常简单,那就是在默认的配置后面加一个weight,weight后边是一个数字,之前的分号是在端口后边,加完要把分号摞到最后边,权重也是实际的生产环境,最多的一种方式,很容易理解,实际的环境不能够保证,服务器的处理能力是相同的,例如说我某些服务,一些比较重的定时任务,我们可以把这种,有定时任务的机器配置低一些,因为它不仅仅支持一个线上的web访问服务,还支持了一个定时任务的服务,那当然定时任务也可以,通过分布式的zookeeper,来控制某些机器执行,特意强调一下,咱们课程中采用的就是权重配置负载均衡,权重策略,而weight默认是1,也就是说,对于轮询这种情况,没有加weight的时候,会认为他的weight是1,如果多个配置权重的节点,也就是说现在这个配置,有两个配置权重的节点,比较相对值,怎么理解呢,一个是10,一个是15,他只代表8080端口,访问的概率是9080的1.5倍,他只代表这个,并不是说,访问25次,15次访问到8080端口,会有10次访问到9080端口上,并不代表这个,他只代表一个相对值,相对访问负载均衡分配的,一个概率
ip hash优点呢能实现同一个用户访问同一个服务器,这个刚刚说的,我们tomcat集群做完之后,可以直接用ip hash来搞定,也不需要做单点登陆了,也不需要做分布式的session server了,缺点呢ip hash不一定平均,刚才也有讲,因为它依赖哈希值,怎么配置呢,在这个节点配置的大括号下面的第一行,加上ip_hash,然后分号,下面继续配要负载均衡的节点,然后继续看
url hash,第三方,优点是同一个服务访问同一个服务器,根据你请求的url进行哈希,大家理解一下,我们项目的产品详情页,和搜索出来的列表页,是两个服务,两个url,那么通过url哈希,可以保证,搜索出来的列表页呢,只打到一台机器上,因为这个url是固定的,所以他哈希出来的结果也是固定的,那么他自然会访问到同一台机器上,同样的产品详情页呢,是同样的道理,那他的缺点很明显,根据url hash,分配请求会不平均,请求频繁的url,会请求到同一个服务器上,这里做一个假设,访问我们网站的用户,现在都直接访问detail页,而没人去搜索了,因为出了几款爆款的产品,大家在微信,QQ上互相传这个产品,例如是一个非常实惠便宜的产品,那么其实我们网站的请求,全部都会打到产品详情页服务器上,这样就会对我们的分配请求,造成了不平均,他的实现也很简单,下面加上hash,然后$request_uri,当然这个是第三方,要装一个插件,并不是我们这一节的重点,我们这一节是使用权重的方式,并且权重也是应用范围最大级的方式
我们继续,fair也是第三方的,那他是做什么用的呢,特点,是按后端服务器的响应时间来分配请求,响应时间短的优先分配,这个很容易理解了他的配置也是非常简单的,在节点下边增加fair
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】 进行投诉反馈!