在上篇文章的基础上我们再创建两个服务,三个服务的端口分别是 8081 8082 8083.
2.Nginx配置
upstream块
upstream name{…}
upstream gupao{
server 192.168.12.1:8081;
server 192.168.12.1:8082;
server 192.168.12.1:8083;
}
server {
location / {
proxy_pass http://gupao;
}
}
server块
语法:
server address [parameters]
| 组成 | 说明 |
| — | :-- |
| server | 必选 |
| address | 必选 可以是主机名、域名、ip,也可以指定端口号 |
| parameters | 可选
down:表示当前server已停用
backup:表示当前server是备用服务器,只有其它非backup后端服务器都挂掉了或者很忙才会分配到请求
weight:表示当前server负载权重,权重越大被请求几率越大。默认是1
max_fails和fail_timeout一般会关联使用,如果某台server在fail_timeout时间内出现了max_fails次连接失败,那么Nginx会认为其已经挂掉了,从而在fail_timeout时间内不再去请求它,fail_timeout默认是10s,max_fails默认是1,即默认情况是只要发生错误就认为服务器挂掉了,如果将max_fails设置为0,则表示取消这项检查。 |
Upstream模块调度算法
1.轮询(默认): 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
2.Ip_hash: 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题
3.权重:即可以指定轮询比率,weight和访问几率成正比,主要应用于后端服务器异质的场景下
4.响应时间:公平地按照服务器的响应时间来分配请求,意味着后端响应时间最短的优先分配
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200522104319723.png?x-oss-process=image/watermar
k,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4NTI2NTcz,size_16,color_FFFFFF,t_70)
检查配置文件提示无法识别 fair 这是因为 fair属于第三方模块,官方安装包中并没有。
https://github.com/gnosek/nginx-upstream-fair 官方下载
然后解压缩
unzip nginx-upstream-fair-master.zip
未安装Nginx
切换到Nginx目录执行一下操作
配置:
./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --add-module=/home/nginx-upstream-fair-master
编译安装
make && make intstall
安装过Nginx
切换到Nginx目录执行一下操作
配置
./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --add-module=/home/nginx-upstream-fair-master
编译
make
复制Nginx
cp objs/nginx /usr/local/nginx/nginx
ginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --add-module=/home/nginx-upstream-fair-master
编译
make
复制Nginx
cp objs/nginx /usr/local/nginx/nginx