一、Tomcat的连接方式:
Tomcat与Web服务器的连接方式有两种:
- HTTP
- AJP
Tomcat7所支持的本地连接:
JK 1.2 .x
mod_proxy (Apache HTTP Server 2.2默认包含)
其他AJP连接器可能可以工作,但不再维护。
二、Tomcat 与 Apache HTTP Server2.4连接
- HTTP连接
从上面的说明可以看出,如果你只需要一个Tomcat,那就直接用就好了,不用和Apache HTTP Server连接。如果需要多个Tomcat集群,就是AJP连接。所以用HTTP连接Apache和Tomcat这种情况应该不多,简单说明一下怎么连接:
取消两个module的注释:
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so在httpd.conf文件中添加以下两行:
ProxyPass /webappname http://ip:8080/webappname ProxyPassReverse /webappname http://ip:8080/webappnameip、端口号和webappname根据实际情况修改
说明:上述写法可能有安全隐患。不要使用ProxyRequests启用代理,除非对代理做了权限控制。否则对你的网络和互联网都是很大的危险。默认ProxyRequests为off。参考:http://httpd.apache.org/docs/2.4/mod/mod_proxy.html#access
- AJP连接
JK是老牌连接器,被广泛使用和验证,值得信任,但是配置比较复杂。
mod_proxy是Apache2.2以后的默认设置,配置简单,但是因为比较新,所以没有经过大范围的验证。
网上JK的文档比较多,这里我们介绍一下mod_proxy的写法。其实跟HTTP的方式一样,只是把http://修改为ajp://就可以了。
取消两个module的注释
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so在httpd.conf文件中添加以下两行:
ProxyPass /webappname ajp://ip:8009/webappnameip、端口号和webappname根据实际情况修改
AJP连接通常不需要设置ProxyPassReverse。
三、Apache HTTP Server2.4集群配置
如文章开始所述,Apache Http Server和Tomcat集群要用AJP方式连接
1、modules
同样集群可以用JK和mod_proxy两种方式,这里介绍mod_proxy的方式:
取消五个module的注释
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule slotmem_shm_module modules/mod_slotmem_shm.so LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so根据负载均衡调度策略的不同,取消如下module的注释
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so2、示例配置:
<Proxy balancer://mycluster> BalancerMember ajp://ip:8019 loadfactor=1 route=tomcat7_a BalancerMember ajp://ip:8029 loadfactor=2 route=tomcat7_b BalancerMember ajp://ip:8009 status=+H ProxySet lbmethod=bytraffic </Proxy> ProxyPass /examples balancer://mycluster/examples说明:
<Proxy balancer://mycluster>定义一个集群,起个名字。
BalancerMember ajp://ip:8019 loadfactor=1 route=tomcat7_a BalancerMember ajp://ip:8029 loadfactor=2 route=tomcat7_b定义集群成员。loadfactor是权重,数值越大权重越大被分配的请求约多。route和Tomcat中配置的jvmRoute一至
还有一些参数可以添加,比如:max=20 ttl=120 retry=300 timeout=15
BalancerMember ajp://ip:8009 status=+H
热备服务器,只有在上面的BalancerMember都坏掉之后才会被启用。
ProxySet lbmethod=bytraffic
现有3种负载均衡调度策略
byrequests:请求计数(Request Counting)
bytraffic:流量加权计数(Weighted Traffic Counting)
bybusyness:挂起请求计数(Pending Request Counting)
默认是byrequests
ProxyPass /examples balancer://mycluster/examples设置代理连接。
3、负载均衡器的粘性
当一个请求被代理到某个节点,接下来同一个用户的请求都将被代理到相同的节点。很多均衡器通过一张记录客户端ip和节点的关系表来实现这个特性。这种方式对客户端和节点都是透明的,但是存在一些问题:如果客户端藏在某些代理之后将导致负载分布不均,当客户端使用动态IP地址,并在请求间变更,将失去粘性,关系表溢出将导致错误等问题。
mod_proxy_balancer通过两种方式实现粘性:cookies和URL encoding。cookie可以被Apache服务器和节点使用,URL encoding通常在节点中使用。
下面的例子使用mod_headers提供负载均衡粘性,即使节点服务器没有设置合适的session cookie。
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED <Proxy balancer://mycluster> ...... </Proxy> ProxyPass /test balancer://mycluster
以下配置同时支持cookies和URL encoding
ProxyPass /test balacer://mycluuster stickysession=JSESSIONID|jsessionid scolonpathdelim=On <Proxy balancer://mycluster> BlancerMember http://192.168.1.50:80 route=node1 BlancerMember http://192.168.1.51:80 route=node2 </Proxy>
4、Log
LogFormat "%v %h %l %u %t \"%r\" %{Set-Cookie}o %{BALANCER_SESSION_STICKY}e %{BALANCER_SESSION_ROUTE}e %{BALANCER_WORKER_ROUTE}e %>s %b" balance_common CustomLog logs/balance_log balance_common
将集群的日志写到Apache服务器目录下的logs/balance_log文件中。
5、均衡器管理界面
需要mod_status。管理页面可以动态更新集群成员,修改平衡器的属性和特定成员或使之离线。
<Location /balancer-manager> SetHandler balancer-manager Require ip 192.168 </Location>
你可以通过http://your.server.name/balancer-manager访问管理页面。
注意,只有balancers在<Location ...>之外定义,才能使用管理页面。
四、Tomcat 与 Nginx连接
- HTTP连接
server { listen 82; server_name localhost; location / { proxy_pass http://ip:8080; } }
在nginx.conf文件中添加一个server{},listen设置端口,server_name设置域名,location设置目录。
proxy_pass是http代理,指向tomcat地址。
修改后conf后,nginx -s reload就可以热更新了,很方便。
- AJP连接
有人的测试结果是Nginx通过HTTP连接Tomcat 性能略强于Apache通过AJP连接Tomcat。
Nginx本身并不支持AJP连接,但有人写了一个nginx_ajp_module来支持ajp。由于是第三方控件,所以请在充分测试后使用。
1、下载地址:
2、安装
$ cd nginx_dir/ $ patch -p1 < /tools/nginx_ajp_module/ajp.patch $ ./configure --prefix=/usr/nginx1.5.3 --add-module=/tools/nginx_ajp_module $ make $ make install
先到nginx安装文件的目录下,打ajp补丁,重新配置configure,编辑,安装。
3、配置nginx.conf文件
server { listen 82; server_name localhost; location / { ajp_keep_conn on; ajp_pass ajp://ip:8009; } }
ajp_keep_conn设置是否保持连接
ajp_pass这是Tomcat ajp连接地址和端口。
五、Nginx集群配置
- HTTP
upstream tomcat_http { ip_hash; server 192.168.50.65:8090 weight=2; server 192.168.50.65:8091 max_fails=3 fail_timeout=30s; keepalive 10; } server { listen 82; server_name localhost; location / { proxy_pass http://tomcat_http; } }
在nginx.conf文件中配置。用upstream定义一组服务器。
ip_hash通过记录客户端ip实现粘性session。有一个第三方的module可以用cookie实现粘性:https://code.google.com/p/nginx-sticky-module/
通过server定义多个服务器。
weight是权重,默认为1。
max_fails和fail_timeout配合使用,在fail_timeout时间内通信失败达到max_fails的次数后,此服务器在fail_timeout时间内被认为不可用。
keepalive为连接开启缓存,并设置缓存连接的最大数量。
将proxy_pass后的服务器地址,变为upstream的名字。
- AJP
upstream tomcat_ajp { server 192.168.50.65:8019 srun_id=tomcat7_a weight=2; server 192.168.50.65:8029 srun_id=tomcat7_b; jvm_route $cookie_JSESSIONID reverse; keepalive 10; } server { listen 82; server_name localhost; location / { ajp_keep_conn on; ajp_pass tomcat_ajp; } }
upstream定义一组服务器
srun_id同Tomcat配置中Engine的jvmRoute。
jvm_route $cookie_JSESSIONID reverse是用cookie方式实现粘性session
ajp_pass指定连接到哪个upstream上
相关推荐
#### 十、Nginx集群部署与负载均衡 ##### 8.1 集群部署 1. 将多台Tomcat服务器配置为相同的版本和配置。 2. 使用Nginx作为前端代理,统一接收客户端请求。 ##### 8.2 负载均衡策略 - **轮询**:按顺序将请求发送到...
总结来说,Nginx+Tomcat集群配置涉及到的主要知识点有:Nginx的反向代理和负载均衡功能、Tomcat的Java应用服务、集群架构的高可用性、配置文件的编写、内存缓存系统如Memcached的使用以及Nginx的安装与配置。...
windowXP下搭建nginx-1.7.10和apache-tomcat-8.0.18的集群 已经配置好,下载后直接启动三个tomcat和nginx,然后访问http://localhost/即可。
1. 安装与配置Nginx:首先在服务器上安装Nginx,然后配置Nginx的反向代理和负载均衡设置,指定后端Tomcat服务器的IP和端口。 2. 安装与配置Redis:安装Redis服务器,并根据需求配置Redis的持久化、安全性、网络通信...
本主题将深入探讨如何在Linux环境下利用Nginx与Tomcat构建服务器集群,以实现负载均衡和优化性能。Nginx以其高性能的反向代理和静态文件处理能力而闻名,而Tomcat作为Java应用服务器,擅长运行Java Servlets和JSP。...
【标题】:“Tomcat集群配置” 在Web应用的高可用性和可扩展性需求日益增长的今天,Tomcat集群成为了一个重要的解决方案。Tomcat集群能够通过负载均衡和故障转移来提高服务的稳定性和性能。以下是对Tomcat集群配置...
本篇文章将详细讲解如何使用Nginx作为反向代理服务器来实现对Tomcat应用服务器的负载均衡和集群配置。 首先,我们需要理解Nginx和Tomcat的角色。Nginx是一款高性能的HTTP和反向代理服务器,常用于处理静态内容和...
**标题:Redis+nginx集群部署** **描述:**在本实践中,我们将结合Tomcat应用服务器、Nginx反向代理服务器以及Redis作为会话存储来建立一个高可用、负载均衡的Web集群。Nginx负责将用户请求分发到各个Tomcat实例,...
5. **集群配置**:在搭建过程中,首先需要安装并配置多个Tomcat实例,然后配置Nginx作为负载均衡器。接着,安装Redis服务器,并配置Tomcat使用Redis Session Manager,确保会话在集群间共享。最后,通过Nginx的配置...
在构建高可用的Web服务时,Nginx作为反向代理服务器和负载均衡器,常常与Tomcat这样的Java应用服务器配合使用。然而,当多个Tomcat实例构成集群时,会面临一个问题:用户session的共享。Session是Web应用程序用来...
* Nginx的服务器集群配置和负载均衡 * Tomcat的集群配置和负载均衡 * 负载均衡的实现原理和效果 通过上述步骤和知识点,我们可以实现高性能负载均衡的Tomcat集群,以提高系统的可扩展性和高性能。
在"ClusterValidate"这个文件中,可能包含了验证Tomcat集群配置和Nginx负载均衡设置的脚本或文档。这些资源可以帮助我们检查集群的健康状态,确保各个节点之间的通信正常,以及Nginx能否正确转发请求。 总的来说,...
3. **负载均衡**:通过配置Nginx的负载均衡策略(如轮询、最少连接、IP哈希等),可以将请求分发到多个Tomcat实例,提高系统的服务能力和容错性。 4. **缓存**:Nginx还可以作为缓存服务器,对常用或耗时的动态内容...
本教程将探讨如何在Windows环境下,利用Nginx作为反向代理和负载均衡器,与Tomcat应用服务器配合,搭建一个负载均衡和集群环境。这种配置能够提升系统的稳定性和处理能力,确保即使在服务器压力大的情况下,也能为...
在高并发或大型项目中,通常会采用Apache与多台Tomcat集群的方式提高系统性能和可用性。下面将详细介绍这个配置过程。 1. **Apache HTTP Server配置** Apache HTTP Server(简称Apache)作为反向代理服务器,可以...
Tomcat是Apache软件基金会的Java Servlet和JavaServer Pages(JSP)容器,用于运行Java Web应用程序。在Nginx+Tomcat的架构中,Tomcat作为后端应用服务器,处理由Nginx转发过来的业务请求。通过设置多个Tomcat实例,...
这个组合将轻量级的Nginx反向代理服务器与强大的Java应用服务器Tomcat结合,同时通过SSL/TLS协议提供安全的HTTPS连接。下面我们将深入探讨这个组合的各个组成部分及其工作原理。 首先,Nginx是一个开源的Web服务器...
本文将详细介绍如何使用`nginx-1.5.4`作为反向代理和负载均衡器,结合`apache-tomcat-7.0.42`作为Java应用服务器进行集群部署。 **一、Nginx介绍** Nginx是一款高性能的HTTP和反向代理服务器,以其轻量级、稳定性...
6. **监控与维护**:为了确保集群的稳定运行,需要定期监控Nginx、Tomcat和Memcached的服务状态,以及session的命中率、存储容量等指标。此外,还需要考虑容错机制,例如,当某个Tomcat实例宕机时,Nginx应能自动将...
在配置nginx时,需要了解如何配置upstream模块来设置Tomcat集群,以及如何配置location模块来根据请求类型转发到不同的服务器。 综合以上知识点,Tomcat在Java Web应用部署中扮演着至关重要的角色。其与JDK的紧密...