您的位置:首页 > 运维架构 > Tomcat

(nginx|apache)+tomcat 几种常见的代理实现方式及连接类型(connector type) 推荐

2014-05-11 13:49 761 查看



简单描述一下nginx两块网卡,eth1外网,eth0内网与tomcat eth0通信,用户请求静态内容由nginx直接响应,动态内容则nginx转发至后端tomcat响应
安装nginx,tomcat不再描述。

nginx的配置文件如下:/etc/nginx/nginx.conf
[root@node5 ~]# pnginx
worker_processes  1;
events {
worker_connections  1024;
}
http {
include       mime.types;
default_type  application/octet-stream;
sendfile        on;
keepalive_timeout  65;
server {
listen       80;
server_name  localhost;
location / {
root   html;
index  index.html index.htm;
}
location ~* \.(jsp|do)$ {
proxy_pass http://172.16.251.23:8080; }
error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   html;
}
}
}
访问测试,把相应的样式表,图片复制到nginx页面目录即可如下图:



以下介绍apache + tomcat 反向代理设置




1,介绍,apache(mod_proxy)+tomcat(安装配置简单,动静分离相对复杂,简单介绍反代动态资源)

tomcat安装不再描述。

安装apache

yum install httpd -y
通过http协议进行对后端的服务器的代理,配置如下:
新建并编配置文件: vim /etc/httpd/conf.d/mod_proxy.conf
[root@node5 conf.d]# cat mod_proxy.conf
ProxyVia on
ProxyRequests off
ProxyPreserveHost on
ProxyPass / http://172.16.251.24:8080/ ProxyPassReverse / http://172.16.251.24:8080/ <Location />
Order Allow,Deny
Allow from all
</Location>


也可以通过ajp协议进行对后端的服务器的代理,配置如下:
新建并编配置文件: vim /etc/httpd/conf.d/mod_proxy.conf
[root@node5 conf.d]# cat mod_proxy.conf
ProxyVia on
ProxyRequests off
ProxyPreserveHost on
ProxyPass / ajp://172.16.251.24:8009/
ProxyPassReverse / ajp://172.16.251.24:8009/
<Location />
Order Allow,Deny
Allow from all
</Location>
分别启动tomcat ,apache进行测试
2,介绍apache(mod_jk)+tomcat(ajp connectors) 代理通信的简单配置
安装apache
[root@node5 conf.d]yum install httpd httpd-devel -y
[root@node5 software]# tar xf tomcat-connectors-1.2.37-src.tar.gz
[root@node5 software]# cd tomcat-connectors-1.2.37-src/native/
[root@node5 native]# pwd
/software/tomcat-connectors-1.2.37-src/native
[root@node5 native]# which apxs
/usr/sbin/apxs
[root@node5 native]# ./configure --with-apxs=/usr/sbin/apxs
[root@node5 native]#make && make install
查看安装下的connector module
编辑文件 /etc/httpd/conf.d/mod_jk.conf
[root@node5 conf.d]# cat mod_jk.conf
LoadModule jk_module modules/mod_jk.so
JkWorkersFile /etc/httpd/conf.d/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel notice
JkMount /* Node4_TomcatA
JkMount /status stat1
编辑文件 /etc/httpd/conf.d/workers.properties
[root@node5 conf.d]# cat workers.properties.bk
worker.list=Node4_TomcatA,stat1
worker.Node4_TomcatA.type=ajp13
worker.Node4_TomcatA.port=8009
worker.Node4_TomcatA.host=172.15.251.24
worker.Node4_TomcatA.lbfactor=1
worker.stat1.type = status
配置完成进行测试
截图如下所示:



完成!



基于apache(mod_jk)+tomcat的负载均衡集群的配置(架构图如上所示)
此架构对上一架构的补充,只是后端增加了一台或多台tomcat,前端apache中的配置文件修改为如下
编辑文件 /etc/httpd/conf.d/mod_jk.conf
LoadModule jk_module modules/mod_jk.so
JkWorkersFile /etc/httpd/conf.d/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel notice
#JkLogLevel debug
JkMount /* lbcluster1
JkMount /jklbcstatus/ stat1
编辑文件 /etc/httpd/conf.d/workers.properties

worker.list=lbcluster1,stat1
worker.Node4_TomcatA.type=ajp13
worker.Node4_TomcatA.port=8009
worker.Node4_TomcatA.host=172.15.251.24
worker.Node4_TomcatA.lbfactor=1
worker.Node3_TomcatB.type=ajp13
worker.Node3_TomcatB.port=8009
worker.Node3_TomcatB.host=172.15.251.23
worker.Node3_TomcatB.lbfactor=1
worker.lbcluster1.type = lb
worker.lbcluster1.sticky_session = 1
worker.lbcluster1.balance_workers = Node3_TomcatB,Node4_TomcatA
worker.stat1.type = status
配置完成启动两台tomcat服务器,测试的结果还不能session保持



session会话保持的具体实现
如上图中的架构中,在两台tomcat服务器上,分别创建,如下目录结构和文件




两台tomcat服务器中,index.jsp文件内容分别如下

<%@ page language="java" %>
<html>
<head><title>Node4_TomcatB</title></head>
<body>
<h1><font color="red"><center>Node4_TomcatB </font></h1>
<center>
<table align="centre" border="1">
<tr>
<td>Session ID</td>
<% session.setAttribute("abc","abc"); %>
<td><%= session.getId() %></td>
</tr>
<tr>
<td>Created on</td>
<td><%= session.getCreationTime() %></td>
</tr>
</table>
</body>
</html>


<%@ page language="java" %>
<html>
<head><title>Node3_TomcatA</title></head>
<body>
<h1><font color="red"><center>Node3_TomcatA </font></h1>
<center>
<table align="centre" border="1">
<tr>
<td>Session ID</td>
<% session.setAttribute("abc","abc"); %>
<td><%= session.getId() %></td>
</tr>
<tr>
<td>Created on</td>
<td><%= session.getCreationTime() %></td>
</tr>
</table>
</body>
</html>
两台tomcat服务器中,web.xml文件内容如下
复制tomcat自带web.xml到相应的目录,并增加字符串:<distributalbe/>
两台tomcat服务器中,在server.xml文件engine段,增加内容如下:

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="8">
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.66.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="4000"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=""/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
两台tomcat服务器中,分别增加路由
route add -net 228.66.0.4 netmask 255.255.255.255 dev eth0
设置完成分别启动tomcat 提示出现如下信息,说明配置成功



在前端http进行测试刷新页面,对应的sessid始终如一。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