Nginx负载均衡定义
当系统面临大量用户访问,负载过高的时候,通常会使用Nginx增加服务器数量来进行横向扩展,然后将请求分发到各个服务器上。
如下图所示:
将用户访问的请求,根据负载均衡算法,分发到集群中的一台处理服务器,这就是我们说的负载均衡。
Nginx负载均衡作用
1.解决并发压力
提高应用处理性能,增加吞吐量,加强网络处理能力。
2.实现高可用
提供故障转移,实现整个应用的高可用。
3.实现扩展性
通过添加或减少服务器数量,提供网站伸缩性扩展性。
4.实现安全防护
负载均衡设备上做一些过滤,黑白名单等处理。
Nginx负载均衡算法
Nginx负载均衡的三种方式主要是:轮询模式、权重模式、ip_hash。
1.轮循(默认)
轮询模式:将请求按顺序轮流分配到后台服务器上,均衡的对待每一台服务器,而不关心服务器实际的连接数和当前的系统负载。
2.加权模式
这种方式比较灵活,当后端服务器性能存在差异的时候,通过配置权重,可以让服务器的性能得到充分发挥,有效利用资源。
3.ip_hash模式
根据服务消费者请求客户端的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,在浏览器中输入http://192.168.200.130/test/a.html ,多次刷新便可以看到每次请求的是不同的Tomcat服务器。
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
mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!

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