当前位置:首页 > 技术文章 > 正文内容

Nginx负载均衡最全详解(图文全面总结)

arlanguage4个月前 (01-16)技术文章34

大家好,我是mikechen。

Nginx是一款高性能HTTP和反向代理服务器,它也提供了多种负载均衡策略,下面详解常用的负载均衡策略@mikechen

本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。

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原创超30万字《阿里架构师进阶专题合集》里面。

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/911.html

标签: nginx 8080
分享给朋友:

“Nginx负载均衡最全详解(图文全面总结)” 的相关文章

Nginx 解决error.log和access.log日志的改善总结

1. 介绍自从了解了error和access日志的重要性,并且学会阅读相关log文档之后。通过调整nginx配置,解决error中的大量报错提示。通过过滤js等静态资源减少大量的access日志记录内容。同时,经过使用阿里云安全组封禁大量国外ip地址的访问。我的access.log文件和error....

Linux非root用户安装及配置Nginx

该文章用到了2次root权限,其中有一次root权限是没有必要用的,小编会在文章中进行说明。一、安装前置依赖gcc编译器(第一次需要root权限)这里我没有研究非root用户安装(因为太麻烦了),后面我会单独出一篇文章,讲解非root用户安装gcc编译器。直接使用su - 切换到root用户下面,使...

Linux下如何用nginx+ffmpeg搭建流媒体服务器

安装ffmpeg安装过程略安装完成后,检查是否安装成功。比如我这里采用向pili推流的方式,将本地的一个mp4视频推流到七牛pili。ffmpeg -re -i /tmp/ffmpeg_test.mp4 -vcodec copy -acodec copy -f flv "rtmp://pil...

轻松搭建基于 Serverless 的 ThinkPHP 应用

ThinkPHP 是什么?ThinkPHP 是一个免费开源的,快速、简单的面向对象的轻量级 PHP 开发框架,是为了敏捷 WEB 应用开发和简化企业应用开发而诞生的。ThinkPHP 从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简代码的同时,更注重易用性。遵循 Apache2 开源许可...

PHP日志记录

背景在生产环境中日志的重要性显而易见,能快速定位问题和程序的调优。在LNMP架构中怎么记录好程序中的错误日志。设置error_log记录PHP日志信息#将会向PHP报告发生的每个错误 error_reporting = E_ALL #关闭页面显示才能将错误回写到日志文件 display_err...

Nginx安装、启动、停止、重载、查看

Nginx介绍Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在开源BSD-like 协议下发行。特点是占有内存少,并发能力强。1、安装 Nginx程序yum install nginx -y 或 dnf install nginx -y2、n...