您当前的位置:首页 > 电脑百科 > 站长技术 > 服务器

Nginx+Tomcat搭建高性能负载均衡集群

时间:2019-12-28 11:16:55  来源:  作者:

Nginx反向代理转发Tomcat这篇文章中,对nginx进行了简单的介绍,实现了nginx代理转发的功能,以及静态、动态资源分离的实现。本篇文章接着这篇文章继续写下去的,如果有不明白的地方,可以进入Nginx反向代理转发tomcat 开始阅读。

nginx+tomcat 部署实现负载均衡原理如下图:

Nginx+Tomcat搭建高性能负载均衡集群
 
 
 

 

nginx作为代理服务器,可以转发多个tomcat服务器,实现负载均衡。

1.环境准备

安装nginx服务,可参考:linux系统下Nginx的安装

部署tomcat,至少部署2个tomcat服务,本篇文章用2台tomcat服务作为测试。

启动部署成功的服务

2.修该nginx配置

Nginx+Tomcat搭建高性能负载均衡集群
 
 
 

 

在server配置的上面新增upstream 配置,后面的“server_tomcat”相当于该配置别名,供后面的“proxy_pass”配置使用。

upstream 里面配置的就是2个tomcat的访问地址,IP:端口号,不用写http:// 。

proxy_pass 转发定位到upstream 里面配置的多台服务器proxy_pass 配置的http:// 必须要写。

修改完成后,重新加载nginx服务的配置,访问系统IP,如下图所示:

Nginx+Tomcat搭建高性能负载均衡集群
 
 
 

 

点击刷新,页面如下:

Nginx+Tomcat搭建高性能负载均衡集群
 
 
 

 

再点击刷新,页面如下:

Nginx+Tomcat搭建高性能负载均衡集群
 
 
 

 

再点击刷新,页面如下:

Nginx+Tomcat搭建高性能负载均衡集群
 
 
 

 

可以发现,每次刷新nginx代理都会转发不同的服务器,貌似两台两台服务器被访问的概率一样,实现了负载均衡。

看到这,肯定会有人有疑问,如果有一台服务器突然挂掉了怎么办?别急,这种情况nginx已经给我们处理了,当有台服务器挂掉了,nginx默认不会访问挂掉的服务,继续访问其他正在运行的服务,提供了很好的容错机制。

能不能让两台服务器访问的概率不一样了?能,nginx给我们提供了 weight这个属性,可以给各个服务器分配权重,配置如下:

Nginx+Tomcat搭建高性能负载均衡集群
 
 
 

 

weight 默认为1.weight越大,负载的权重就越大。

通过上面的配置,刷新页面,会发现访问tomcat1的概率明显比访问tomcat2的概率大。

PS:upstream目前支持5种方式的分配

1、轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

2、weight

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

例如:

  1.  
  2. upstream bakend {
  3.   server 192.168.0.14 weight=10;
  4.   server 192.168.0.15 weight=10;
  5. }

 

3、ip_hash

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

例如:

  1.  
  2. upstream bakend {
  3.   ip_hash;
  4.   server 192.168.0.14:88;
  5.   server 192.168.0.15:80;
  6. }

 

4、fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

  1.  
  2. upstream backend {
  3.   server server1;
  4.   server server2;
  5.   fair;
  6. }

 

5、url_hash(第三方)

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法

  1.  
  2. upstream backend {
  3.   server squid1:3128;
  4.   server squid2:3128;
  5.   hash $request_uri;
  6.   hash_method crc32;
  7. }
  8.   tips:
  9.   upstream bakend{#定义负载均衡设备的Ip及设备状态
  10.   ip_hash;
  11.   server 127.0.0.1:9090 down;
  12.   server 127.0.0.1:8080 weight=2;
  13.   server 127.0.0.1:6060;
  14.   server 127.0.0.1:7070 backup;
  15. }

 

在需要使用负载均衡的server中增加

proxy_pass http://bakend/;

每个设备的状态设置为:

1.down 表示单前的server暂时不参与负载

2.weight 默认为1.weight越大,负载的权重就越大。

3.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误

4.fail_timeout:max_fails次失败后,暂停的时间。

5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

nginx支持同时设置多组的负载均衡,用来给不用的server来使用。

client_body_in_file_only 设置为On 可以讲client post过来的数据记录到文件中用来做debug

client_body_temp_path 设置记录文件的目录 可以设置最多3层目录

 location 对URL进行匹配。可以

在Nginx反向代理转发tomcat这篇文章中,对nginx进行了简单的介绍,实现了nginx代理转发的功能,以及静态、动态资源分离的实现。本篇文章接着这篇文章继续写下去的,如果有不明白的地方,可以进入Nginx反向代理转发tomcat 开始阅读。

nginx+tomcat 部署实现负载均衡原理如下图:

Nginx+Tomcat搭建高性能负载均衡集群
 
 
 

 

nginx作为代理服务器,可以转发多个tomcat服务器,实现负载均衡。

1.环境准备

安装nginx服务,可参考:Linux系统下Nginx的安装

部署tomcat,至少部署2个tomcat服务,本篇文章用2台tomcat服务作为测试。

