Nginx/httpd 代理兩個Tomcat

Nginx

前端代理服務器172.16.71.1

從ftp下載Nginx

安裝

vim /etc/nginx/nginx.conf

http {
...
# 添加以下內容
upstream tcsrvs {
        server 172.16.71.4:8080;
        server 172.16.71.5:8080;
    }
...
}
vim /etc/nginx/conf.d/default.conf

location / {
   root   /usr/share/nginx/html;
   proxy_pass http://tcsrvs/;  #添加此行
   index  index.html index.htm;
}

后端Tomcat服務器

172.16.71.4172.16.71.5

兩個主機都要安裝jdk和Tomcat

yum install java-1.8.0-openjdk-devel -y
yum install tomcat -y

主機1

mkdir -pv /var/lib/tomcat/webapps/test/{lib,classes,WEB-INF}
vim /var/lib/tomcat/webapps/test/index.jsp


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


systemctl start tomcat

主機2

mkdir -pv /var/lib/tomcat/webapps/test/{lib,classes,WEB-INF}
vim /var/lib/tomcat/webapps/test/index.jsp


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

systemctl start tomcat

前端代理

systemctl start nginx 

測試

從瀏覽器訪問172.16.71.1,顯示Tomcat歡迎頁面

從瀏覽器訪問172.16.71.1/test,顯示測試頁面信息,刷新會變化。


httpd

yum install httpd -y

vim /etc/httpd/conf.d/tomcat_httpd.conf

<proxy balancer://tcsrvs>
   BalancerMember http://172.16.71.4:8080
   BalancerMember http://172.16.71.5:8080
   ProxySet lbmethod=byrequests
</Proxy>
<VirtualHost *:80>
   ServerName www.magedu.com
   ProxyVia On
   ProxyRequests Off
   ProxyPreserveHost On
   <Proxy *>
       Require all granted
   </Proxy>
       ProxyPass / balancer://tcsrvs/
       ProxyPassReverse / balancer://tcsrvs/
   <Location />
       Require all granted
   </Location>
</VirtualHost>    

systemctl start httpd

測試

從瀏覽器訪問172.16.71.1,顯示Tomcat歡迎頁面

從瀏覽器訪問172.16.71.1/test,顯示測試頁面信息,刷新會變化。


實現會話粘性方法

172.16.71.4

vim /etc/tomcat/server.xml

   <Engine name="Catalina" defaultHost="localhost" jvmRoute="TomcatA"> #修改此行


systemctl restart tomcat

172.16.71.5

vim /etc/tomcat/server.xml

   <Engine name="Catalina" defaultHost="localhost" jvmRoute="TomcatB"> #修改此行

systemctl restart tomcat

172.16.71.1

vim /etc/httpd/conf.d/tomcat_httpd.conf

Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<proxy balancer://tcsrvs>
   BalancerMember http://172.18.100.67:8080 route=TomcatA loadfactor=1
   BalancerMember http://172.18.100.68:8080 route=TomcatB loadfactor=2
   ProxySet lbmethod=byrequests
   ProxySet stickysession=ROUTEID
</Proxy>
<VirtualHost *:80>
   ServerName lb.magedu.com
   ProxyVia On
   ProxyRequests Off
   ProxyPreserveHost On
   <Proxy *>
       Require all granted
   </Proxy>
   ProxyPass / balancer://tcsrvs/
   ProxyPassReverse / balancer://tcsrvs/
   <Location />
       Require all granted
   </Location>
</VirtualHost>  

systemctl restart httpd

測試

從瀏覽器訪問172.16.71.1,顯示Tomcat歡迎頁面

從瀏覽器訪問172.16.71.1/test,顯示測試頁面信息,刷新不會變化。


啟用管理接口

vim /etc/httpd/conf.d/balaner_manager.conf

<Location /balancer-manager>
   SetHandler balancer-manager
   ProxyPass !
   Require all granted
</Location>            

systemctl restart httpd

測試

瀏覽器訪問172.16.71.1/balancer-manager會出現管理接口

ajp balancer

vim /etc/httpd/conf.d/tomcat-ajp.conf

<proxy balancer://tcsrvs>
   BalancerMember ajp://172.16.71.4:8009
   BalancerMember ajp://172.16.71.5:8009
   ProxySet lbmethod=byrequests
</Proxy>
<VirtualHost *:80>
   ServerName lb.magedu.com
   ProxyVia On
   ProxyRequests Off
   ProxyPreserveHost On
   <Proxy *>
       Require all granted
   </Proxy>
   ProxyPass / balancer://tcsrvs/
   ProxyPassReverse / balancer://tcsrvs/
   <Location />
       Require all granted
   </Location>
   <Location /balancer-manager>
       SetHandler balancer-manager
       ProxyPass !
       Require all granted
   </Location>
</VirtualHost>  

測試

從瀏覽器訪問172.16.71.1,顯示Tomcat歡迎頁面

從瀏覽器訪問172.16.71.1/test,顯示測試頁面信息,刷新會變化。

會話綁定與前面相似

vim /etc/httpd/conf.d/tomcat-ajp.conf

<proxy balancer://tcsrvs>
   BalancerMember ajp://172.16.71.4:8009 route=TomcatA loadfactor=1
   BalancerMember ajp://172.16.71.5:8009 route=TomcatB loadfactor=1
   ProxySet lbmethod=byrequests
