飞道的博客

Nginx实战应用-负载均衡

503人阅读  评论(0)

  本文我们继续来介绍nginx的实际操作,本文来介绍下Nginx的负载均衡的实现。

负载均衡


  大家看看上面这个负载均衡的结构图,大家会发现其实和我们上节课讲的反向代理很像是不是?真实服务器如果有多个是不是就是我们上面的结构图了呀?所以什么事负载均衡呢?其实就是在反向代理的基础上通过各种负载策略将用户的请求转发到对应的真实服务上。

网络负载均衡的大致原理是利用一定的分配策略将网络负载平衡地分摊到网络集群的各个操作单元上,使得单个重负载任务能够分担到多个单元上并行处理,使得大量并发访问或数据流量分担到多个单元上分别处理,从而减少用户的等待响应时间
upstream是Nginx的HTTP Upstream模块,这个模块通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡

Nginx负载均衡实战

1.创建三个web服务

  在上篇文章的基础上我们再创建两个服务,三个服务的端口分别是 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.响应时间:公平地按照服务器的响应时间来分配请求,意味着后端响应时间最短的优先分配


检查配置文件提示无法识别 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

5.url_hash:和iphash类似,urlhash是按照访问url的hash结果来分配请求,使相同的url访问到同一个服务器


同样也需要安装第三方的插件


转载:https://blog.csdn.net/qq_38526573/article/details/106274893
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场