Nginx+tomcat配置集群负载均衡

Session详解,学习Session(包含底层分析和使用) Session详解.以及和cookie的比较 阅读详情

转自:http://blog.youkuaiyun.com/bruce_6/article/details/38228299

相信很多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额。那究竟它有什么作用呢?可能很多人未必了解。

 说到反向代理,可能很多人都听说,但具体什么是反向代理,很多人估计就不清楚了。摘一段百度百科上的描述:

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。 

 这里讲得很直白。反向代理方式实际上就是一台负责转发的代理服务器,貌似充当了真正服务器的功能,但实际上并不是,代理服务器只是充当了转发的作用,并且从真正的服务器那里取得返回的数据。这样说,其实nginx 完成的就是这样的工作。我们让nginx监听一个端口,譬如80端口,但实际上我们转发给在8080端口的tomcat,由它来处理真正的请求,当请求完成后,tomcat返回,但数据此时没直接返回,而是直接给nginx,由nginx进行返回,这里,我们会以为是nginx进行了处理,但实际上进行处理的是tomcat。

 说到上面的方式,也许很多人又会想起来,这样可以把静态文件交由nginx来进行处理。对,很多用到nginx的地方都是作为静态伺服器,这样可以方便缓存那些静态文件,比如CSS,JS,html,htm等文件。

闲话就不多说了,我们直接来看看nginx怎么使用。

 一、下载

nginx官网:http://nginx.org/

直接到nginx官方下载地址下载即可:http://nginx.org/en/download.html,根据各自的操作系统版本下载。本文选择最新的nginx-1.6.0windows稳定版本。

image

 

二、安装

安装很简单,直接解压到指定的文件目录即可。解压后的目录如下:

image

双击nginx.exe,发现一闪而过的窗口,代表nginx服务已经启动。

 也可以使用命令进行启动,使用命令行进入nginx根目录下:

 

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. E:\programs\nginx-1.6.0>start nginx  


其他相关命令:

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. nginx -s stop    快速退出  
  2.   
  3. nginx -s quit    优雅退出  
  4.   
  5. nginx -s reload    更换配置,启动新的工作进程,优雅的关闭以往的工作进程  
  6.   
  7. nginx -s reopen     重新打开日志文件  
查看任务管理器:

image

可能不止一个服务存在(我的就有5个服务(┬_┬)),下面验证是否已经成功启动,直接访问http://localhost可以看到如下图,代表安装启动成功:

image

三、配置

