Nginx实战应用-负载均衡

波波烤鸭 2020-11-13 05:00:09
nginx 实战 应用 负载 均衡


本文我们继续来介绍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://dpb-bobokaoya-sm.blog.csdn.net/article/details/106274893

  1. [front end -- JavaScript] knowledge point (IV) -- memory leakage in the project (I)
  2. This mechanism in JS
  3. Vue 3.0 source code learning 1 --- rendering process of components
  4. Learning the realization of canvas and simple drawing
  5. gin里获取http请求过来的参数
  6. vue3的新特性
  7. Get the parameters from HTTP request in gin
  8. New features of vue3
  9. vue-cli 引入腾讯地图(最新 api,rocketmq原理面试
  10. Vue 学习笔记(3,免费Java高级工程师学习资源
  11. Vue 学习笔记(2,Java编程视频教程
  12. Vue cli introduces Tencent maps (the latest API, rocketmq)
  13. Vue learning notes (3, free Java senior engineer learning resources)
  14. Vue learning notes (2, Java programming video tutorial)
  15. 【Vue】—props属性
  16. 【Vue】—创建组件
  17. [Vue] - props attribute
  18. [Vue] - create component
  19. 浅谈vue响应式原理及发布订阅模式和观察者模式
  20. On Vue responsive principle, publish subscribe mode and observer mode
  21. 浅谈vue响应式原理及发布订阅模式和观察者模式
  22. On Vue responsive principle, publish subscribe mode and observer mode
  23. Xiaobai can understand it. It only takes 4 steps to solve the problem of Vue keep alive cache component
  24. Publish, subscribe and observer of design patterns
  25. Summary of common content added in ES6 + (II)
  26. No.8 Vue element admin learning (III) vuex learning and login method analysis
  27. Write a mini webpack project construction tool
  28. Shopping cart (front-end static page preparation)
  29. Introduction to the fluent platform
  30. Webpack5 cache
  31. The difference between drop-down box select option and datalist
  32. CSS review (III)
  33. Node.js学习笔记【七】
  34. Node.js learning notes [VII]
  35. Vue Router根据后台数据加载不同的组件(思考->实现->不止于实现)
  36. Vue router loads different components according to background data (thinking - & gt; Implementation - & gt; (more than implementation)
  37. 【JQuery框架,Java编程教程视频下载
  38. [jQuery framework, Java programming tutorial video download
  39. Vue Router根据后台数据加载不同的组件(思考->实现->不止于实现)
  40. Vue router loads different components according to background data (thinking - & gt; Implementation - & gt; (more than implementation)
  41. 【Vue,阿里P8大佬亲自教你
  42. 【Vue基础知识总结 5,字节跳动算法工程师面试经验
  43. [Vue, Ali P8 teaches you personally
  44. [Vue basic knowledge summary 5. Interview experience of byte beating Algorithm Engineer
  45. 【问题记录】- 谷歌浏览器 Html生成PDF
  46. [problem record] - PDF generated by Google browser HTML
  47. 【问题记录】- 谷歌浏览器 Html生成PDF
  48. [problem record] - PDF generated by Google browser HTML
  49. 【JavaScript】查漏补缺 —数组中reduce()方法
  50. [JavaScript] leak checking and defect filling - reduce() method in array
  51. 【重识 HTML (3),350道Java面试真题分享
  52. 【重识 HTML (2),Java并发编程必会的多线程你竟然还不会
  53. 【重识 HTML (1),二本Java小菜鸟4面字节跳动被秒成渣渣
  54. [re recognize HTML (3) and share 350 real Java interview questions
  55. [re recognize HTML (2). Multithreading is a must for Java Concurrent Programming. How dare you not
  56. [re recognize HTML (1), two Java rookies' 4-sided bytes beat and become slag in seconds
  57. 【重识 HTML ,nginx面试题阿里
  58. 【重识 HTML (4),ELK原来这么简单
  59. [re recognize HTML, nginx interview questions]
  60. [re recognize HTML (4). Elk is so simple