在使用 node 作为服务器时通常会遇到 gzip 编码,静态文件,HTTP 缓存,SSL 处理,负载平衡和反向代理等问题、 虽然 node 都有它的解决方案,但是性能相较于 ngnix 还是要差一点。并且可以通过 nginx 强大的缓存来节省您网站的流量从而提高网站的加载速度。
本文主要是关于 ngnix 在负载均衡方面的记录,方便以后的查阅。
负载均衡
负载均衡有多重方案,可以按照实际情况选择。
轮询(默认)
按照配置的顺序,将客户端的请求依次分发到各个服务器中去。配置如下:
1 | ... |
最少连接
请求会被分发到连接数少的服务器中去,配置如下:
1 | upstream server_pool { |
基于权重
可以根据服务器的性能给服务器设置权重,权重越高,被分配的请求数也越多。配置如下:
1 | upstream server_pool { |
设置weight=2
后,每 3 个请求,第一个服务器会收到两个,第二个服务器会收到一个。
基于 IP
前几种方法中,同一客户端的请求可能会被到不同的服务器中去,对于某些需要涉及到 session 的情况会变得复杂,可采取基于 IP 的解决方案,同一 IP 的请求会被分配到同一个服务器中去。配置如下:
1 | upstream server_pool { |
说明一点,基于权重的负载均衡和基于 IP 的负载均衡可以组合在一起使用。
fair(第三方模块:nginx-upstream-fair)
按服务器的响应时间来分配请求,响应时间短的优先分配。配置如下:
1 | upstream server_pool { |
url_hash(第三方模块:nginx-module-url)
按访问 url 的 hash 结果来分配请求,使每个 url 定向到同一个服务器,服务器为缓存时比较有效。配置如下:
1 | upstream server_pool { |
单个设备状态设置
1 | upstream server_pool { |