前面我已经写了centos安装nginx服务、及centos安装部署多个tomcat应用服务器的文章。这两篇文章都是单独部署的,nginx和tomcat之间并无联动关系,下面我将记录下nginx代理、负载均衡多个tomcat的配置和部署。
准备工作:
-
nginx服务器能正常单独运行
-
多个tomcat能正常单独运行(一个tomcat表示同一应用的多个节点)
模拟情景:
我们工作中往往会遇到用户高并发的情况,这种情况下如果是部署单一的应用服务器在性能上可能有些吃不消,可能导致应用服务器的宕机,为了避免单一服务器的各种原因的宕机,我们寻找集群的方式来解决这个问题。例如我们可以将同一个应用部署多个服务器,然后通过统一的代理服务器来将用户请求分发给这些应用服务器;这样做的好处有三点,第一就是直接减轻了单个服务器的并发压力;第二就是提高了应用服务器对外提供服务的可靠性,因为多台服务器中任何一台宕机都不影响用户使用;第三点就是方便应用的升级,可以说是0断线的升级,我们只需要依次将多个服务器按照先后顺序进行升级就好了。
Nginx、tomcat负载均衡配置:
主要是更改nginx的conf目录下的nginx.conf文件,具体配置如下:
user root root;
worker_processes 2;
pid /opt/nginx/logs/nginx.pid;
error_log /opt/nginx/logs/error.log;
worker_rlimit_nofile 102400;
events
{
use epoll;
worker_connections 102400;
}
http
{
include mime.types;
default_type application/octet-stream;
fastcgi_intercept_errors on;
access_log /opt/nginx/logs/access.log;
charset utf-8;
server_names_hash_bucket_size 128;
client_header_buffer_size 4k;
large_client_header_buffers 4 32k;
client_max_body_size 300m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
client_body_buffer_size 512k;
proxy_connect_timeout 5;
proxy_read_timeout 60;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
log_format main '$http_x_forwarded_for - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $request_time $remote_addr';
upstream web_app {
server 192.168.32.128:8080 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.32.128:8081 weight=1 max_fails=2 fail_timeout=30s;
}
server {
listen 80;
server_name chenfeng.test.com;
index index.jsp index.html index.htm;
root /jeff/zx/;
location /
{
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://web_app;
expires 3d;
}
}
}
可以看到这个配置upstream web_app 中我将已经安装配置好的tomcat服务器进行了指向。
至此我已经将nginx和tomcat进行了负载均衡配置,接下来就是重新启动nginx服务器
可以看到当我们输入原来的localhost请求地址时,返回的界面已经改成了两个tomcat中的一个,而不是原来的nginx的欢迎界面了。
集成前localhost返回界面如下图:
集成后localhost返回的是tomcat1,如下图所示:
此时我继续刷新一下浏览器,可以看到返回的是tomcat2了,如下图所示:
至此验证了我的配置是成功的,nginx已经反向代理了tomcat1、tomcat2应用服务,并且在我刷新时自动切换tomcat1和tomcat2,这就代表了nginx已经正确的按照配置进行了负载均衡工作。
此时我还想继续验证nginx服务器在其中一个tomcat应用服务器宕机的情况下会出现什么情况,这里宕机我就直接将tomcat1的服务器停掉
可以看到我将tomcat1停掉后单独访问tomcat1的服务地址localhost:800时已经不能正常访问了,如下图所示:
此时我访问nginx代理服务器地址localhost时,看看还能不能正常访问,可以看到此时nginx还是能正常访问的,只不过现在每次刷新地址都返回的是tomcat2的页面了,nginx自动将宕机的tomcat1剔除了负载均衡的队列了,如下图:
这个时候如果我又把tomcat1启动,会出现什么情况呢
这个时候可以看到单独访问tomcat1地址时,已经能够正常访问了,如下图:
这时我在访问nginx地址,并多刷几次,可以考到tomcat1有被自动加到了nginx负载均衡中,请求返回都在tomcat1和tomcat2之间进行切换了,至此我这里成功的验证了各种情况,可以满足我前面所说的三个主要应用模拟情景了。
附言:nginx.conf文件中的配置项中文释义可能没有进行说明,我这里直接引用别人的文章进行说明好了,有兴趣的可以看下面两个地址的内容,基本说本很清楚明了了。
http://blog.csdn.net/tjcyjd/article/details/50695922
http://www.cnblogs.com/sayou/p/3319635.html
相关推荐
要实现负载均衡,需要在 Nginx 服务器上配置 upstream 模块,以便将请求分配到多台 Tomcat 服务器上。具体配置如下: 1. upstream netitcast.com { server 127.0.0.1:18080 weight=1; server 127.0.0.1:28080 ...
这个方案结合了Nginx的反向代理和负载均衡能力,以及Redis的内存数据存储和分布式特性,用于处理高并发场景下的HTTP请求,并确保用户会话(session)在多台服务器之间的一致性。 首先,我们来详细了解一下Nginx。...
配置Nginx+Tomcat集群负载均衡的第一步是安装Nginx和多个Tomcat实例。在多台服务器上部署Tomcat,形成一个集群,确保服务的高可用性。每台服务器上的Tomcat实例都需要配置相同的应用,以处理相同类型的请求。 接...
`nginx`作为一款高性能的反向代理服务器和负载均衡器,常用于处理静态资源和分配请求,而`tomcat`则是Java应用服务器,专门处理动态内容。本文将深入探讨如何利用`nginx`和`tomcat`实现负载均衡,以提升系统性能和...
在实际部署中,我们需要配置Nginx的反向代理规则,指定多个Tomcat7实例作为后端服务器。同时,要设置session sticky,确保同一用户的请求被定向到同一个Tomcat实例,以维护session一致性。接着,配置Redis与Tomcat7...
2. 安装Tomcat:部署多个Tomcat实例,每个实例运行在不同的端口上,以处理来自Nginx的请求。 3. 安装keepalived:解压`keepalived-1.2.22.tar.gz`,编译安装,并配置keepalived的配置文件,指定虚拟IP、主备Nginx...
3. **负载均衡与容错**:Nginx支持简单的负载均衡机制,能够有效地分散流量至多个后端服务器,并具备一定的容错能力。 4. **丰富的HTTP服务器功能**:Nginx提供了一系列标准的HTTP服务器功能,如日志记录、数据压缩...
- **整体架构**:采用Nginx作为反向代理,后端部署多个Tomcat实例,利用KeepAlived实现Nginx的主备切换,形成一套完整的高可用架构。 - **关键组件**: - **Nginx**:作为前端负载均衡器。 - **KeepAlived**:用于...
Terracotta是一个开源的Java集群框架,它允许在多个Tomcat服务器之间共享session数据,确保用户在集群中的任意节点切换时,其会话状态仍能保持连续。Terracotta通过监听和同步session对象,解决了跨服务器的会话复制...
`Nginx`作为一款高性能的反向代理服务器,常被用于负载均衡,而`Tomcat`则是一款广泛使用的Java应用服务器,尤其适合处理Servlet和JSP应用。本教程将详细讲解如何通过`Nginx`实现`Tomcat`集群的负载均衡,并实现`...
首先,Nginx是一个强大的HTTP和反向代理服务器,它能够通过分发请求到多个后端服务器来实现负载均衡。Nginx支持多种负载均衡策略,如轮询、最少连接数、IP哈希等。例如,可以使用以下配置实现轮询策略: ```nginx ...
在本配置中,nginx 作为反向代理服务器,将用户的请求分配到多个 Tomcat 服务器上,以便实现负载均衡。 二、Redis Session 共享 Redis 是一个高性能的 NoSQL 数据库,经常用于实现 Session 共享。在本配置中,...
本教程将探讨如何在Windows环境中利用Nginx作为反向代理服务器,与多个Tomcat实例配合,搭建一个负载均衡和集群的系统。这个压缩包包含多个版本的Tomcat,即qdky-tomcat-6.0.44.6、qdky-tomcat-6.0.44.5、qdks-...
Nginx与Tomcat的组合是一个常见的解决方案,因为Nginx作为反向代理和负载均衡器,能有效分发流量到多个后端Tomcat服务器,提高系统性能和稳定性。以下是对【标题】“nginx+tomcat负载均衡集群思路步骤过程.docx”和...
LVS是Linux内核中的一个负载均衡模块,通过IP负载均衡技术和TCP负载均衡技术,将来自网络的请求分发到多个后端服务器。在这个拓扑中,有两台LVS服务器,一台作为主(master),一台作为备(slave)。当主LVS出现...
现在,Nginx将根据配置的负载均衡策略将用户请求分发到两个Tomcat服务器,从而提高服务的稳定性和性能。 这个配置仅是最基础的轮询负载均衡,Nginx还支持更复杂的负载均衡策略,如权重分配、最少连接数、IP哈希等,...
接着,需要在多台服务器上部署多个Tomcat实例,确保它们可以正确处理来自Nginx的请求。每个Tomcat实例应配置不同的监听端口,以便Nginx可以区分并分发请求。 对于Redis,需要在所有相关服务器上安装并配置。为了...
本教程将详细介绍如何在Win7系统上配置Nginx作为反向代理,实现对多个Tomcat实例的负载均衡。 1. **Nginx介绍** Nginx是一款高性能的HTTP和反向代理服务器,以其轻量级、稳定性和高并发处理能力而著名。在负载均衡...