【系统部署知识汇总】第12章——Nginx分发算法

网友投稿 677 2022-11-06

【系统部署知识汇总】第12章——Nginx分发算法

【系统部署知识汇总】第12章——Nginx分发算法

Nginx 分发算法

本节内容01 分发算法介绍02常⽤分发算法03

集群分发算法介绍 01

• 分发算法:如何将⽤户请求按照⼀定的规律分发给业务服务器• 思考假如你有1000块钱,你怎么分配给身边的3个好朋友呢?

02 Nginx集群默认算法

upstream modulenginx的upstream⽬前⽀持4种⽅式的分配

1、轮询(默认)每个请求按时间顺序逐⼀分配到不同的后端服务器,如果后端服务器down掉,能⾃动剔除。 2、weight指定轮询⼏率,weight和访问⽐率成正⽐,⽤于后端服务器性能不均的情况。 3、ip_hash每个请求按访问ip的hash结果分配,这样每个访客固定访问⼀个后端服务器,可以解决session的问题。 4、fair(第三⽅)按后端服务器的响应时间来分配请求,响应时间短的优先分配。 5、url_hash(第三⽅)按访问url的hash结果来分配请求,使每个url定向到同⼀个后端服务器,后端服务器为缓存时⽐较有效。

Nginx业务服务器状态

每个设备的状态设置为:

1.down 表示单前的server暂时不参与负载2.weight 默认为1.weight越⼤,负载的权重就越⼤。3.max_fails :允许请求失败的次数默认为1.当超过最⼤次数时,返回proxy_next_upstream 模块定义的错误4.fail_timeout: 失败超时时间,在连接Server时,如果在超时时间之内超过max_fails指定的失败次数,会认为在fail_timeout时间内Server不可⽤。`默认为10s。`5.backup: 其它所有的⾮backup机器down或者忙的时候,请求backup机器。所以这台机器压⼒会最轻。

基于请求头的分发

1)基于host分发2)基于开发语言分发3)基于浏览器的分发4)

03 Nginx算法测试

• 实验机器: Vmware 虚拟机 2核4G• ⽹卡:桥接• 系统:centos7.5• 防⽕墙:关闭• Selinux:关闭• ⽹段:192.168.10.0/24主机名 IP ⻆⾊Master.ayitula.com 192.168.10.40 主分发器Backup.ayitula.com 192.168.10.41 备分发器Web01.ayitula.com 192.168.10.42 数据服务器1Web02.ayitula.com 192.168.10.43 数据服务器2

轮询分发

upstream web { server 192.168.10.42; server 192.168.10.43; } server { listen 80; server_name localhost; location / { proxy_pass } }

基于权重的分发

upstream web { server 192.168.10.42 weight=1; server 192.168.10.43 weight=2; } server { listen 80; server_name localhost; location / { proxy_pass } }

iphash

ip_hashupstream web { ip_hash; server 192.168.10.42; server 192.168.10.43;} server { listen 80; server_name localhost; location / { proxy_pass } }

基于host分发

{upstream web1 {server 192.168.10.42;}upstream web2 {server 192.168.10.43; }server { listen 80; server_name web1.com; location / { proxy_pass } } server {listen 80;server_name web2.com;location / { proxy_pass } }

基于开发语⾔分发

{ upstream php { server 192.168.10.42; } upstream html { server 192.168.10.43; } server { location ~* \.php$ { proxy_pass } } location ~* \.html$ { proxy_pass } }

基于浏览器分发

upstream elinks { server 192.168.10.42; }upstream chrome { server 192.168.10.43; }upstream any { server 192.168.10.42:81; }server { listen 80; server_name web1.com; location / { proxy_pass if ( $~* Elinks ) { proxy_pass } if ( $~* chrome ) { proxy_pass } }}

基于源ip分发

upstream bj.server { server 192.168.10.42; }upstream sh.server { server 192.168.10.43; }upstream default.server { server 192.168.10.42:81; }geo $geo { default default; 192.168.10.241/32 bj; 192.168.10.242/32 sh;}location / { proxy_pass }

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【系统部署知识汇总】第15章—— saltstack
下一篇:【小程序开发】第3章:小程序实战——微信小程序网络api的使用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~