Nginx 负载均衡
Nginx 负载均衡
Nginx 七层负载均衡
Example Configuration
示例:
Nginx 四层负载均衡
Example Configuration
示例:
四七层负载均衡对比
- 四层负载均衡仅能转发TCP/IP协议、UDP协议、通常用来转发端口,如:tcp/22、udp/53;
- 四层负载均衡可以用来解决七层负载均衡端口限制问题;(七层负载均衡最大使用65535个端口号)
- 四层负载均衡可以解决七层负载均衡高可用问题;(多台后端七层负载均衡能同事的使用)
- 四层的转发效率比七层的高得多,但仅支持tcp/ip协议,不支持http和https协议;
- 通常大并发场景通常会选择使用在七层负载前面增加四层负载均衡。
Nginx负载均衡调度算法
详情参考:http://nginx.org/en/docs/http/ngx_http_upstream_module.html
调度算法 | 概述 | 简称 |
---|---|---|
轮询 | 按时间顺序逐一分配到不同的后端服务器(默认)不考虑实际负载或实际配置,所有服务器都是平等,平均负载请求 | rr |
weight | 加权轮询,weight值越大,分配到的访问几率越高 | wrr |
ip_hash | 每个请求按访问IP的hash结果分配,这样来自同一IP的客户端固定会访问同一个后端服务器 | - |
url_hash | 按照访问URL的hash结果来分配请求,每次相同的URL都会定向到同一个后端服务器 | - |
consistent_hash | 一致性哈希算法,需要额外的模块包 | - |
least_conn | 最少连接数,那个机器连接数少就分发 | lc |
wlc | 加权最小连接 | wlc |
部分配置示例:
扩展(一致性哈希算法)
一致性hash用于对hash算法的改进,后端服务器在配置的server的数量发生变化后,同一个upstream server接收到的请求会的数量和server数量变化之间会有变化。尤其是在负载均衡配置的upstream server数量发生增长后,造成产生的请求可能会在后端的upstream server中并不均匀,有的upstream server负载很低,有的upstream server负载较高,这样的负载均衡的效果比较差,可能对upstream server造成不良的影响。由此,产生了一致性hash算法来均衡。
:information_source: 详细介绍参考:https://baike.baidu.com/item/%E4%B8%80%E8%87%B4%E6%80%A7%E5%93%88%E5%B8%8C/2460889?fr=aladdin
在 nginx 中的应用:
参考链接
- ngx_http_upstream_module:http://nginx.org/en/docs/http/ngx_http_upstream_module.html
- upstream-keepalive:http://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive
- ngx_stream_core_module:http://nginx.org/en/docs/stream/ngx_stream_core_module.html
- ngx_stream_upstream_modulehttp://nginx.org/en/docs/stream/ngx_stream_upstream_module.html
- 一致性哈希:https://baike.baidu.com/item/%E4%B8%80%E8%87%B4%E6%80%A7%E5%93%88%E5%B8%8C/2460889?fr=aladdin