nginx+tomcat负载均衡集群(二)
一、安装nginx
大同小异,主要有几步
1.下载安装包(http://nginx.org/en/download.html) nginx-1.8.0.tar.gz
2.解压 tar - zxvf nginx-1.8.0.tar.gz
3.cd 到 解压目录下 nginx-1.8.0
4.配置安装目录及附带信息 ./configure --prefix=/usr/local/nginx --with-pcre=/usr/local/pcre-8.32(这里附带了一个pcre 可以下载一个,少东西了编译的时候回报错,缺什么补什么就可以了,直接下载包、或用yum命令都可以)
5.编译 make
6.加载、运行 make install
安装完之后,通用命令可以查看一下版本 rpm -qa|grep nginx
启动nginx: cd到cd /usr/local/nginx/sbin目录 nginx 就启动了(若提示无命令,按提示安装或 yum install nginx) 默认端口为80,访问http://address (address为你的ip,本机即为localhost) 出现 nginx 信息 即成功。
eg:
二、部署tomcat
简单的部署一个web项目,加入一个test.jsp页面即可。里面的内容就加入后台的输出、前台页面显示,如:
访问该test.jsp 成功如下:
三、负载均衡集群实现
粗略解释:如图、客户端发送请求,先由nginx监听,转发给后端的tomcat,减轻单个tomcat压力,亦可保证单个tomcat挂了之后,用户请求会由其它的tomcat处理。
3.1打开nginx的配置文件nginx.conf
一般在安装目录下,不确定哪个的话使用命令 nginx -t。如:
该命令是检测加载的配置文件是否有错误,其中就有配置文件的路劲。
之后修改配置文件之后,重新加载命令 nginx -s reload
打开之后找到
server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; ………… }
listen:表示当前的代理服务器监听的端口,默认的是监听80端口。注意,如果我们配置了多个server,这个listen要配置不一样,不然就不能确定转到哪里去了。
server_name:表示监听到之后需要转到哪里去,这时我们直接转到本地,这时是直接到nginx文件夹内。
location:表示匹配的路径,这时配置了/表示所有请求都被匹配到这里
root:里面配置了root这时表示当匹配这个请求的路径时,将会在这个文件夹内寻找相应的文件,这里对我们之后的静态文件伺服很有用。
index:当没有指定主页时,默认会选择这个指定的文件,它可以有多个,并按顺序来加载,如果第一个不存在,则找第二个,依此类推。
修改为:
server { listen 80; server_name 192.168.1.60; location / { proxy_pass http://192.168.1.60:8080; } ……… }
表示 访问80端口后通过nginx转发到http://192.168.1.60:8080下;即第二步中部署的tomcat中。成功如下:
tomcat访问的是8080 此时通过nginx监听80端口转发到tomcat下得到响应。
3.2负载均衡实现多个tomcat分担请求
3.2.1 再次部署两个tomcat 通过cp命令即可。修改各自端口和tomcat下test.jsp的输出值,部署好之后,与第二步中一致。
比如修改为:
tomcat1 startup端口 8080 shutdown端口 8085 test.jsp输出为===tomcat111111===
tomcat2 startup端口 8081 shutdown端口 28085 test.jsp输出为===tomcat222222===
tomcat3 startup端口 8082 shutdown端口 38085 test.jsp输出为===tomcat333333===
3.2.2修改nginx的配置文件
#负载均衡配置
#轮询
upstream local_tomcat { server 192.168.1.60:8080 weight=1; server 192.168.1.60:8081 weight=1; server 192.168.1.60:8082 backup; } server { listen 80; server_name 192.168.1.60; location / { proxy_pass http://local_tomcat; } ………… }
upstream+名字:分别对应部署的三个tomcat,weight越大表示请求的几率就越大,backup表示备用,其它的tomcat挂掉了,访问它。
成功如下:
此时通过nginx转发到两个tomcat上,同一个地址两个tomcat交替给出响应,当停掉tomcat1,tomcat2,我们继续访问,此时会访问备用的tomcat3,如下
到此,轮询方式的负载均衡已实现。
3.3 ip_hash的方式实现负载均衡
3.3.1 修改nginx的配置文件
#负载均衡配置
#ip_hash
upstream local_tomcat { ip_hash; server 192.168.1.60:8080 weight=1 max_fails=2 fail_timeout=2; server 192.168.1.60:8081 weight=1 max_fails=2 fail_timeout=2; } server { listen 80; server_name 192.168.1.60; location / { proxy_pass http://local_tomcat; } ………… }
采用ip_hash方式可绑定请求访问ip以解决session问题,其中无backup机器,max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。 fail_timeout,在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。
测试如下:
断掉tomcat1,再访问,即会发现,全部请求都转到了tomcat2,ip_hash负载均衡就可以了。
总结:轮询方式根据比重来分配,但是不能解决session,ip_hash可以解决,但很多项目里都采用memcached来保存session,已此来保存,后续单独再弄。
四、分文件过滤,静态文件伺服
主要目的:nginx直接缓存一些静态文件、图片、css、html……,客户端发起请求,通过nginx直接返回回来,不通过tomcat处理
4.1修改nginx的配置文件
server { listen 80; server_name 192.168.1.60; #charset koi8-r; #access_log logs/host.access.log main; #jsp页面跳转 location ~ \.jsp$ { proxy_pass http://local_tomcat; } #静态文件缓存 location ~ \.(html|js|css|png|gif)$ { root /usr/local/nginx/html; } #错误页面跳转 error_page 404 /404.html; error_page 500 502 503 504 /50x.html; ………… }
修改了之前的loction /{……} 改变的判断动态的.jsp后缀交给tomcat处理,其余的一些html等等直接找/usr/local/nginx/html 该文件夹下对应的,定义了404页面。如下:
/usr/local/nginx/html文件下有如下文件:
此时访问最后一个html如下:
访问一个不存在的路径,如下:
注:如果后缀为.jsp,nginx配置文件直接转到了tomcat处理,不会经过此处的拦截,可以在nginx进行判断,也可以在项目里做处理。
到此为止,基本可以达到要求。
参考:
相关推荐
Nginx+Tomcat负载均衡企业实战.docx 本文档主要介绍了 Nginx+Tomcat 负载均衡的企业实战,涵盖了从0开始构建 Nginx WEB 平台、Tomcat WEB 集群、代码发布、Nginx 负载均衡 Tomcat 集群、动静分离、Rewrite 实战等...
Linux 下的 Nginx+Tomcat 负载均衡简单原理是指通过 Nginx 服务器来实现 Tomcat 服务器集群的负载均衡,以提高网站的可用性和性能。本文将对 Linux 下的 Nginx+Tomcat 负载均衡简单原理进行详细的介绍。 一、拓扑...
配置Nginx+Tomcat集群负载均衡的第一步是安装Nginx和多个Tomcat实例。在多台服务器上部署Tomcat,形成一个集群,确保服务的高可用性。每台服务器上的Tomcat实例都需要配置相同的应用,以处理相同类型的请求。 接...
首先大家注意: 本文章中没有session共享,关于session共享我会在下一篇中讲解,先实现Nginx+tomcat负载均衡再实现session共享。 从网上查了好多资料,多走了很多弯路,现在把自己成功的方法拿出来与大家分享。 ...
这个架构利用Nginx作为反向代理和负载均衡器,Tomcat作为Java应用服务器处理业务逻辑,而Redis则用作缓存系统以提升数据访问速度。下面我们将详细探讨这些组件的作用及其在集群环境中的配置与协同工作。 **Nginx** ...
本文将详细介绍如何在Windows环境下进行Nginx+Tomcat负载均衡及集群的搭建过程,适合初学者参考。 #### 二、准备工作 1. **下载Nginx** - 访问官方下载页面:[http://nginx.org/en/download.html]...
Keepalived+Nginx+Tomcat 高可用集群搭建实战记录 Keepalived 是一种高可用性解决方案,可以与 Nginx 和 Tomcat 配合使用来实现高可用集群。下面是 Keepalived+Nginx+Tomcat 高可用集群搭建的实战记录。 ...
【Nginx+Tomcat负载均衡集群部署】 在IT领域,构建高可用和高并发的Web服务是至关重要的。Nginx与Tomcat的组合是一个常见的解决方案,因为Nginx作为反向代理和负载均衡器,能有效分发流量到多个后端Tomcat服务器,...
### Nginx+KeepAlived+Tomcat负载架构详解 #### 一、概述 随着互联网应用的日益增多,单一服务器已经难以满足高并发、高可用性的需求。因此,越来越多的企业开始采用集群技术来提高系统的稳定性和扩展性。本文将...
### Nginx+Tomcat负载均衡配置教程 #### 一、Nginx 安装与配置 **1. 下载并安装Nginx** - **下载Nginx**:前往Nginx官方网站下载适合您操作系统的最新版本。推荐下载稳定版以确保运行稳定。 - **解压文件**:将...
在配置Nginx+Tomcat的负载均衡集群时,主要步骤包括以下几个方面: 1. **安装Nginx和Tomcat**:在Windows上,你可以从官方网站下载Nginx和Tomcat的安装包,按照指南进行安装。确保Nginx和所有Tomcat实例在同一网络...
在构建高性能、高可用性的Web服务时,"nginx+tomcat 负载均衡简易配置与动静分离"是一个常见的架构模式。Nginx作为一个轻量级的反向代理服务器,通常用于处理静态内容和实现负载均衡,而Tomcat作为Java应用服务器,...
总之,“Windows+Nginx+Tomcat做负载均衡同时实现session共享Demo”是一个实践性强的教学资源,它涵盖了Web服务集群中的关键技术和最佳实践,对于学习和提升系统架构能力非常有帮助。通过深入理解和实践这个Demo,...
Nginx+Tomcat7+Mencached负载均衡集群部署,自己写的一个session和cookie管理包.
- **负载均衡**:Nginx可以基于多种策略(如轮询、最少连接、IP哈希等)分配请求到不同的Tomcat实例,从而实现负载均衡,提高系统的可用性和响应速度。 - **静态资源处理**:Nginx对静态文件(如CSS、JavaScript、...
在构建高性能、高可用的Web服务时,"nginx+redis负载均衡、session共享"是一个常见的解决方案。这个方案结合了Nginx的反向代理和负载均衡能力,以及Redis的内存数据存储和分布式特性,用于处理高并发场景下的HTTP...
nginx+tomcat+memcached集群和负载均衡所有资源包,具体集群方法请参见博文:http://blog.csdn.net/l1028386804/article/details/48289765
本教程将详细讲解如何通过`Nginx`实现`Tomcat`集群的负载均衡,并实现`session`共享。 首先,我们要理解负载均衡的基本概念。负载均衡是通过将工作负载分散到多个计算资源,以优化资源使用、最大化吞吐量、最小化...
Tomcat要支持memcached管理Session,需要调用一些jar库文件如下(网上有的文章中可能所说的jar包不全,或者版本不样的会报错,但这里我已经经过验证了): 1) couchbase-client-1.2.2.jar 2) javolution-5.5.1....
1. **Nginx**:Nginx是一款高性能的反向代理服务器,通常用作负载均衡器。它能够接收用户的HTTP请求,并根据预设策略将请求转发到后端的Tomcat服务器。在session共享场景中,Nginx可以配置为将带有特定session ID的...