nginx文件目录下有一个conf文件夹,其中有好几个文件,其他先不管,我们打开nginx.conf,可以看到一段:

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. server {  
  2.         listen       80;  
  3.         server_name  localhost;  
  4.   
  5.         #charset koi8-r;  
  6.   
  7.         #access_log  logs/host.access.log  main;  
  8.   
  9.         location / {  
  10.             root   html;  
  11.             index  index.html index.htm;  
  12.         }  

这段代码在server里面,相当于一个代理服务器,当然可以配置多个。

下面我们仔细来分析一下:

listen:表示当前的代理服务器监听的端口,默认的是监听80端口。注意,如果我们配置了多个server,这个listen要配置不一样,不然就不能确定转到哪里去了。

server_name:表示监听到之后需要转到哪里去,这时我们直接转到本地,这时是直接到nginx文件夹内。

location:表示匹配的路径,这时配置了/表示所有请求都被匹配到这里

root:里面配置了root这时表示当匹配这个请求的路径时,将会在这个文件夹内寻找相应的文件,这里对我们之后的静态文件伺服很有用。

index:当没有指定主页时,默认会选择这个指定的文件,它可以有多个,并按顺序来加载,如果第一个不存在,则找第二个,依此类推。

下面的error_page是代表错误的页面,这里我们暂时不用,先不管它。

那我们知道了具体的配置了,怎么让它访问localhost时转到tomcat时。实际上就修改两个地方:

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. server_name localhost:8080;   
  2.   
  3. location / {   
  4.   
  5.     proxy_pass http://localhost:8080;  
  6.   
  7. }    

我们就修改了上面两个地方,我的tomcat在8080端口,可以根据自己的需要修改。这里有一个新元素proxy_pass,它表示代理路径,相当于转发,而不像之前说的root必须指定一个文件夹。

此时我们修改了文件,是不是就意思着必须先关了nginx再重新启动了,其实不必,nginx可以重新加载文件的。

我们直接运行:

 

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. nginx -s reload   

如果不想直接加载,而只是想检查配置文件有没有问题,可以直接输入:

 

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. nginx -t    

这可以检查配置文件中是否有错。 下面我们所有的修改都假设我们修改完成后运行了nginx -s reload进行重新加载配置文件,请注意。

一切没问题了,然后我们再重新打开http://localhost,我们看到下面的页面:

image

这时,我们发现它并不是刚才的welcome页面了,而是tomcat的管理页面了,不管我们点击什么链接都是没问题的,相当于直接访问http://localhost:8080一样。

四、配置集群负载均衡

有些人会说,这些都只会找一台服务器,但如果我们想在一台服务器挂了的时候,自动去找另外一台,这怎么办?这实际上nginx都考虑到了。

这时,我们之前用的proxy_pass就有大用途了。

我们把之前的第一个例子,即全部都代理的修改一下:

最后修改如下:

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. upstream local_tomcat {   
  2.   
  3.     server localhost:18080;   
  4.   
  5. }   
  6.    
  7.   
  8. server{   
  9.         location / {   
  10.   
  11.            proxy_pass http://local_tomcat;   
  12.   
  13.         }   
  14.   
  15.         #......其他省略   
  16.   
  17. }    

 我们在server外添加了一个upstream,而直接在proxy_pass里面直接用http://+upstream的名称来使用。

我们还是直接来http://localhost,还是和第一个一样的效果,所有链接都没问题,说明我们配置正确。

upstream中的server元素必须要注意,不能加http://,但proxy_pass中必须加。

我们刚才说可以在一个服务器挂了的情况下连到另外一个,那怎么弄呢?

其实很简单,在upstream中的local_tomcat中配置多一个server。比如我现在弄多一个tomcat,端口在18081,所以我们配置如下:

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. upstream local_tomcat {   
  2.     server localhost:18080;   
  3.     server localhost:18081;   
  4. }   

此时,我们关闭tomcat,重新来运行http://localhost看看效果:

image

 我修改了index.jsp页面,增加日志输出信息,便于观察。注意:左上角小猫头上的:tomcat2、tomcat1。说明访问了不同的tomcat。

 但有时我们就不想它挂的时候访问另外一个,而只是希望一个服务器访问的机会比另外一个大,这个可以在server最后加上一个weight=数字来指定,数字越大,表明请求到的机会越大。 

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. upstream local_tomcat {   
  2.   
  3.     server localhost:18080 weight=1;   
  4.   
  5.     server localhost:18081 weight=5;   
  6.   
  7. }    

这时我们给了18081一个更高的权值,让它更有机会访问到,实际上当我们刷新http://localhost访问的时候发现18081访问机率大很多,18080几乎没机会访问,一般情况下,如果我们必须这样用,不要相关太大,以免一个服务器负载太大。

当然,server还有一些其他的元素,比如down表示暂时不用到该服务器等等。这些可以参考nginx的wiki。也许写了一大堆,有人会有问题,那nginx怎么关闭呢?这倒是个问题,其实直接运行nginx -s stop就可以关闭了。

 至此window下nginx+tomcat负载均衡配置结束,关于tomcat Session的问题通常是采用memcached,或者采用nginx_upstream_jvm_route ,他是一个 Nginx 的扩展模块,用来实现基于 Cookie 的 Session Sticky 的功能。如果tomcat过多不建议session同步,server间相互同步session很耗资源,高并发环境容易引起Session风暴。请根据自己应用情况合理采纳session解决方案。

最全软考高项工具技术总结(上) 第四版教材把工具和技术分为:数据收集技术、数据分析技术、数据表现技术、决策技术、沟通技巧、人际关系和团队技能、其他。我会按照上面的分类总结说明并标识他们用在哪些过程。小伙伴们可以通读理解做到有印象能选对应付上午选择,选几个深化用在下午论文的举例中。没必要背! 阅读详情

相关推荐

b站视频链接快速获取

快速获取b站视频数据

qq_45889931的博客 7725

nginx 的一个模块 nginx_upstream_jvm_route

nginx_upstream_jvm_route 是一个 Nginx 的扩展模块,用来实现基于 Cookie 的 Session Sticky 的功能。 安装方法(进入Nginx源码目录): #patch -p0 < /path/to/this/directory/jvm_route.patch# ./configure --prefix=/usr/nginx-...

weixin_34024034的博客 257

Multisim 14.0 实战:手把手教你仿真一个9MHz高频小信号放大器(附完整电路文件)

本文详细介绍了如何使用Multisim 14.0仿真一个9MHz高频小信号谐振放大器,从环境准备、电路设计到仿真参数设置与调试,手把手教你掌握射频电路仿真的核心技巧。适合电子工程师和学生快速上手高频电路设计,附完整电路文件供参考。

weixin_30335575的博客 112

nginx_upstream_jvm_route 实验

基础知识: 这个模块通过session cookie的方式来获取session粘性。如果在cookie和url中并没有session,则这只是个简单的round-robin 负载均衡。 jvm_route的原理(from 作者 Weibin Yao): 1. 一开始请求过来,没有带session信息,jvm_route就根据round robin的方法,发

每天积累一点,一年后你会发现,自己变化很大 1401

抖音Web端私信Protobuf逆向解析实战

本文详细解析了抖音Web端私信通信的逆向过程,发现其核心采用WebSocket传输Protobuf序列化数据。通过抓包获取二进制样本,利用protoc工具进行原始解码,并逐步推导和编写出对应的.proto协议定义文件,最终实现模拟消息的编码与解码,为理解私有协议逆向提供了完整实战案例。

water的专栏 760

硬件电路(22)-TTL和232切换电路

工作中会遇到TTL和232电平的通信的状态,为了实现一种便捷的切换方式,参考了一些文章,提供一种电路方便大家使用。

剑藏锋的博客 1862

nginx_upstream_jvm_route模块

nginx_upstream_jvm_route jvm_route是通过session_cookie这种方式来实现session粘性,将特定会话附属到特定tomcat上,从而解决session不同步问题,但无法解决宕机后会话转移问题。 暂时jvm_route模块还不支持默认fair的模式。jvm_route的工作模式和fair是冲突的。对于某个特定用户,当一直为他服务的 tomcat宕机后,默认情况下它会重试max_fails的次数,如果还是失败,就重新启用round robin的方式,而这种情况下就会

focus on security 551

Debezium报错处理系列之第112篇:Cannot replicate because the master purged required binary logs. Replicate the

Debezium报错处理系列之第112篇:Cannot replicate because the master purged required binary logs.

zhengzaifeidelushang的博客 724

Nginx与Tomcat负载均衡集群配置指南

通过多次访问测试,验证了Nginx能够轮流响应来自不同Tomcat服务器的请求。

yjq182的博客 942

OCR文字识别基础

ocr文字识别

m0_47405013的博客 1755

零基础入门生信转录组数据分析——导读

转录组数据分析(上游,下游,数据可视化)专栏的目录,可以直接通过点击各个分析点直接跳转到相关帖子,方便查找和观看

呆猪儿的博客 1万+

Nginx、tomcat配置集群负载均衡

一、下载 nginx官网:http://nginx.org/ 直接到nginx官方下载地址下载即可:http://nginx.org/en/download.html,根据各自的操作系统版本下载。本文选择最新的nginx-1.6.0windows稳定版本。 二、安装 安装很简单,直接解压到指定的文件目录即可。解压后的目录如下: 双击nginx.exe,发现一闪而过的窗口,代表nginx服务已经启动。 也可以使用命令进行启动,使用命令行进入nginx根目录下: E:...

zhaoyanjun008的博客 279

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

注意这几点,轻轻松松配置 Nginx + Tomcat 的集群和负载均衡

顿悟源码2019-05-28 08:36:00 Tomcat 集群是当单台服务器达到性能瓶颈,通过横向扩展的方式提高整体系统性能的有效手段。Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,可以通过简单的配置实现 Tomcat 集群的负载均衡。 本文使用的 Tomcat 是 8.5.35 版本,Nginx 是 1.14.2 版本。接下来看下配置的过程以及可能会遇到的问题,首发...

u011277123的博客 707

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Tomcat集群与Nginx负载均衡配置及所带来的问题(windows和linux)

1

成的博客 5743

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Nginx以及通过Nginx实现tomcat集群配置与负载均衡

Nginx简介 启动,停止,和重新加载配置文件命令 Nginx功能 正向代理和反向代理的区别 反向代理 负载均衡 1、RR(默认) 2、权重 3、ip_hash 4、fair(第三方) 5、url_hash(第三方) HTTP服务器 动静分离 正向代理 为什么要使用Nginx? tomcat如何配置首个启动工程? 如何在同一个tomcat上配置多个虚拟主机? 如何...

上山看海 384

Tomcat+Nginx 负载均衡配置,Tomcat+Nginx集群,Tomcat集群

Tomcat+Nginx 负载均衡配置,Tomcat+Nginx集群,Tomcat集群 原文地址:http://fanshuyao.iteye.com/ 在Win7实现Tomcat+Nginx 负载均衡配置 一、首先需要下载tomcat及nginx,然后解压。 nginx-1.11.2 apache-tomcat-7.0.70-windows-x64....

dhauf9518的博客 127

Tomcat集群Nginx负载均衡配置笔记

电商项目中Tomcat集群配置带来的主要问题: 1.session登录信息存取问题 2.服务器定时任务并发问题 解决方案: 1.nginx hash ip 优点:不改变现有架构,直接横向扩展 缺点:分配不平均、IP变化无法服务 2.nginx负载均衡 + session server+分布式锁 单机部署多应用 1.在/etc/profile 配置多个Tomcat环境变量 2.第一个tomcat不变,在第二个tomcat的bin目录下打开catalina.sh,给catalina_base 和 Catalin

Xyg's LearningSpace 223

Windows下用Nginx+Tomcat配置集群负载均衡

Nginx是一款轻量级的web服务器/反向代理服务器,更详细的释义自己百度了。目前国内像新浪、网易等都在使用它。

俺总在笑 1万+

图文详解 配置Nginx+Tomcat负载均衡、动静分离集群

Nginx+Tomcat负载均衡、动静分离1.准备三台服务器2.部署Nginx 负载均衡器3.部署2台Tomcat 应用服务器 1.准备三台服务器 Nginx 服务器:192.168.116.100:80 Tomcat服务器1:192.168.116.70:8080 Tomcat服务器2:192.168.116.120:8080 192.168.116.120:8081 2.部署Nginx 负载均衡器 systemctl stop firewalld setenforce 0 yum -y insta

穷则独善其身 达则兼善天下 1306

windows ,Tomcat+Nginx 负载均衡配置,集群

在Win7实现Tomcat+Nginx 负载均衡配置 一、首先需要下载tomcat及nginx,然后解压。 nginx-1.11.2 apache-tomcat-7.0.70-windows-x64.zip 然后解压到某个文件夹里面。 tomcat 需要有2个或者2个以上,不然体现不了集群,所有把解压的Tomcat复制一份,重新命名。 我是这样的: tom-7.0.70-...

涵山韵海的博客 325

nginx+tomcat配置负载均衡集群

1,使用工具: nginx(http://nginx.org/en/download.html) apache-tomcat(https://tomcat.apache.org/download-70.cgi) 2,配置目的: 传统单服务器项目(例如一个tomcat下有几个项目),这种方式的好处是便于管理配置,坏处也很明显,就是如果遇到高并发,大流量的情况下,如果服务器挂掉了,那它下面的系...

请叫我小广 360

使用Redis存储Nginx+Tomcat负载均衡集群的Session的详细配置

这些配置使用了Tomcat的Redis Session Manager和Redis Session Handler Valve来实现将Session存储到Redis中。- 修改Redis的配置文件(redis.conf),设置绑定IP地址和端口号,确保可以从Nginx和Tomcat所在的服务器访问到Redis服务。通过以上配置,你可以将Nginx和Tomcat集群中的Session存储到Redis中,实现负载均衡和高可用性。- 访问Web应用,并进行一些操作,确保Session的正确性和可用性。

高性价比服务器就选:蓝易云 227

nginx+tomcat配置集群负载均衡

思路: 安装nginx监听80端口,即域名指向的端口,通过nginx的负载均衡到多台服务器上,例如两个tomcat(如果是同一台机器上的是多个端口) 当通过负载均衡实现均衡调用时,tomcat的session却不能实现共享,可以通过memcached实现session共享,以实现多台服务之间的跳转仍然session在线

running_snail_的专栏 1571

Tomcat集群,Nginx集群,Tomcat+Nginx 负载均衡配置,Tomcat+Nginx集群

  Tomcat集群,Nginx集群,Tomcat+Nginx 负载均衡配置,Tomcat+Nginx集群   &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&a

weixin_34375233的博客 511
上一篇: Windows下Nginx的启动、停止等命令
下一篇: ueditor和springmvc集成
elementf
博客等级 码龄14年 30粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值