Nginx【Nginx场景实践(代理服务、 反向代理、负载均衡、负载均衡算法)】(八)-全面详解(学习总结---从入门到深化)_负载均衡

 

目录

Nginx场景实践_代理服务

 Nginx场景实践_反向代理

Nginx场景实践_负载均衡 

Nginx场景实践_负载均衡算法


 

Nginx场景实践_代理服务

Nginx【Nginx场景实践(代理服务、 反向代理、负载均衡、负载均衡算法)】(八)-全面详解(学习总结---从入门到深化)_负载均衡_02

正向代理 

正向代理,是在用户端的。比如需要访问某些国外网站,我们可能需要购买vpn。

正向代理最大的特点:

1 客户端非常明确要访问的服务器地址;

2 服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;

3 正向代理模式屏蔽或者隐藏了真实客户端信息。

Nginx【Nginx场景实践(代理服务、 反向代理、负载均衡、负载均衡算法)】(八)-全面详解(学习总结---从入门到深化)_负载均衡_03

 

反向代理 

客户端给服务器发送的请求,nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。此时请求的来源 也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了,nginx扮演的就是一个反向代理角色。 反向代理,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。

Nginx【Nginx场景实践(代理服务、 反向代理、负载均衡、负载均衡算法)】(八)-全面详解(学习总结---从入门到深化)_服务器_04

 

实时效果反馈

1. 正向代理用途描述错误的是_____。

A 可以做缓存,加速访问资源

B 对客户端访问授权,上网进行认证

C 负载均衡

D 为在防火墙内的局域网客户端提供访问Internet的途径,如 google网站 

 Nginx场景实践_反向代理

Nginx【Nginx场景实践(代理服务、 反向代理、负载均衡、负载均衡算法)】(八)-全面详解(学习总结---从入门到深化)_分布式_05

单体架构

Nginx【Nginx场景实践(代理服务、 反向代理、负载均衡、负载均衡算法)】(八)-全面详解(学习总结---从入门到深化)_负载均衡_06

单体架构问题:

  • 复杂性高:模块多,模块边界模糊,代码质量参差不齐,每次修改代码都心惊胆战
  • 技术债务:随着时间的推移,需求变更和人员迭代,会逐渐形成应用程序的技术债务,并且 越积越多
  • 部署频率低:随着代码增多,构建和部署的时间也会增多,每次部署都要重新部署整个项目 可靠性差:某个应用有bug,可能会导致整个应用崩溃
  • 扩展能力受限:单体应用只能作为一个整体应用进行扩展,无法根据业务模块的需要进行伸缩 

 反向代理设置指令

学习Nginx服务器的反向代理服务,要涉及与后端代理服务器相关 的配置指令比较重要,是为客户端提供正常Web服务的基础,大家 应该熟练掌握尤其是proxy_pass指令,在实际应用过程中需要注意 一些配置细节,需要小心使用。

proxy_pass指令

该指令用来设置被代理服务器的地址,可以是主机名称、IP地址加端口号等形式。

语法结构: 

proxy_pass URL;

参数:

URL为要设置的被代理服务器的地址,包含传输协议、主机名称或P地址加端口号、URI等要素。传输协议通常是"http"或 者"https://"。

示例: 

server{
   ....
   listen 80;
   server_name *.*;
   location / {
     proxy_pass http://192.168.66.101:8080;
   }
}

实时效果反馈

1. 在Nginx技术中实现反向代理核心指令__。

A proxy_pass

B listen

C location

D upstream

2. 下列描述反向代理优点错误的是_____。

A 提高访问速度

B 防火墙作用

C 增加并发

D 处理连接数量不大时,每次连接消耗少量资源

Nginx场景实践_负载均衡 

Nginx【Nginx场景实践(代理服务、 反向代理、负载均衡、负载均衡算法)】(八)-全面详解(学习总结---从入门到深化)_分布式_07

什么是负载均衡 

负载均衡是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。

没有负载均衡的 web 架构 

Nginx【Nginx场景实践(代理服务、 反向代理、负载均衡、负载均衡算法)】(八)-全面详解(学习总结---从入门到深化)_nginx_08

有负载均衡web架构: 

Nginx【Nginx场景实践(代理服务、 反向代理、负载均衡、负载均衡算法)】(八)-全面详解(学习总结---从入门到深化)_负载均衡_09

upstream指令 

upstream块不属于虚拟主机,只能在http块里配置,它定义了在反 向代理时Nginx需要访问的后端服务器集群和负载均衡策略。

语法格式:

upstream back_end {           # upstream需要一个名字
   server 192.168.66.100 max_conns=2 fail_timeout=1s;
   server 192.168.66.101 weight = 1;
   server 192.168.66.102 weight = 1;
}
server{
 lisetn 80;
 server_name *.*;
 location / {
     proxy_set_header Host $host; #转发原始请求的host头部
     proxy_pass http://back_end;   #转发到upstream块定义的服务器集群。
 }
}

upstream参数:

  • max_conns 节点的最大连接数
  • slow_start 缓慢启动时间
  • down 节点下线
  • backup 备用节点
  • max_fails 允许的最大失败数
  • fail_timeout 超过最大失败数后的等待时间

实时效果反馈

1. 负载均衡主要解决____问题。

A 高可用

B 高性能 

C 安全

D 高并发

2. 实现负载均衡机制核心指令是____。

A location

B upstream

C proxy_pass

D cache

Nginx场景实践_负载均衡算法

Nginx【Nginx场景实践(代理服务、 反向代理、负载均衡、负载均衡算法)】(八)-全面详解(学习总结---从入门到深化)_nginx_10

轮询(默认) 

轮询方式,依次将请求分配到各个后台服务器中,默认的负载均衡方式。

适用于后台机器性能一致的情况。 挂掉的机器可以自动从服务列表中剔除。

upstream bakend {    
 server 192.168.0.14;    
 server 192.168.0.15;    
}

 轮询加权重

根据权重来分发请求到不同的机器中,指定轮询几率,weight和访 问比率成正比,用于后端服务器性能不均的情况。

upstream bakend {    
 server 192.168.0.14 weight=10;    
 server 192.168.0.15 weight=10;    
}

IP_hash

每个请求按访问IP的哈希结果分配,使来自同一个IP的访客固定访 问一台后端服务器,并且可以有效解决动态网页存在的session共享 问题。俗称IP绑定。

Nginx【Nginx场景实践(代理服务、 反向代理、负载均衡、负载均衡算法)】(八)-全面详解(学习总结---从入门到深化)_运维_11

 

upstream backServer{
   server 127.0.0.1:8080 ;
   server 127.0.0.1:8081 ;
   ip_hash;
 }

server {
       listen       80;
       server_name www.itmayiedu.com;
       location / {
         ### 指定上游服务器负载均衡服务器
           proxy_pass http://backServer;
           index index.html index.htm;
       }
   }

 url_hash

按访问的URL的哈希结果来分配请求,使每个URL定向到一台后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身不支持url_hash,如果需要这种调度算法,则必须安装Nginx的hash软 件包。

Nginx【Nginx场景实践(代理服务、 反向代理、负载均衡、负载均衡算法)】(八)-全面详解(学习总结---从入门到深化)_服务器_12

 fair

比 weight、ip_hash更加智能的负载均衡算法,fair算法可以根据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服 务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身 不支持fair,如果需要这种调度算法,则必须安装upstream_fair模块。

实时效果反馈

1. Nginx负载均衡默认的算法是______。

A fair

B ip_hash

C url_hash

D 轮询