前面我已经写了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
相关推荐
Tomcat服务器作为一个Web服务器,其并发数在300-500之间,如果有超过500的并发数便会出现Tomcat不能响应新的请求的情况,严重影响网站的运行。另外,在访问量大的情况下,Tomcat的线程数会不断增加。由于Tomcat自身...
基于nginx的tomcat负载均衡和集群 实现多服务器负载均衡 系统性能优化 数据库 Nginx+Squid负载均衡 配置好的集群 总共三十个文档">Apache+Tomcat+Session+Memcache 高性能群集搭建 J2EE性能调优 Jboss的优化配置 ...
Nginx + Tomcat 反向代理 如何在一台服务器部署多个站点,节省服务器开支,就在这篇文章了。 首先我们需要安装好Nginx、jdk、Tomcat,安装方法已经在 上一篇 说过了,本篇不再赘述。 下来看一下我们的需求,我这里有...
下载nginx;下载tomcat ;配置nginx ;多个tomcat负载
Linux下安装nginx和安装多个tomcat的方法这里不过多介绍,不清楚的可参考: Linux安装nginx: https://www.jb51.net/article/159519.htm Linux安装多个tomcat: https://www.jb51.net/article/159521.htm 当我们...
Nginx负载均衡【`重点`】Nginx为我们默认提供了三种负载均衡的策略: 轮询:将客户端发起的请求,平均的分配给每一台服务器。 权重:会将客户端的请求,根据服务器的权重值不同,分配不同的数量。 ip_...
服务器集群(Cluster)使得多个服务器节点能够协同工作,根据目的的不同,服务器集群可以分为: 高性能集群:将单个重负载的请求分散到多个节点进行处理,最后再将处理结果进行汇总 高可用集群:提高冗余单元,避免单...
负载均衡的基本概念 负载平衡(Load balancing)是一种计算机网络技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最佳化资源使用、最大化吞吐率、最小化响应时间、...
这里已经完整的配置了nginx的地址映射和负载均衡,只需要将里面的服务改成本地的多个Tomcat的就行了。关注我 可以到2017-4-29写的博客看详情 博客名:简单认识Nginx---负载均衡
Nginx是一个高性能的HTTP服务器/反向代理服务器及电子邮件(IMAP/POP3...在这里我们采用集群部署方式,使用多个Tomcat,反向代理使用Nginx。 架构如下: 准备工作 apache-tomcat-7.0.61 nginx-1.12.2 Redis-x64-3.2.10
目录 常见WEB服务器 1 ...4.1、在Linux上安装多个Tomcat 11 4.1.1解压tomcat 11 4.1.2修改tomcat2中server.xml 11 4.1.3 Nginx的负载均衡的配置: 12 4.1.1 配置Tomcat的session共享可以有三种解决方案: 13
集群部署即一个应用多实例部署,通过负载均衡将客户端高并发求情分散到集群部署的多个实例中去,实例处理完客户端请求,将结果返回个客户端; 集群部署的服务器对外提供统一访问接口,后端的部署对客户端来说是透明...
nginx常用做静态内容服务和反向代理服务器,直面外来请求转发给后面的应用服务(tomcat,django什么的),tomcat更多用来做做一个应用容器,让java webapp跑在里面的东西,对应同级别的有jboss,je
nginx window版本的 主要用户服务的代理转发 ,用于多个tomcat 服务器的集群 和负载均衡
样才能真正实现后台多个Tomcat负载平衡,用户请求能够发往任何一个tomcat主机。 keeplived、zabbix与ansible暂不在本文章的范围当中,会在之后的文章逐一进行讲解 实验架构图 部署环境 CentOS7 Nginx1.10.2 ...
Tomcat9集群负载使用Nginx,session同步使用Redis,使用Tomcat自带FarmWarDeployer功能实现应用部署到一个服务器上,集群就会将部署分发到整个集群的各个节点中,本文描述全部由亲自试验所得,部分源码借鉴各位无私...
nginx常用做静态内容服务和代理服务器(不是你FQ那个代理),直面外来请求转发给后面的应用服务(tomcat,django什么的),tomcat更多用来做做一个应用容器,让java web app跑在里面的东西,对应同级别的有jboss,...
这类分布式的系统,一般也都会用到nginx来做负载均衡。 从公司刚成立就进来,赶鸭子上架来做架构师,负责公司的所有研发事情,搭建公司的整个技术架构,起初的所有核心业务代码基本都由自己亲自把关来进行编码。系统...
如果一台服务器装多个tomcat,那么即使是负载均衡,性能也提高不了太多,不过可以提高稳定性,即容错性。当其中一个主tomcat当掉,其他的tomcat也可以补上,因为tomcat之间实现了Session共享。待tomcat服务器修复后再次...
如果在多个服务器上分别启动tomcat 则不存在此问题。 2.实现Nginx集群 修改nginx.conf配置文件,实现集群 3.Redis实现Session 共享 在tomcat/lib 目录下添加以下三个jar 包 然后更改tomcat的context.xml文件 然后...