一、上游模块介绍Nginx的负载均衡功能依赖于NGX _ HTTP _ Upseam _ Module。支持的代理方法包括proxy _ pass、fastcgi _ pass、UWSGI _ pass、SCGI _ pass、memcached _ pass和grpc_pass。ngx_http_upstream_module模块允许Nginx定义一组或多组服务组,可以通过proxy_pass将网站请求发送到相应上游组的预定义名称。上游模块能实现负载均衡,其实隐含了一个重要的功能,就是冗余。当web节点出现故障时,如果配置了上游,它可以自动切换到正常工作的节点。
二。负载均衡算法介绍调度算法一般分为两类:第一类是静态调度算法,即负载均衡器按照自己的规则进行分配,不考虑后端节点服务器的情况。第二种是动态调度算法,即负载均衡器会根据后端节点的当前状态来决定是否分发请求。
1.循环调度是循环调度的默认调度算法,也是静态调度算法。客户端请求序列将客户端请求逐个分发到不同的后端节点服务器,相当于LVS中的rr算法。如果后端节点服务器宕机(nginx默认只检测端口80)。关闭的服务器将自动从节点服务器池中删除,因此客户端的用户访问不会受到影响。新请求将被分配给生产中的服务器。
2.权重轮询wrr是权重循环调度,一种静态调度算法。给rr轮循算法加权重,即权重轮循算法。使用该算法时,权重与用户访问成正比。权重越大,转发的请求就越多。可以根据服务器的配置和性能指定权重值,有效解决了新老服务器性能不均衡带来的请求分配问题。
3.IP hash ip_hash是一种静态调度算法。根据客户端IP的散列结果来分配每个请求。当一个新的请求到达时,它的客户机IP被散列算法散列成一个值。在后续的客户端请求中,只要客户端IP的哈希值相同,就会分配给同一个服务器。该调度算法可以解决动态网页的会话共享问题。但是,它有时会导致请求分布不均匀,即无法保证1:1的负载平衡。因为国内大部分公司都是NAT模式,多个客户端会对应一个外部IP,所以这些客户端都会被分配到同一个节点服务器上,造成请求分布不均。LVS负载均衡的-P参数和keepalived配置中的persistence_timeout 50参数类似于Nginx中的ip_hash参数,它们的作用是解决动态网页的会话共享问题。
4.最小连接数least_conn是一种动态调度算法,它会根据后端节点的连接数来决定分配,分配给连接数少的机器。
5.最短响应时间最短响应时间(fair)调度算法是一种动态调度算法,它会根据后端节点服务器的响应时间来分配请求,响应时间端优先分配。这是一种更智能的调度算法。这种算法只能根据页面大小和加载时间来均衡负载,即根据后端服务器的响应时间来分配请求,优先考虑响应时间短的请求。NGX本身不支持公平调度算法。如果需要使用这种调度算法,必须下载Nginx的相关模块upstream_fair。
6.url_hash算法url_hash算法是一种动态调度算法。根据被访问URL的哈希结果分发请求,使得每个URL都被定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率命中率。(多用于后端服务器缓存的场景)Nginx本身不支持rul_hash。如果需要使用这种调度算法,必须安装Nginx的哈希模块软件包。
三。配置示例1。配置示例模板
上游后端{服务器backend1.example.com权重= 5;# execute realserver,可以加权为服务器backend2.example.com:8080;服务器UNIX:/tmp/back end 3;服务器backup1.example.com:8080备份;#backup表示该节点为热备节点,当主动节点出现故障时,启用服务器backup2.example.com:8080关闭;#离线服务器,可以配置}服务器{ listen80当真正的服务器需要维护时。#听着,server_name这些正常配置server _ name www . test . com;location/{ proxy _ pass http://back end;# #反向代理执行定义的上游名称}}2。权重轮询配置示例
上游显示{服务器192.168.0.141权重= 1;服务器192.168.0.142权重= 2;}3.ip_hash配置示例
上游显示{ ip _ hash服务器192 . 168 . 0 . 141;服务器192 . 168 . 0 . 142;}4.公平配置的示例
上游显示{公平;服务器192 . 168 . 0 . 141;服务器192 . 168 . 0 . 142;}5.least_conn配置示例
上游显示{ least _ conn服务器192 . 168 . 0 . 141;服务器192 . 168 . 0 . 142;}6.url_hash配置示例
上游显示{服务器192 . 168 . 0 . 141;服务器192 . 168 . 0 . 142;哈希$ request _ urihash _ method crc32}
四。负载平衡效果的显示
1.部署两台web服务器。分别在s142主机和s142主机上部署两个Tomcat服务。服务访问页面如下所示:
2.配置nginx服务上游显示{ ip _ hash#使用ip_hash负载均衡调度算法server 192 . 168 . 10 . 141:8080;服务器192 . 168 . 10 . 142:8080;}服务器{ listen80#听着,server_name这些正常配置server _ name www . test . com;access _ log/var/log/nginx/test . access . log;location/{ proxy _ pass http://show;# #反向代理执行定义的上游名称}}
3.配置域名解析。这是一次模拟测试。使用测试域名,可以通过修改hosts文件(C:\ Windows \ System32 \ drivers \ etc \ hosts)直接通过域名访问。实际应用需要申请域名并解析。
4.访问域名验证
5.在s142中停止web服务之后,在再次访问停止的web服务之后,应用自动切换到s141节点。其实上行模块可以作为负载均衡,更重要的是可以实现冗余。如果部署在单机上的web应用出现故障,无法访问服务,可以通过上游实现多节点冗余。
6.将调度算法修改为轮询
综上所述,本文对Nginx负载均衡的上游模块的介绍和使用已经介绍到这里了。关于Nginx负载均衡上游模块的更多信息,请搜索主机频道zhujipindao之前的文章。或者继续浏览下面的相关文章。希望大家支持主机频道zhujipindao。以后多来com!
评论前必须登录!
注册