洞察管理小程序实例的关键在于实现跨平台能力与数据安全,如何利用FinClip助力企业在数字化转型中既合规又高效?
677
2022-11-06
【系统部署知识汇总】第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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~