apache2.2.25+tomcat7.0.47集群方案

来源:http://www.cnblogs.com/xiaomatech/archive/2016/03/01/5230716.html
-Advertisement-
Play Games

因為公司項目線上人數的增加,隨著現在硬體成本越來越低,大多數的生產環境記憶體大多都已經達到 16G,尤其最新的阿裡雲,客戶的機器都是配置超高的java主機,但是Java的運行環境,記憶體使用有限 ,這樣就造成了這台伺服器資源的浪費,所以單機的多Tomcat集群就很有必要!當然有客戶有多台伺服器,這樣更好


      因為公司項目線上人數的增加,隨著現在硬體成本越來越低,大多數的生產環境記憶體大多都已經達到 16G,尤其最新的阿裡雲,客戶的機器都是配置超高的java主機,但是Java運行環境,記憶體使用有限 ,這樣就造成了這台伺服器資源的浪費,所以單機的多Tomcat集群就很有必要!當然有客戶有多台伺服器,這樣更好了,配置會更少,性能會更強悍。

      網上很多文章在說集群方案,很多配下來都是錯的,也不說錯誤的原因,原本希望配置apache2.4+tomcat8的集群方案,配下來沒成功,就配置apache2.2.25+tomcat7.0.47集群方案,以後會發apache2.4+tomcat8的集群方案。 同時因為公司的電腦比較老,使用的32位系統,以後再發64位的。

     apache+tomcat的集群方案有三種,我採用mod_jk方式,網上的配置很多有錯誤,錯誤不外乎兩種:

1,配置路徑錯誤,

2,mod_jk版本和apache版本不匹配,我搞了兩天Apache啟動不成功,載入不了mod_jk.so都是版本問題造成的。比如:mod_jk-1.2.31-httpd-2.2.3.so,此版本中httpd-2.2.3一定要和Apache版本一致。

    下麵列出實際配置所用的:

   軟體:

  1. jdk:jdk-7u80-windows-i586.exe
  2. apache:httpd-2.2.25-win32-x86-no_ssl.msi
  3. tomcat:apache-tomcat-7.0.47.zip

本次使用是單擊垂直集群,一臺機器裝Apache ,帶兩台tomcat

首先是Apache的安裝

  1.    Apache的安裝,我下載的是安裝版,直接一步步安裝即可,如果是非安裝版,需要註冊成服務才可以。
  2.   Apache安裝完成後,找到apache的所在目錄,在conf文件夾下找到httpd.conf這個配置文件,打開配置文件

1、mod_jk-1.2.31-httpd-2.2.3.so修改為mod_jk.so,拷貝mod_jk.so到Apache安裝路徑的modules文件夾下;