启动部署成功的服务

2.修该nginx配置

Nginx+Tomcat搭建高性能负载均衡集群
 
 
 

 

在server配置的上面新增upstream 配置,后面的“server_tomcat”相当于该配置别名,供后面的“proxy_pass”配置使用。

upstream 里面配置的就是2个tomcat的访问地址,IP:端口号,不用写http:// 。

proxy_pass 转发定位到upstream 里面配置的多台服务器proxy_pass 配置的http:// 必须要写。

修改完成后,重新加载nginx服务的配置,访问系统IP,如下图所示:

Nginx+Tomcat搭建高性能负载均衡集群
 
 
 

 

点击刷新,页面如下:

Nginx+Tomcat搭建高性能负载均衡集群
 
 
 

 

再点击刷新,页面如下:

Nginx+Tomcat搭建高性能负载均衡集群
 
 
 

 

再点击刷新,页面如下:

Nginx+Tomcat搭建高性能负载均衡集群
 
 
 

 

可以发现,每次刷新nginx代理都会转发不同的服务器,貌似两台两台服务器被访问的概率一样,实现了负载均衡。

看到这,肯定会有人有疑问,如果有一台服务器突然挂掉了怎么办?别急,这种情况nginx已经给我们处理了,当有台服务器挂掉了,nginx默认不会访问挂掉的服务,继续访问其他正在运行的服务,提供了很好的容错机制。

能不能让两台服务器访问的概率不一样了?能,nginx给我们提供了 weight这个属性,可以给各个服务器分配权重,配置如下:

Nginx+Tomcat搭建高性能负载均衡集群
 
 
 

 

weight 默认为1.weight越大,负载的权重就越大。

通过上面的配置,刷新页面,会发现访问tomcat1的概率明显比访问tomcat2的概率大。

PS:upstream目前支持5种方式的分配

1、轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

2、weight

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

例如:

  1.  
  2. upstream bakend {
  3.   server 192.168.0.14 weight=10;
  4.   server 192.168.0.15 weight=10;
  5. }

 

3、ip_hash

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

例如:

  1.  
  2. upstream bakend {
  3.   ip_hash;
  4.   server 192.168.0.14:88;
  5.   server 192.168.0.15:80;
  6. }

 

4、fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

  1.  
  2. upstream backend {
  3.   server server1;
  4.   server server2;
  5.   fair;
  6. }

 

5、url_hash(第三方)

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法

  1.  
  2. upstream backend {
  3.   server squid1:3128;
  4.   server squid2:3128;
  5.   hash $request_uri;
  6.   hash_method crc32;
  7. }
  8.   tips:
  9.   upstream bakend{#定义负载均衡设备的Ip及设备状态
  10.   ip_hash;
  11.   server 127.0.0.1:9090 down;
  12.   server 127.0.0.1:8080 weight=2;
  13.   server 127.0.0.1:6060;
  14.   server 127.0.0.1:7070 backup;
  15. }

 

在需要使用负载均衡的server中增加

proxy_pass http://bakend/;

每个设备的状态设置为:

1.down 表示单前的server暂时不参与负载

2.weight 默认为1.weight越大,负载的权重就越大。

3.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误

4.fail_timeout:max_fails次失败后,暂停的时间。

5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

nginx支持同时设置多组的负载均衡,用来给不用的server来使用。

client_body_in_file_only 设置为On 可以讲client post过来的数据记录到文件中用来做debug

client_body_temp_path 设置记录文件的目录 可以设置最多3层目录

location 对URL进行匹配。可以



