首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx实战应用-负载均衡

Nginx实战应用-负载均衡

作者头像
用户4919348
发布2020-05-25 16:56:25
5850
发布2020-05-25 16:56:25
举报
文章被收录于专栏:波波烤鸭波波烤鸭

  本文我们继续来介绍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访问到同一个服务器

在这里插入图片描述
在这里插入图片描述

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-05-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 负载均衡
    • Nginx负载均衡实战
      • 1.创建三个web服务
      • 2.Nginx配置
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档