首页 > 系统相关 >部署Nginx负载均衡+动静分离的群集

部署Nginx负载均衡+动静分离的群集

时间:2024-08-19 13:51:58浏览次数:13  
标签:负载 请求 群集 Server Nginx 服务器 server com example

目录

一、Nginx应用

二、正向代理与反向代理

1.1正向代理

1.2反向代理

三、负载均衡

1.轮询(Round Robin)

2.最小连接数

3.IP  hash:

4.加权轮询

5.最少事件算法

6.一致性hash


一、Nginx应用

Nginx是一款非常优秀的HTTP服务器软件
支持高达50 000个并发连接数的响应
拥有强大的静态资源处理能力
运行稳定
内存、CPU等系统资源消耗非常低
目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,提升整个站点的负载并发能力

二、正向代理与反向代理

1.1正向代理

正向代理:代理的客户端,访问的是服务端

当客户端访问一台服务器有障碍,访问不到的时候,这时候就可以找一台可以访问到该服务器的另外一台服务器去代替他去访问,这台代替他去访问的服务器称之为代理服务器。然后客户端就可以把请求发送给代理服务器,然后通过代理服务器去访问目标服务器。由代理服务器将目标服务器的返回数据返回给客户端,客户端可以清楚目标服务器的地址,但是目标服务器并不清楚来自哪个客户端,他只知道来自哪个代理服务器。所以,正向代理可以屏蔽或者说隐藏掉客户端的信息。


它的工作原理就像一个跳板,简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我,从网站的角度,只在代理服务器来取内容的时候有一次记录,有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站

1.2反向代理

反向代理:代理的是客户端 做负载均衡

从代理中我们得知代理服务器是给客户端做代理的,他和客户端是一伙的。而反向代理呢其实就是和正向代理反过来,他和服务器是一伙的,它屏蔽掉了服务器的信息,经常用在多台服务器的分布式部署上,像一些大的网站,由于访问人数很多,就需要多台服务器来解决人数多的问题,这时这些服务器就由一个反向代理服务器来代理,客户端发来请求,先由反向代理服务器,然后按一定的规则分发到明确的服务器,而客户端不知道是哪台服务器。常常用nginx来作反向代理。
 

三、负载均衡

Nginx支持的几种常见的分流算法

1.轮询(Round Robin)

轮询算法是 Nginx 的默认分流算法。它按顺序将请求依次分配给每一台后端服务器,直到最后一台服务器,然后重新从第一台服务器开始。这种方法简单且均匀地分配了流量。

   数据流向:每个请求依次被分配到下一个服务器。假设有三台服务器(Server A、Server B、Server C),第一个请求被分配到 Server A,第二个请求分配到 Server B,第三个请求分配到 Server C,第四个请求又回到 Server A,依此类推。

   特点:请求均匀分布,无视服务器的当前负载和响应时间。

配置实例:

   upstream backend {
       server backend1.example.com;
       server backend2.example.com;
       server backend3.example.com;
   }

2.最小连接数

最少连接数算法将请求分配给当前活动连接数最少的服务器。这种算法适用于请求处理时间不均匀的情况,可以有效平衡服务器的负载。

   数据流向:每个请求被分配到当前连接数最少的服务器。例如,Server A 有 2 个连接,Server B 有 5 个连接,新的请求会被分配到 Server A。
   特点:动态均衡负载,适用于请求处理时间不一的场景。

配置实例:

upstream backend {
       least_conn;
       server backend1.example.com;
       server backend2.example.com;
       server backend3.example.com;
   }

3.IP  hash:

   IP 哈希算法通过计算客户端 IP 地址的哈希值,将请求始终分配给同一台服务器。适用于需要将特定客户端的请求固定在同一台服务器上的场景。

   数据流向:每个客户端的 IP 地址被哈希计算,然后根据哈希值将请求固定分配到某一台服务器。假设客户端 X 的哈希值指向 Server A,客户端 Y 的哈希值指向 Server B,则无论多少次请求,X 的请求总是流向 Server A,Y 的请求总是流向 Server B。
   特点:同一个客户端总是被分配到同一台服务器,有助于会话保持。

配置实例:

   upstream backend {
       ip_hash;
       server backend1.example.com;
       server backend2.example.com;
       server backend3.example.com;
   }
 

4.加权轮询

加权轮询算法允许为每台服务器设置权重,权重越大的服务器将会获得更多的请求。适用于服务器性能不均衡的情况。

   数据流向:根据服务器设置的权重值分配请求。假设 Server A 权重为 3,Server B 权重为 1,则 4 个请求中,3 个会被分配到 Server A,1 个会被分配到 Server B。
   特点:高权重服务器接收更多的请求,适用于服务器性能差异较大的场景。

配置实例:

 upstream backend {
       server backend1.example.com weight=3;
       server backend2.example.com weight=1;
       server backend3.example.com weight=2;
   }

5.最少事件算法

最少时间算法基于请求的响应时间,将请求分配给响应时间最短的服务器。这种算法在 Nginx 1.15.3 及以后版本中可用,适用于需要最大化响应速度的场景。

   数据流向:每个请求分配到响应时间最短或平均连接时间最短的服务器。假设 Server A 的响应时间较快,Server B 较慢,则新的请求更可能流向 Server A。
   特点:进一步优化了最少连接算法,适用于高负载环境下的动态负载均衡。

