Nginx负载均衡详解(3种主流算法配置方式)

Nginx负载均衡详解(3种主流算法配置方式)-mikechen

Nginx负载均衡定义

当系统面临大量用户访问,负载过高的时候,通常会使用Nginx增加服务器数量来进行横向扩展,然后将请求分发到各个服务器上。

如下图所示:

Nginx负载均衡详解(3种主流算法配置方式)-mikechen

将用户访问的请求,根据负载均衡算法,分发到集群中的一台处理服务器,这就是我们说的负载均衡

 

Nginx负载均衡作用

Nginx负载均衡详解(3种主流算法配置方式)-mikechen

1.解决并发压力

提高应用处理性能,增加吞吐量,加强网络处理能力。

2.实现高可用

提供故障转移,实现整个应用的高可用。

3.实现扩展性

通过添加或减少服务器数量,提供网站伸缩性扩展性。

4.实现安全防护

负载均衡设备上做一些过滤,黑白名单等处理。

 

Nginx负载均衡算法

Nginx负载均衡的三种方式主要是:轮询模式、权重模式、ip_hash。

1.轮循(默认)

Nginx负载均衡详解(3种主流算法配置方式)-mikechen

轮询模式:将请求按顺序轮流分配到后台服务器上,均衡的对待每一台服务器,而不关心服务器实际的连接数和当前的系统负载。

 

2.加权模式

Nginx负载均衡详解(3种主流算法配置方式)-mikechen
这种方式比较灵活,当后端服务器性能存在差异的时候,通过配置权重,可以让服务器的性能得到充分发挥,有效利用资源。

3.ip_hash模式

Nginx负载均衡详解(3种主流算法配置方式)-mikechen
根据服务消费者请求客户端的IP地址,通过哈希函数计算得到一个哈希值,将此哈希值和服务器列表的大小进行取模运算,得到的结果便是要访问的服务器地址的序号。

每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。

 

Nginx负载均衡配置

Nginx负载均衡的三种方式主要是:轮询模式、权重模式、ip_hash,下面分别配置详解。

1.轮询配置示例

1)实现效果

输入:http://192.168.200.130/test/a.html,实现负载均衡的效果,平均分摊到8080和8081端口中。

 

2)环境工具

Nginx+JDK8+2台Tomcat,一台8080,一台8081。

3)修改配置

在 Nginx的配置文件中进行负载均衡的配置,修改配置文件nginx.conf。

如下图所示:

Nginx负载均衡详解(3种主流算法配置方式)-mikechen

修改完配置后,重启nginx,在浏览器中输入http://192.168.200.130/test/a.html ,多次刷新便可以看到每次请求的是不同的Tomcat服务器。

Nginx负载均衡详解(3种主流算法配置方式)-mikechen

2.加权配置示例

加权轮询只需要修改server中weight值就可以了,如下所示:

upstream myserver{
  server 192.168.5.16:80 weight=2; 
  server 192.168.5.18:80 weight=5; 
}

在server IP:Port的后面增加weight的值即可。

 

3.ip_hash配置示例

每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器。

配置需要增加ip_hash,如下所示:

ip_hash配置示例

upstream myserver{
  ip_hash;
  server 192.168.71.167:8080 weight=1;
  server 192.168.71.167:8081 weight=1;
}

 

作者简介

陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

👇阅读更多mikechen架构文章👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法