负载均衡用于从“上游”模块定义的后端服务器列表中选择一个服务器来接受用户的请求。下面这篇文章主要介绍用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负载平衡的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!