2.修改Apache配置文件httpd.conf(筆者路徑:E:\Apache2.2\conf\httpd.conf),

    • 修改ServerRoot,即Apache安裝路徑,比如:ServerRoot "D:/Apache2.2""
    • 在最後一行末尾添加:include "E:\Apache2.2\conf\mod_jk.conf" 
    1. 在httpd.conf 同目錄下新建mod_jk.conf文件
 JkWorkersFile conf/workers.properties
 JkLogFile logs/mod_jk.log
 JkLogLevel info
 JkRequestLogFormat "%w %V %T"
 JkMount /* controller

  在conf下新建workers.properties,

worker.list=controller
 worker.controller.type=lb
 worker.controller.sticky_session=1
 worker.controller.error_escalation_time=0
 worker.controller.max_reply_timeouts=10

 # localhost server 1
 # ------------------------
worker.jvm1.reference=worker.template
 worker.jvm1.port=8009
 worker.jvm1.host=localhost
 worker.jvm1.lbfactor = 5
 worker.jvm1.activation=A


 # localhost server 2
 worker.jvm2.reference=worker.template
 worker.jvm2.port=9009
 worker.jvm2.host=localhost
 worker.jvm2.lbfactor=1
 worker.jvm2.activation=A


 worker.template.type=ajp13                    
worker.template.socket_connect_timeout=5000
 worker.template.socket_keepalive=true
 worker.template.ping_mode=A
 worker.template.ping_timeout=10000
 worker.template.connection_pool_minsize=0
 worker.template.connection_pool_timeout=600
 worker.template.reply_timeout=300000
 worker.template.recovery_options=3

 worker.controller.balance_workers=jvm1,jvm2

  

#這裡可以配置任意多個Tomcat,此處配置了2個Tomat伺服器.
#host和port根據自己實際配置.實例配置的是本機兩個tomcat,分別使用不同的埠.避免衝突
#如果Tomcat不再同一機器上,沒必要改埠的。

  3、 重啟Apache,看是否能夠啟動成功,訪問:http://localhost/;Apache配置完成

配置tomcat,將tomcat複製,命名為tomcat1,tomcat2,兩個tomcat在一個機器上,需要修改一臺tomcat:主要為各個埠

  1、修改tomcat2,配置例子:tomcat1沒有修改

8005改為8015,shutdown埠

<Server port="8015" shutdown="SHUTDOWN">

  Connector port="8090",網站訪問埠,8080改為8090

    <Connector port="8090" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

  ajp埠,8009改為9009

  <Connector port="9009" protocol="AJP/1.3" redirectPort="8943" />

  增加jvmRoute,jvmRoute="jvm2",tomcat1則為jvmRoute="jvm1"

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">

   Cluster打開,增加:

 <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.0.4" port="45564" frequency="500" dropTime="3000"/>
             <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto"  port="4001" 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配置完成,tomcat1,tomcat分別看能夠啟動。

增加session共用

tomcat/webApps下新建項目test,新建test.jsp文件,新建WEB-INF文件夾,文件夾下新建web.xml,插入:

 <distributable/>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
       <display-name>test</display-name>
       <distributable/>
</web-app>

  依次啟動apache,tomcat1,tomcat2.

集群+負載均衡,session共用配置完成。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 上次業務邏輯和展示層的架構都寫了,可以開始進行具體功能的實現,這次先實現管理員的登錄、驗證和註銷功能。 一、業務邏輯層 1、實現256散列加密方法。 Ninesky.Core【右鍵】-> 添加->文件夾,輸入文件夾名General。 General文件夾【右鍵】->添加->類,輸入類名Securit...
  • 一. 在調試時,不要使用調試程式的X號關掉程式,而是要用VS自帶的停止調試的介面,即那個小方塊。不然下次調試會出現異常,若真出現這種情況,可以右鍵項目名,點擊清理。 二. Visible屬性 是“可見”的意思,若在屬性里設置 this.visible=false;會使當前控制項隱藏, 若在控制條件里設
  • MVVMlight在UWP開發中的使用
  • 在ASP.NET2.0開始,提供了母版頁的功能。母版頁由一個母版頁和多個內容頁構成。母版頁的主要功能是為ASP.NET應用程式中的頁面創建相同的佈局和界面風格。母版頁的使用與普通頁面類似,可以在其中放置文件或者圖形、任何HTML控制項和Web控制項、後置代碼等。 母版頁僅僅是一個頁面模板,單獨的母版頁是
  • 繼續,前面已經實現了C#調用Windows API實現了彈出對話框功能。使用了User32.dll文件,主要代碼如下:[DllImport("User32.dll")]public static extern int MessageBox(int h, string m, string c, int
  • 以下為本次實踐代碼: 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Linq; 5 using System.Reflection; 6 using
  • 最近項目中有用到Webservice,研究了Spring與CXF整合的官方文檔(其實官方文檔說的清楚了,建議大伙還是看官方文檔,都是很簡單英文單詞),所以就有了下麵的demo,相信大伙都能看懂 用的主要架構為Maven + Spring + CXF + IDEA,廢話就不多說了,先看下整個個項目結構...
  • Jetty是一個用 Java 實現、開源、基於標準的,並且具有豐富功能的 Http 伺服器和 Web 容器。Jetty中應用最廣泛的一項功能就是可以作為嵌入式Web容器。 在開發階段,可以使用Jetty在Eclipse里直接啟動應用,而不是像Tomcat那樣繁瑣,先把幾十兆應用打包,然後再複製到某個
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...