Tags:Nginx   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
项目中,遇到了一个问题,就是PDF等文档不能够在线预览,预览时会报错。错误描述浏览器的console中,显示如下错误:nginx代理服务报Mixed Content: The page at ******** was loaded...【详细内容】
2021-12-17  Tags: Nginx  点击:(7)  评论:(0)  加入收藏
前言Nginx是前后端开发工程师必须掌握的神器。该神器有很多使用场景,比如反向代理、负载均衡、动静分离、跨域等等。把 Nginx下载下来,打开conf文件夹的nginx.conf文件,Nginx服...【详细内容】
2021-12-08  Tags: Nginx  点击:(18)  评论:(0)  加入收藏
最近客户有个新需求,就是想查看网站的访问情况,由于网站没有做google的统计和百度的统计,所以访问情况,只能通过日志查看,通过脚本的形式给客户导出也不太实际,给客户写个简单的页...【详细内容】
2021-10-09  Tags: Nginx  点击:(48)  评论:(0)  加入收藏
安全服务器是只允许所需数量的服务器。理想情况下,我们将通过单独启用其他功能来基于最小系统构建服务器。进行最少的配置也有助于调试。如果该错误在最小系统中不可用,则分别...【详细内容】
2021-09-26  Tags: Nginx  点击:(60)  评论:(0)  加入收藏
在今年的NGINX Sprint 2.0虚拟大会上,NGINX(来自流行的开源web服务器/负载均衡器和反向代理背后的公司F5),发布了NGINX现代应用参考架构(MARA)。该公司在一篇博客文章中说,这将帮...【详细内容】
2021-09-26  Tags: Nginx  点击:(61)  评论:(0)  加入收藏
Ubuntu下安装Nginx一、系统基本信息查看1、查看Ubuntu版本信息:使用命令:cat /proc/version 查看~$ cat /proc/versionLinux version 4.15.0-106-generic (buildd@lcy01-amd6...【详细内容】
2021-09-16  Tags: Nginx  点击:(60)  评论:(0)  加入收藏
出于安全审查或者对于系统安全性的要求,都要求我们生产环境部署的系统需要做一定的权限控制。那么如何简单快速地部署满足安全要求的权限系统呢?其实可以通过nginx的相关功能...【详细内容】
2021-09-07  Tags: Nginx  点击:(69)  评论:(0)  加入收藏
什么是NginxNginx(engine x)是一个高性能的HTTP和反向代理服务器,具有内存少,高并发特点强。1、处理静态文件,索引文件以及自动检索打开文件描述符缓冲2、无缓冲的反向代理加速...【详细内容】
2021-09-02  Tags: Nginx  点击:(70)  评论:(0)  加入收藏
本文适用于 php7.4+NGINX环境,适用于运行 wordpress 环境一、更新服务器sudo apt update二、命令快捷缩写设置通过ssh登录服务器,在用户目录下执行以下命令sudo nano .bashrca...【详细内容】
2021-08-31  Tags: Nginx  点击:(87)  评论:(0)  加入收藏
一、nginx正向代理介绍及配置(需要在客户端配置代理服务器进行指定网站访问)#模块 ngx_http_proxy_module: http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy...【详细内容】
2021-08-16  Tags: Nginx  点击:(76)  评论:(0)  加入收藏
▌简易百科推荐
阿里云镜像源地址及安装网站地址https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b111kK44P更新源之前把之前的国外的镜像先备份一下 切换到yumcd...【详细内容】
2021-12-27  干程序那些事    Tags:CentOS7镜像   点击:(1)  评论:(0)  加入收藏
前言在实现TCP长连接功能中,客户端断线重连是一个很常见的问题,当我们使用netty实现断线重连时,是否考虑过如下几个问题: 如何监听到客户端和服务端连接断开 ? 如何实现断线后重...【详细内容】
2021-12-24  程序猿阿嘴  CSDN  Tags:Netty   点击:(12)  评论:(0)  加入收藏
一. 配置yum源在目录 /etc/yum.repos.d/ 下新建文件 google-chrome.repovim /etc/yum.repos.d/google-chrome.repo按i进入编辑模式写入如下内容:[google-chrome]name=googl...【详细内容】
2021-12-23  有云转晴    Tags:chrome   点击:(7)  评论:(0)  加入收藏
一. HTTP gzip压缩,概述 request header中声明Accept-Encoding : gzip,告知服务器客户端接受gzip的数据 response body,同时加入以下header:Content-Encoding: gzip:表明bo...【详细内容】
2021-12-22  java乐园    Tags:gzip压缩   点击:(9)  评论:(0)  加入收藏
yum -y install gcc automake autoconf libtool makeadduser testpasswd testmkdir /tmp/exploitln -s /usr/bin/ping /tmp/exploit/targetexec 3< /tmp/exploit/targetls -...【详细内容】
2021-12-22  SofM    Tags:Centos7   点击:(7)  评论:(0)  加入收藏
Windows操作系统和Linux操作系统有何区别?Windows操作系统:需支付版权费用,(华为云已购买正版版权,在华为云购买云服务器的用户安装系统时无需额外付费),界面化的操作系统对用户使...【详细内容】
2021-12-21  卷毛琴姨    Tags:云服务器   点击:(6)  评论:(0)  加入收藏
参考资料:Hive3.1.2安装指南_厦大数据库实验室博客Hive学习(一) 安装 环境:CentOS 7 + Hadoop3.2 + Hive3.1 - 一个人、一座城 - 博客园1.安装hive1.1下载地址hive镜像路径 ht...【详细内容】
2021-12-20  zebra-08    Tags:Hive   点击:(9)  评论:(0)  加入收藏
以下是服务器安全加固的步骤,本文以腾讯云的CentOS7.7版本为例来介绍,如果你使用的是秘钥登录服务器1-5步骤可以跳过。1、设置复杂密码服务器设置大写、小写、特殊字符、数字...【详细内容】
2021-12-20  网安人    Tags:服务器   点击:(7)  评论:(0)  加入收藏
项目中,遇到了一个问题,就是PDF等文档不能够在线预览,预览时会报错。错误描述浏览器的console中,显示如下错误:nginx代理服务报Mixed Content: The page at ******** was loaded...【详细内容】
2021-12-17  mdong    Tags:Nginx   点击:(7)  评论:(0)  加入收藏
转自: https://kermsite.com/p/wt-ssh/由于格式问题,部分链接、表格可能会失效,若失效请访问原文密码登录 以及 通过密钥实现免密码登录Dec 15, 2021阅读时长: 6 分钟简介Windo...【详细内容】
2021-12-17  LaLiLi    Tags:SSH连接   点击:(16)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条