springboot+nginx配置集群

本文介绍了Nginx的基本概念,包括正向代理和反向代理的区别,并详细阐述了如何配置Nginx实现SpringBoot应用的集群,包括添加服务器、指定权重和使用ip_hash等策略。同时,提到了不同分配方式以及测试验证过程。
摘要由CSDN通过智能技术生成

Nginx简介

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器

Nginx同Apache一样都是一种WEB服务器。基于REST架构风格,以统一资源描述符(Uniform Resources Identifier)URI或者统一资源定位符(Uniform Resources Locator)URL作为沟通依据,通过HTTP协议提供各种网络服务。

正向代理和反向代理

正向代理

    代理客户
    隐藏真实的客户,为客户端收发请求,使真实客户端对服务器不可见
    一个局域网内的所有用户可能被一台服务器做了正向代理,由该台服务器负责 HTTP 请求

反向代理

    代理服务器
    隐藏了真实的服务器,为服务器收发请求,使真实服务器对客户端不可见
    负载均衡服务器,将用户的请求分发到空闲的服务器上
    意味着用户和负载均衡服务器直接通信,即用户解析服务器域名时得到的是负载均衡服务器的 IP

共同点

    都是做为服务器和客户端的中间层。
    都可以加强内网的安全性,阻止 Web 攻击。
    都可以做缓存机制,提高访问速度。

区别

    正向代理其实是客户端的代理,反向代理则是服务器的代理
    正向代理中,服务器并不知道真正的客户端到底是谁;而在反向代理中,客户端也不知道真正的服务器是谁。
    作用不同。正向代理主要是用来解决访问限制问题;而反向代理则是提供负载均衡、安全防护等作用。

1. 启动两个server

首先启动两个springboot的应用,例如192.168.10.207:11003和192.168.10.110:11003
2. 没有集群的配置   

upstream  wowdata{
      server 192.168.10.207:11003;
    }
    server {  
      listen 80;
      server_name  wowdata.top;
      location / {  
        proxy_pass http://wowdata;  
        proxy_redirect default;  
      }  
      error_page   500 502 503 504  /50x.html;  
      location = /50x.html {  
            root   html;
      }
    }
3. 集群配置

现在我们让他也转发到192.168.10.207:11003,只需要在upstream里面把另外一个server加进来就行了

    upstream  mytest{
      server 192.168.10.207:11003;
      server 192.168.10.110:11003;
    }

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            proxy_pass http://mytest;
            proxy_connect_timeout 3s;
            proxy_read_timeout 5s;
            proxy_send_timeout 3s;  
            index  index.html index.htm;
        
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

4. 指定权重

考虑到每个服务器的性能可能不同,承载量必然也不同,可以给每个服务器指定一个weight(权重),权重的数值越大,被分配到的几率也更大,例如weight=2是weight=1访问量的两倍。

上面不写weight的时候,实际上系统默认所有server的weight都是1,也就是相同权重。

    upstream  wowdata{
      server 192.168.10.207:11003 weight=1;
      server 192.168.10.110:11003 weight=2;  
    }
     
    #server部分都不用改
    server { ... }

5. ip_hash,给用户固定某个server

这样可以给某个ip固定一个server,解决后端server的session不共享、缓存等问题。
       不过如果某个server宕掉,用户还是会被分配过去,而前面的方式则不会存在这个问题,所以还是不建议采用这种方式。session、缓存的问题可以用redis等方案来解决。

    upstream  wowdata{
      ip_hash;
      server 192.168.10.207:11003;
      server 192.168.10.110:11003;  
    }

6. 其他分配的方式

除了随机分配、ip_hash,还有fair(根据响应时间分配)、url_hash(根据url的hash来分配)等方式

 

测试 

配置好了之后启动 nginx

输入 http://localhost/process/login?username=admin&password=123465

因为我两台服务器的登录密码是不一样,所以有一台 权重为 1 的 会登录成功,权重为 2的登录失败.

测试后的结果登录成功 一次

然后两次登录失败


7. server的其他状态

 上面说到的weight是其中一个状态
        类似的的状态还有:
1、down 表示单前的server暂时不参与负载
2、weight 权重,默认为1。 weight越大,负载的权重就越大。
3、max_fails 允许请求失败的次数默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误
4、fail_timeout max_fails次失败后,暂停的时间。
5、backup 备用服务器, 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值