nginx实现负载均衡几种方式,nginx负载均衡配置详解linux

nginx实现负载均衡几种方式,nginx负载均衡配置详解linux,使用nginx进行负载均衡的搭建全过程

负载均衡用于从“上游”模块定义的后端服务器列表中选择一个服务器来接受用户的请求。下面这篇文章主要介绍用nginx设置负载均衡的全过程,通过示例代码详细介绍。有需要的可以参考一下。

: 目录

1.NGINX负载均衡介绍2。nginx负载均衡策略2.1轮询2.1.1一般轮询2.1.2加权轮询2.2最小连接2.3 ip hash3。nginx负载均衡构造示例3.1 tomcat配置3.2 nginx配置摘要

1. nginx负载均衡介绍

nginx的应用场景之一就是负载均衡。当访问量很大时,可以通过负载均衡将多个请求分布到多个服务器上,相当于将一台服务器的负载交给多台服务器处理,从而提高系统的吞吐率。此外,如果其中一个服务器死亡,其他服务器可以正常提供服务,从而提高系统的可扩展性和可靠性。

下图显示了负载平衡的一个示例。当一个用户请求被发送时,它首先被发送到负载均衡服务器,然后负载均衡服务器根据配置规则将请求转发到不同的web服务器。

2. nginx负载均衡策略

以下是nginx官网文档截图。

nginx内置的负载均衡策略主要分为三类,分别是轮询、最小连接数和ip hash。

最小连接

请求被分配给活动连接数最少的服务器,哪个服务器的连接数最少,请求就给哪个服务器,nginx统计服务器连接数。

ip哈希

基于客户端ip的分配方法

2.1 轮询

将请求分发到应用服务器,并将请求平均分配到每个服务器。

2.1.1 普通轮询方式

这种方法是默认方法,轮询适用于服务器配置相当、无状态、短而快的服务。另外,在轮询中,如果服务器挂机,会自动拒绝。

http {

#定义转发分配规则

上游多年期应用程序1 {

服务器srv1.com;#转发到的服务器,如ip,ip:端口号,域名,域名:端口号

服务器srv2.com:8088;

服务器192 . 168 . 0 . 100:8088;

}

服务器{

听80;#端口nginx侦听

位置/{

#使用myapp1分配规则,即新增加的上游节点是定制的。

#将所有请求转发到myapp1服务器组中配置的服务器。

proxy _ pass http://myapp1

}

}

}

2.1.2 权重轮询方式

如果在上游配置的服务器参数后追加了权重配置,将根据配置的权重进行请求分发。该策略可以与least_conn和ip_hash相结合,适用于服务器硬件配置差异较大的情况。

#定义转发分配规则

上游多年期应用程序1 {

服务器srv1.com权重=1;#该服务器接受1/6的请求。

服务器srv2.com:8088权重=2;#该服务器接受2/6的请求。

服务器192.168.0.100:8088权重=3;#该服务器接受3/6的请求;

}

2.2 最少连接

轮询算法将请求平均转发给所有后端,使它们的负载大致相同;但是,有些请求需要很长时间,这会导致很高的后端负载。在这种情况下,least_conn的方法可以达到更好的负载均衡效果,适用于服务器因请求处理时间不同而过载的情况。

#定义转发分配规则

上游多年期应用程序1 {

最少_连接;#将请求分派给连接数最少的服务器

服务器srv1.com;

服务器srv2.com:8088;

服务器192 . 168 . 0 . 100:8088;

}

2.3 ip hash

这种方法确保了同一个客户端的请求始终被发送到同一个服务器,这样每个访问者都有一个固定的访问后端服务器的权限。如果用户需要分片上传文件到服务器,然后服务器会对分片进行合并,那么如果用户的请求到达了不同的服务器,那么分片就会存放在不同的服务器目录下,这样就无法进行分片合并。在这种情况下,需要ip哈希策略。

需要注意的是,ip_hash不能与backup同时使用。此外,当需要移除服务器时,必须手动将其关闭。这种模式适用于有状态服务,如会话。

#定义转发分配规则

上游多年期应用程序1 {

ip _ hash# #确保每个请求对后端服务器有固定的访问权限。

服务器srv1.com;

服务器srv2.com:8088;

服务器192 . 168 . 0 . 100:8088;

}

3. nginx负载均衡搭建示例

这个例子使用一个nginx作为负载平衡服务器,两个tomcat作为web服务器。您可以在一台机器上构建所有三个服务,或者您可以使用虚拟机来模拟三台机器,然后测试它们。这里,教程只在一台机器上构建,并且是通过默认的weight方法配置的。

3.1 tomcat配置

解压两个Tomcats,配置相应的端口,然后在webapps目录下创建测试目录,再在测试目录下创建index.html文件,随便写点内容。两个Tomcats中测试目录下的index.html文件的内容要区分,比如写111111/2222222,如下图所示。

3.2 nginx配置

首先,安装nginx。安装教程可以参考。

https://www.jb51.net/article/231249.htm

安装完成后,进入nginx目录下的conf目录,编辑nginx.conf文件,修改内容添加到http节点下。

上游tomcat {#这个部分和服务器节点在同一层。

服务器tomcat服务的IP:Tomcat服务的端口号;

服务器tomcat服务的IP:Tomcat服务的端口号;

}

在服务器节点下的位置/节点中,设置默认值

位置/{

根html

索引index.html index.htm;

}

修改为

位置/{

proxy _ pass http://tomcat

}

然后启动两个tomcat和nginx服务,在浏览器中输入nginx服务的地址:端口,不断刷新页面,可以看到每次请求的服务器都有变化。

总结

这就是这篇关于使用nginx进行负载平衡的文章。有关nginx负载平衡的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!

nginx实现负载均衡几种方式,nginx负载均衡配置详解linux