基础原理和算法解析 nginx的负载均衡算法有哪些( 四 )


Syntax: zone name [size];Default: —Context: upstream除此之外,各个负载均衡模块之间是要遵循一定的顺序的:
ngx_module_t *ngx_modules[] = {… …&ngx_http_upstream_hash_module,&ngx_http_upstream_ip_hash_module,&ngx_http_upstream_least_conn_module,&ngx_http_upstream_random_module,&ngx_http_upstream_keepalive_module,&ngx_http_upstream_zone_module,… …};注意,这个模块的顺序是从上到下执行的,而不是我们前面过滤模块的从下到上 。
可以看到,zone 模块在最后,也就是说,上面各个算法定义的参数和配置,最终 zone 模块会把这些配置放到共享内存里面生效 。
这一节介绍了负载均衡的原理以及四种负载均衡算法,也可以说是三种,就是轮询、哈希、最少连接数算法 。每一种算法都有各自的应用场景,rr 算法是最基础的负载均衡算法,在某些情况下其他算法失效的时候,会退化为 rr 算法 。
upstream 提供的变量先来介绍一组不含缓存的变量 。
upstream_addr上游服务器的 IP 地址,格式为可读的字符串,例如 127.0.0.1:8012upstream_connect_time与上游服务建立连接消耗的时间,单位为秒,精确到毫秒upstream_header_time:这个接收时间是会影响到 Nginx 的性能的,因为只有接收了 Header 才能决定下一步如何处理接收上游服务发回响应中 HTTP 头部所消耗的时间,单位为秒,精确到毫秒upstream_response_time接收完整的上游服务响应所消耗的时间,单位为秒,精确到毫秒upstream_http_头部从上游服务返回的响应头部的值upstream_bytes_received从上游服务接收到的响应长度,单位为字节upstream_response_length从上游服务返回的响应包体长度,单位为字节upstream_status上游服务返回的 HTTP 响应状态码 。如果未连接上,该变量值为 502upstream_cookie_名称从上游服务发回的响应头 Set-Cookie 中取出的 cookie 值upstream_trailer_名称从上游服务的响应尾部取到的值来看一下刚才的实战中我们的例子 。
在刚才的负载均衡实战中有一条日志的配置:
log_formatvarups'$upstream_addr $upstream_connect_time $upstream_header_time $upstream_response_time ''$upstream_response_length $upstream_bytes_received ''$upstream_status $upstream_http_server $upstream_cache_status';这条配置用到了我们上面提到的很多变量,对应输出的实际日志长这个样子:
127.0.0.1:8012 0.001 0.001 0.001 22 170 200 nginx/1.17.8 -大家可以对照日志格式看下分别代表什么意思,这里我就不细说了 。
好了,今天这篇文章跟大家介绍了什么是负载均衡,Nginx 主要是通过 upstream 模块来提供对应的功能的,又介绍了负载均衡的四种算法,最后介绍了 upstream 中提供的变量 。下一节课我们来说一说 Nginx 的反向代理 。


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: