wKiom1NvEDLRMq7DAAEI7vXmAro878.jpg

简单描述一下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页面目录即可如下图:

wKioL1NvMRvj7gieAAST2DsvcAc140.jpg

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

wKioL1NvEAiTMCDlAAFnUxB21bw698.jpg

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/
ProxyPa***everse / 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/
ProxyPa***everse / 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

配置完成进行测试

截图如下所示:

wKiom1NvdF3xCwDFAAMKVjROyhs816.jpg

完成!

wKioL1Nve1OhJC35AAFQz6zufPI051.jpg

基于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保持

wKioL1NviF6Sw6JFAAOny29Jmz8789.jpg

session会话保持的具体实现

   如上图中的架构中,在两台tomcat服务器上,分别创建,如下目录结构和文件

wKiom1Nw0BLxDrO3AAEJmsiNLkc235.jpg

两台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 提示出现如下信息,说明配置成功

wKioL1Nw1MCgB_a9AANDLy4njRI136.jpg

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

wKioL1Nw1a2AwkBZAAEvORMK-to939.jpg