配置实例:

 upstream backend {
       least_time header;
       server backend1.example.com;
       server backend2.example.com;
       server backend3.example.com;
   }
 

6.一致性hash

   一致性哈希算法可以保证当集群中某台服务器故障时,只有部分请求会重新分配到其他服务器,而不是全部重新分配。这在缓存等场景中非常有用。

   数据流向:根据请求的某个特定参数(如 URL、Cookie 或其他 Header),进行哈希计算,将请求分配到哈希值对应的服务器。假设 Server A 和 Server B,参数 "foo" 的哈希值指向 Server A,参数 "bar" 的哈希值指向 Server B,则 "foo" 请求总是流向 Server A,"bar" 请求总是流向 Server B。
   特点:适应服务器节点变动,减少请求的重新分配,适合缓存敏感的场景。

配置实例:

  upstream backend {
       hash $request_uri consistent;
       server backend1.example.com;
       server backend2.example.com;
       server backend3.example.com;
   }

扩展:

扩展
Nginx 四层代理配置:
./configure --with-stream

和http同等级:所以一般只在http上面一段设置,
stream {
    
    upstream appserver {
        server 192.168.80.100:8080 weight=1;
        server 192.168.80.101:8080 weight=1;
        server 192.168.80.101:8081 weight=1;
    }
    server {
        listen 8080;
        proxy_pass appserver;
    }
}

http {
......

标签:负载,请求,群集,Server,Nginx,服务器,server,com,example
From: https://blog.csdn.net/shuaianm/article/details/141319469

相关文章

  • 【VMware VCF】VMware Cloud Foundation Part 07:管理工作负载域中的主机和集群。
    一个标准VMwareCloudFoundation实例中具有管理工作负载域和VI工作负载域两种类型,管理域有且只有一个,而VI域可以创建多个,每种工作负载域中可以具有多个vSphere集群,而每个集群中可以具有多台主机,有关工作负载域所支持的集群和主机数等限制请查看VMwareConfigurationMax......
  • NGINX 封禁 IP(IP 段)访问方法:修改配置文件或 .htaccess 文件
    方法一:修改Nginx配置文件nginx.confNginx配置访问IP可以修改 nginx.conf 文件,只需要在 server 中添加 allow 和 deny 的IP即可,如下:server{listen80;server_namelocalhost;allowall;deny123.123.123.123;error_page500......
  • 在高并发和高负载场景下,优化 HttpClient
    在高并发和高负载场景下,优化HttpClient的使用至关重要,因为不当的资源管理可能导致性能瓶颈、资源枯竭(如端口耗尽)、和请求延迟等问题。以下是一些优化建议:1.使用IHttpClientFactory管理HttpClient实例复用HttpMessageHandler:通过IHttpClientFactory创建HttpClient实......
  • Linux安装nginx1.26.2
    第一步:去官网下载指定的版本http://nginx.org/en/download.html第二步:解压压缩包:tar-zxvf  ......tar.gz第三步:编译nginx ./configure如果出现报错:./configure:error:theHTTPgzipmodulerequiresthezliblibrary.Youcaneitherdisablethemodulebyusing--......
  • nginx 源码安装
         aptinstallbuild-essentiallibpcre3libpcre3-devzlib1gzlib1g-devlibssl-devlibgd-devlibxml2libxml2-devuuid-devlibxslt-dev-yapt-getinstalllibgeoip-dev    ASAN_OPTIONS=symbolize=1./auto/configure\--with-pcre\--with......
  • nginx 限流,并且返回json格式数据
     限流一般有三种:计数器、漏桶算法、令牌桶算 限流配置http{limit_req_zone$binary_remote_addrzone=myRateLimit:10mrate=1r/s;... location/{limit_reqzone=myRateLimitburst=1nodelay;... 第1个参数:limit_req_zon......
  • 无涯 - 服务端性能测试实战 - Linux中IO系统负载瓶颈分析
    模拟100个进程不断的进行IO读写 执行后,看IO负载,呈上升趋势 查看进程的资源信息 iowait一直呈上升趋势,且系统资源sys也一直呈上升趋势 查找一直占用IO的进程PID  数入命令,htop此时可以看到CPU平均负载也呈上升趋势 将资源占用比较多的进程kill掉......
  • nginx配置下载服务器(具备权限验证)
    大多数场景中,下载可以使用nginx直接代理,但缺少权限验证,下述方式下载通过后端校验,成功后转发请求nginx进行下载操作。前端代码:window.location.href="http://192.168.80.128:8080/download_file?fileName=8042200341080001_01.zip";直接打开访问指定的下载文件路径(我是用请......
  • Nginx
    Nginx的作用代理正向代理是代理客户端的,让你能正常访问目的服务器。与之相反,反向代理是代理服务器的,让大量的请求均衡地访问到某一台服务器上。动静分离在我们的软件开发中,有些请求是需要后台处理的;有些请求是不需要后台处理的,比如说css、js这些文件请求,这些不需要经过后台......
  • nginx源码之Docker镜像制作
    1.下载nginx-1.26.2源码,并解压nginx源码下载:https://nginx.org/download/nginx-1.26.2.tar.gzmkdirdockerbuild&&cd dockerbuild wget https://nginx.org/download/nginx-1.26.2.tar.gztar-xzvf nginx-1.26.2.tar.gz2.干货Dockerfile#编译基础环境准备阶段FROMre......