美文网首页Nginx高端成长之路集群高可用性
nginx配置集群,以springboot为例

nginx配置集群,以springboot为例

作者: 老胡聊聊天 | 来源:发表于2019-02-15 18:24 被阅读3次

1. 启动两个server

首先启动两个springboot的应用,例如192.168.10.17:8080和192.168.10.16:8080,这个就不多介绍了。

2. 没有集群的配置

然后修改nginx配置,修改前是这样的,只转发到192.168.10.17:8080:

upstream  wowdata{
  server 192.168.10.17:8080; 
}
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.16:8080,只需要在upstream里面把另外一个server加进来就行了,是不是简单到爆炸:

#修改这里
upstream  wowdata{
  server 192.168.10.17:8080;
  server 192.168.10.16:8080;  
}

#下面这些都不用改
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;
  }
}

4. 指定权重

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

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

upstream  wowdata{
  server 192.168.10.17:8080 weight=1;
  server 192.168.10.16:8080 weight=2;  
}

#server部分都不用改,我就不写了
server { ... }

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

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

upstream  wowdata{
  ip_hash;
  server 192.168.10.17:8080;
  server 192.168.10.16:8080;  
}

6. 其他分配的方式

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

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机器。所以这台机器压力会最轻。

8. 参考:

  1. Nginx+SpringBoot搭建负载均衡https://www.cnblogs.com/memoryXudy/p/7778101.html
  2. nginx upstream的五种分配方式
    https://blog.csdn.net/u010081710/article/details/52691406

相关文章

网友评论

    本文标题:nginx配置集群,以springboot为例

    本文链接:https://www.haomeiwen.com/subject/mqmmeqtx.html