欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

nginx实现负载均衡的6种方式

程序员文章站 2022-07-12 20:08:01
...

一、负载均衡

nginx负载均衡有6中方式(轮询,权重,ip_hash,最少连接least_conn,fair,url_hash),使用upsteam模块实现负载均衡

nginx负载均衡的意思大概是指多台服务器部署一个服务,但是这几台服务器的负载压力不同,处理程序的效率不同,负载均衡的作用就是按服务器可承受的负载将请求转发到对于的服务器中。 从而分担服务器的压力,让用户可以更快得到访问的数据。得到更好的体验。

例如设置使用nginx发布两个不同的html文件,使用nginx设置负载均衡,使用本地电脑访问nginx负载均衡的地址,刷新页面,将轮流显示两个页面。
页面1:
nginx实现负载均衡的6种方式
页面2:
nginx实现负载均衡的6种方式

1、轮询

将用户的请求按顺序依次转发到不同的服务器上
在nginx配置文件中server模块上增加以下内容

  	 upstream  test-server { #test-server的名字自己起
  	 #每一个server对应一个负载服务
       server    localhost:8080 ; 
       server    localhost:8081 ;
   }

2、权重

权重是基于轮询,利用weihgt设置服务的访问比例,此场景适用于服务器可承受的负载压力不一致时,例如A(192.168.42.174)服务器可承受1个访问请求,B(192.168.42.175)服务器可以承受两个访问请求,此时就可以使用weihgt方式设置比例为1:2。当有3个用户同时访问时,其中A服务器处理1个访问请求,B服务器处理2个访问请求,从而实现负载均衡。
nginx配置如下

  	 upstream  test-server { #test-server的名字自己起
  	 #每一个server对应一个负载服务
       server    192.168.42.174:8080 weight=1;
       server    192.168.42.175:8081 weight=2;
     }

3、ip_hash

ip_hash是将某台电脑的访问请求绑定到一个后端服务器上,如两个不一致的前端页面,设置ip_hash方式后,若访问到的时test2页面,则无论怎么刷新页面,至显示test2页面
nginx配置文件如下:

  	 upstream  test-server { 
  	   ip_hash;
       server    localhost:8080 ; 
       server    localhost:8081 ;
     }

ip_bash可与weight配合使用,使用ip_hash时,可以解决登录失效的情况

  	 upstream  test-server { 
  	   ip_hash;
       server    localhost:8080 weight=2;
       server    localhost:8081 weight=1;
     }

4、最少连接least_conn

将用户的请求转发到有最少处理请求的服务器中,若A目前处理了5个请求,B处理了10个请求,当我的电脑再次访问nginx时,则我的请求将会转发到A服务器中,least_conn可与weight配合使用
nginx配置文件如下:

   upstream  test-server {
       least_conn;
       server    localhost:8080;
       server    localhost:8081;
   }

nginx.conf配置文件内容详解

upstream  test-server {
   #least_conn;
   server    localhost:8080;
   server    localhost:8081;
   }
server {
    listen       80;
    server_name  localhost;
    location / {
    proxy_pass http://test-server;
        proxy_redirect default;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}


server {
    listen       8080;
    server_name  localhost;
    location / {
        root   html;
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

server {
    listen       8081;
    server_name  localhost;
    location / {
        root   html2;
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

后续更新