</Proxy>
<VirtualHost *:80>
   ServerName lb.magedu.com
   ProxyVia On
   ProxyRequests Off
   ProxyPreserveHost On
   <Proxy *>
       Require all granted
   </Proxy>
   ProxyPass / balancer://tcsrvs/
   ProxyPassReverse / balancer://tcsrvs/
   <Location />
       Require all granted
   </Location>
   <Location /balancer-manager>
       SetHandler balancer-manager
       ProxyPass !
       Require all granted
   </Location>
</VirtualHost>  

Tomcat集群

172.16.71.4

vim /etc/tomcat/server.xml

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="TomcatA"> # jvmRoute 一定要有

       <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.0.71.4"
                       port="45564"
                       frequency="500"
                       dropTime="3000"/>
           <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                     address="172.16.71.4"
                     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.ClusterSessionListener"/>
       </Cluster>
cp /etc/tomcat/web.xml  /var/lib/tomcat/webapps/test/WEB-INF/
vim /var/lib/tomcat/webapps/test/WEB-INF/web.xml

<distributable/> # 添加

systemctl restart tomcat

172.16.71.5同理

vim /etc/tomcat/server.xml

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="TomcatB"> # jvmRoute 一定要有

       <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.0.71.4"
                       port="45564"
                       frequency="500"
                       dropTime="3000"/>
           <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                     address="172.16.71.5"
                     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.ClusterSessionListener"/>
       </Cluster>
cp /etc/tomcat/web.xml  /var/lib/tomcat/webapps/test/WEB-INF/
vim /var/lib/tomcat/webapps/test/WEB-INF/web.xml

<distributable/> # 添加

systemctl restart tomcat

測試

從瀏覽器訪問172.16.71.1,顯示Tomcat歡迎頁面

從瀏覽器訪問172.16.71.1/test,顯示測試頁面信息,刷新不會變化。

注意:一定要先為主機配置網關,否則Tomcat將無法啟動


memcached 實現session存儲

172.16.71.4172.16.71.5

vim /etc/tomcat/server.xml

# 刪除上一步添加的內容

systemctl stop tomcat
yum install memcached -y

systemctl start memcached

下載類庫

cd /usr/share/tomcat/lib
lftp 172.16.0.1
cd pub/Sources/7.x86_64/msm/
mget *
bye
vim /etc/tomcat/server.xml

#在<Host>中添加:
<Context path="/" docBase="test" reloadable="true">
</Context>

systemctl start tomcat

測試

從瀏覽器訪問172.16.71.1,顯示Tomcat歡迎頁面

從瀏覽器訪問172.16.71.1/test,顯示測試頁面信息,刷新不會變化。

添加session保持

172.16.71.4 172.16.71.5

vim /etc/tomcat/server.xml

     <Host name="localhost"  appBase="webapps"
           unpackWARs="true" autoDeploy="true">
               <Context path="/sample" docBase="sample" reloadable="true">
                 <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
                     memcachedNodes="n1:172.16.71.4:11211,n2:172.16.71.5:11211"
                     failoverNodes="n1"
                     requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
                     transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"


systemctl restart tomcat

測試

從瀏覽器訪問172.16.71.1,顯示Tomcat歡迎頁面

從瀏覽器訪問172.16.71.1/sample,顯示測試頁面信息,刷新session不會變化,內容會變化。

注意:此處前端要使用Nginx,httpd不能實現以上功能,原因未知。

原創文章,作者:wangshuai,如若轉載,請注明出處:http://www.www58058.com/68251

(1)
wangshuaiwangshuai
上一篇 2017-02-12 22:22
下一篇 2017-02-13 11:30

相關推薦

  • path

    path簡單應用

    Linux干貨 2017-10-30
  • linux文本編輯利器-vim

    概述 Vim是從vi發展出來的一個文本編輯器。代碼補全、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被廣泛使用,和Emacs并列成為類Unix系統用戶最喜歡的文本編輯器。Vim強大的編輯能力中很大部分是來自于其普通模式命令。vim的設計理念是命令的組合。例如普通模式命令"dd"刪除當前行,"dj"代表刪除到下一行…

    Linux干貨 2016-08-11
  • 在 Linux 下你所不知道的 df 命令的那些功能

    原文出處: xmodulo   譯文出處:linux.cn – mtunique   歡迎分享原創到運籌維幄 問題: 我知道在Linux上我可以用df命令來查看磁盤使用空間。你能告訴我df命令的實際例子使我可以最大限度得利用它嗎?   對于磁盤存儲方面,有很多命令行或…

    Linux干貨 2015-03-02
  • Linux網絡管理之網絡配置管理和子網劃分

    配置網卡信息 獲取網卡的信息 dmesg | grep -i eth 獲取網卡芯片信息 lspci | grep -i eth 查詢IP信息 ifconfig顯示IP信息    -a:顯示包括未激活狀態的網卡信息 重啟網卡服務(每次配置完ip需要手動重啟此服務) CentOS6: servcie network restart CentO…

    Linux干貨 2016-09-07
  • find文件查找

    文件查找      在文件系統上查找符合條件的文件:      實現工具:locate,find locate:      構建于實現構建好的索引庫:/var/lib/mlocate/mlocate.db   &nbsp…

    Linux干貨 2016-08-22
  • Shell腳本中select、函數總結

    描述: select控制語句基于Korn Shell中的控制結構 select語句首先顯示一個菜單,然后根據用戶的選擇給變量賦予相應的值,最后執行一系列命令。 語法: select varname [ in arg…] do    commands done 說明: select結構顯示arg項的菜單。加入忽略關鍵字in和參數…

    Linux干貨 2016-08-24
欧美性久久久久