nginx默认有负载均衡功能,用于从upstream
模块定义的后端服务器列表中选取一台服务器接受用户的请求。
默认包含轮询、权重、ip_hash和least_conn1四种策略。
fair
采用的不是内建负载均衡使用的轮换的均衡算法,而是可以根据页面大小、加载时间长短智能的进行负载均衡。
由于不是默认策略,在安装时需要重新编译,因此通常认为Yum
版安装的Nginx
无法添加此模块。
一般下载位置放在nginx安装目录下,我的是/usr/local/nginx-1.17.2/
。以下用变量NGINX_SOURCE_DIR
表示。
zip
# NGINX_SOURCE_DIR: Nginx源码目录
NGINX_SOURCE_DIR=/usr/local/nginx-1.17.2/ &&\
wget https://github.com/gnosek/nginx-upstream-fair/archive/master.zip -P $NGINX_SOURCE_DIR && \
unzip $NGINX_SOURCE_DIR/master.zip -d $NGINX_SOURCE_DIR &&\
mv $NGINX_SOURCE_DIR/nginx-upstream-fair-master $NGINX_SOURCE_DIR/nginx-upstream-fair
源码
# NGINX_SOURCE_DIR: Nginx源码目录
cd $NGINX_SOURCE_DIR && git clone https://github.com/gnosek/nginx-upstream-fair.git
基础编译参数参考Linux安装Nginx,而添加模块,只需要增加--add-module
即可,由于上一步将nginx-upstream-fair
放在Nginx源码根目录下,因此可以使用相对路径:
./configure <其他参数> --add-module=nginx-upstream-fair && make && make install
使用非常简单,只需要在各个server
上方添加fair
关键字即可。
upstream demo-upstream-fair {
fair;
server XXX.com;
}
安装过程中碰到了编译错误,大意是ngx_http_upstream_fair_module.c的543行没有找到default_port
这个变量,然后参考issues/30解决了。
默认为轮询 ↩︎