集羣配置方案:
1. 結構簡紹:
該方案採起前端一臺apache服務,中間多個jboss/tomcat服務器,後端鏈接同一個數據庫的集羣方法
2. 採用的個個服務器類型和名稱
Apache: 採用的是apache_2.2.6-win32-x86-openssl-0.9.8e.msi(帶證書等加密驗證)
或者apache_2.2.6-win32-x86-no_ssl.msi(無加密認證)
http://apache.mirror.phpchina.com/httpd/binaries/win32/下載
Jboss/Tomcat: 採用jboss-4.0.4.GA.zip
http://sourceforge.net/project/showfiles.php?group_id=22866&package_id=16942下載
Apache Tomcat Connector ( jk): 採用mod_jk-apache-2.2.4.so
http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/下載
3. apache安裝
略.
安裝完成後請訪問http://127.0.0.1確保安裝成功
4. JDK1.5 ,Jboss/Tomcat安裝
JDK必須是1.5版本,之前給客戶安裝的都是1.4的,請安裝1.5版本;
解壓縮jboss-4.0.4.GA.zip便可
安裝完成後請進入$JBOSS_HOME/bin/啓動(在doc界面輸入run.bat –c all)
啓動完成後訪問http://127.0.0.1:8080確保部署成功
5. 安裝配置:
1) 配置apache
配置$APACHE_HOME/conf/httpd.conf文件
在該文件的最後一行加入
# mod_jk config
Include conf/mod_jk2.conf
在$APACHE_HOME/conf/下新建文件mod_jk2.conf
mod_jk2.conf文件內容以下:
LoadModule jk_module modules/mod_jk-apache-2.2.4.so
JkWorkersFile conf/workers2.properties
JkLogFile logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
JkMount /* loadbalancer
#apache will serve the static picture.
#如下命令意味着全部的圖片將由APACHE解析
#JkUnMount /*.jpg loadbalancer
#JkUnMount /*.gif loadbalancer
#JkUnMount /*.swf loadbalancer
#JkUnMount /*.bmp loadbalancer
#JkUnMount /*.png loadbalancer
把mod_jk-apache-2.2.4.so拷貝到目錄$APACHE_HOME/modules下
在$APACHE-HOME/conf/下新建文件workers2.properties
workers2.properties內容以下:
#部署的服務列表
worker.list=loadbalancer,server106
# Define the first node...
#worker.server105.port=8009
#worker.server105.host=192.168.1.107
#worker.server105.type=ajp13
#worker.server105.lbfactor=1
#worker.server105.local_worker=1
#worker.server105.cachesize=100
# Define the 2nd node...
worker.server106.port=8009
worker.server106.host=192.168.1.107
worker.server106.type=ajp13
worker.server106.lbfactor=1
#worker.server106.local_worker=1
worker.server106.cachesize=100
# Now we define the load-balancing behaviour
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=server106
worker.loadbalancer.sticky_session=1
註釋:在http.conf同目錄下新建 workers.properties文件,內容以下
worker.list = controller,tomcat1,tomcat2 #server 列表
#========tomcat1========
worker.tomcat1.port=8009 #ajp13 端口號,在tomcat下server.xml配置,默認8009
worker.tomcat1.host=localhost #tomcat的主機地址,如不爲本機,請填寫ip地址
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1 #server的加權比重,值越高,分得的請求越多
#========tomcat2========
worker.tomcat2.port=8009 #ajp13 端口號,在tomcat下server.xml配置,默認8009
worker.tomcat2.host=localhost #tomcat的主機地址,如不爲本機,請填寫ip地址
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1 #server的加權比重,值越高,分得的請求越多
#========controller,負載均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2 #指定分擔請求的tomcat
worker.controller.sticky_session=1
說明:worker.loadbalancer.sticky_session=1參數的設定,意味着一旦用戶經過APACHE鏈接到某臺JBOSS SERVER(建立了session),則只要在該臺JBOSS服務正常的狀況下,該用戶全部的請求都將會發送至該JBOSS SERVER。
2) Jboss/Tomcat配置
配置%JBOSS_HOME%/server/all/deploy/jbossweb-tomcat55.sar/ server.xml修改
<Engine name="MainEngine" defaultHost="localhost">
爲
<Engine name="MainEngine" jvmRoute="server106" defaultHost="localhost">
其中server106與上述workers2.properties定義的內容一致。
%JBOSS_HOME%/server/all/deploy/jbossweb-tomcat55.sar/META-INF/ jboss-service.xml
<attribute name="UseJK">false</attribute>
爲
<attribute name="UseJK">true</attribute>
把服務的sc.war拷貝到
$JBOSS_HOME/server/all/deploy/jbossweb-tomcat55.sar/下完成部署
sc\WEB-INF\classes\ehcache.xml文件中
<cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
properties="hostName=192.168.1.10, port=40001"/>
其中properties="hostName=192.168.1.10請修改成本地服務器(jboss所在機器)的ip地址;
3) 配置集羣(Clustering)
若是是以run -c all 來啓動jboss服務,則默認是將cluster服務啓動,無需作什麼配置工做,只需確認相關文件是否存在便可。
確認%JBOSS_HOME%/server/all/deploy/下存在cluster-service.xml文件;
確認%JBOSS_HOME%/server/all/lib/下存在jgroups.jar文件,若是沒有則從新安裝jboss。
若是應用程序部署在default配置下,則需將上述的兩個文件分別拷入
%JBOSS_HOME%/server/default/deploy/和%JBOSS_HOME%/server/default/lib/目錄下。
修改web服務路徑下的web.xml文件,例如這裏(/sc/WEB-INF/下),添加<distributable />,例如:
…..
<web-app>
<distributable />
……..
在web服務路徑例如這裏(/sc/WEB-INF/)下添加文件jboss-web.xml
jboss-web.xml文件內容:
<jboss-web>
<replication-config> <replication-trigger>SET_AND_NON_PRIMITIVE_GET</replication-trigger>
<replication-granularity>SESSION</replication-granularity>
</replication-config>
</jboss-web>
其中:
replication-trigger是指定哪些操做引起session的版本更新,它的取值有:
SET_AND_GET
SET_AND_NON_PRIMITIVE_GET
SET
replication-granularity是指定replication-granularity是複製粒度,能夠取session或attribute。若是取爲attribute有可能致使複製失敗,這是目前版本的jboss cache的一個bug,等待修正
Apache配置補充:
1. 配置$APACHE_HOME\conf\httpd.conf文件:
ThreadsPerChild 250 #每一個子進程能夠創建的固定數量的線程
MaxRequestsPerChild 0 #用於控制服務器創建和結束進程的頻率,爲0表示沒有#限制,但在solaris OS下該值可能會出錯,能夠設置爲1000或2000。根據系統#的併發負載吧。
# Server-pool management (MPM specific)
Include conf/extra/httpd-mpm.conf 制定所用的多進程處理方式(可選)
2. 配置$APACHE_HOME\conf\***\ httpd-mpm.conf文件
StartServers 4 #最初創建進程的數量
ServerLimit 24 #進程創建的最大數量,硬限制
ThreadLimit 128 #每一進程能建立線程的最大數量,硬限制,該參數建議#和ThreadsPerChild一致,若是ThreadLimit > ThreadsPerChild的話,會形成不##必要的內存消耗。
MaxClients 150 #同時能夠獲得處理的客戶端的最大數量
MinSpareThreads 100 #全部進程中空閒線程的總數最小數值
MaxSpareThreads 200 #全部進程中空閒線程的總數最大數值
3.
Jboss/tomcat配置補充:
1. 公共的jar包咱們能夠放在$JBOSS-HOME/server/all/lib下,如數據庫的JDBC jar,log4j.jar等,若是這些JAR已經在該lib下放置了,那麼咱們的應用WEB-INF/lib下不該該再放置,不然JBOSS也會將他們再一次加載,白白佔用內存。
2. 配置日誌的文件,log4j.xml位於$JBOSS-HOME/server/all/conf下
3. $JBOSS-HOME/server/all/work下存放的是JSP編譯後的.java及.class文件,若是調試JSP時出錯了,能夠到D:\jboss-4.0.4.GA\server\all\work\jboss.web\localhost\sc目錄下清除臨時文件
4. $JBOSS-HOME/server/all/log下存放的是日誌文件,默認的log4j.xml配置是將日誌輸出到該文件夾下的server.log文件,能夠去查看信息進行調試。
5. 咱們的應用通常部署在$JBOSS-HOME/server/all/deploy/jbossweb-tomcat50.sar/下
6. 配置端口在 ./ deploy/jbossweb-tomcat50.sar/server.xml中,本身找8080,修改成你想設定的端口便可。
7. 訪問URL若是是目錄,不想顯示該目錄下文件,紫色部分的橙色設爲false表示不列出目錄。默認是設爲true
路徑:$JBOSS_HOME\server\all\deploy\jbossweb-tomcat55.sar\conf\web.xml
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>
org.apache.catalina.servlets.DefaultServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
8. jboss/tomcat性能配置(Tomcat5.5爲準)
/jbossweb-tomcat50.sar/server.xml
<!-- jboss3.2.3 jboss-service.xml -->
<!-- A AJP 1.3 Connector on port 8009 -->
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
address="${jboss.bind.address}" port="8009" minProcessors="5" maxProcessors="1000" enableLookups="true" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" useURIValidationHack="false"
protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>
<!-- jboss3.2.6 server.xml -->
<!-- A AJP 1.3 Connector on port 8009 -->
<Connector port="8009" address="${jboss.bind.address}"
enableLookups="false" redirectPort="8443" debug="0"
maxProcessors ="1000" minProcessors=」5」 acceptCount="100"
protocol="AJP/1.3"/>
簡單解釋一兩個參數(以tomcat5.0爲準):
maxProcessors:最大併發數(鏈接數)
minProcessors:初始化時啓動的最小的進程數
acceptCount:在當前connector的鏈接數達到最大時,容許進入等待隊列的數目\
connectionTimeout:鏈接超時時間,單位爲毫秒
enableLookups:是否容許經過DNS lookups,返回遠程客戶端的機器名,若是設爲false,則只能返回IP地址。該參數默認爲true,若是不須要,能夠禁掉,設爲false,能夠提升服務器的性能
maxPostSize:設定容許透過POST上傳參數的字節數,默認是2M(2097152),若是想禁掉該限制,則將該值設爲一個小於或等於0 的值,如0、-1,若是所部署的應用中有上傳工做,則需注意該配置
port="8009"
9. $JBOSS-HOME/server/下有3個目錄,all/default/minimal,它們是表示3種配置,所有的配置、默認配置、最小配置,咱們在啓動JBOSS服務時,能夠指定
run –c all 表示是啓動all配置(將會加載全部服務);run 表示是以默認配置啓動;
run –c mimimal 表示是啓動mimimal配置。這三者所加載的服務數量不一樣,具體區別可查閱JBOSS相關文檔,你還能夠本身定義一個配置,如test
若是你肯定了JBOSS服務啓動的配置,那麼你的應用及相關配置就須要部署在對應的目錄下的相關的路徑下,如all/,default/,minimal/下
10. 路徑:
$JBOSS_HOME\server\all\deploy\jbossweb-tomcat55.sar\META-INF\ jboss-service.xml
<attribute name="SnapshotMode">instant</attribute> <!-- you may switch to "interval" -->
Instant: session replication採起當即複製的方式
interval: session replication採起延時一段時間後複製
JBoss中的若干目錄:
conf -- 含有指定JBoss核心服務的jboss-service.xml文件。同時,還包括核心服務的其餘配置文件。
data -- 這一目錄存儲持久化數據,即便服務器發生重啓其中的數據也不會丟失。許多JBoss服務將數據存儲在這裏,好比 Hypersonic數據庫實例。
deploy -- 用戶將應用代碼(JAR\WAR\EAR文件)部署在此處。同時,deploy目錄也用於熱部署服務(即,那些可以從運行服務器動態添加或刪除的服務)和部署JCA 資源適配器。所以,用戶可以在 deploy 目錄看到大量的配置文件。尤爲是,用戶可以看到 JMX 控制檯應用(未打包的WAR文件)。JBoss服務器將按期掃描該目錄,從而查找是否有組件更新或修改,從而自動完成組件的從新部署。
lib -- 服務器配置所需的JAR件。用戶能夠添加自身的庫文件,好比JDBC驅動,等等。
log -- 日誌信息將存儲到該目錄。JBoss 使用Jakarta Log4j包做爲其日誌功能。同時,用戶能夠在應用中直接使用Log4j日誌記錄功能。
tmp -- 供部署器臨時存儲未打包應用使用,也能夠做爲其餘用途。
work -- 供Tomcat編譯JSP使用。
在一臺機器上啓動兩個JBoss服務器:
1. 編輯文件 $JBOSS-HOME/server/ Your_Server /deploy/jbossweb-tomcat55.sar/server.xml
<Connector port="8080" address="${jboss.bind.address}"
maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"
emptySessionPath="true"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"/>
<Connector port="8009" address="${jboss.bind.address}"
emptySessionPath="true" enableLookups="false" redirectPort="8443"
protocol="AJP/1.3"/>
<!-- SSL/TLS Connector configuration using the admin devl guide keystore
<Connector port="8443" address="${jboss.bind.address}"
maxThreads="100" strategy="ms" maxHttpHeaderSize="8192"
emptySessionPath="true"
scheme="https" secure="true" clientAuth="false"
keystoreFile="${jboss.server.home.dir}/conf/chap8.keystore"
keystorePass="rmi+ssl" sslProtocol = "TLS" />
-->
2. 編輯文件 $JBOSS-HOME/server/ Your_Server /conf/jboss-service.xml
<mbean code="org.jboss.web.WebService" name="jboss:service=WebService">
<attribute name="Port">8083</attribute>
<mbean code="org.jboss.naming.NamingService"
name="jboss:service=Naming"
xmbean-dd="resource:xmdesc/NamingService-xmbean.xml">
<attribute name="Port">1099</attribute>
<attribute name="RmiPort">1098</attribute>
<mbean code="org.jboss.invocation.jrmp.server.JRMPInvoker"
name="jboss:service=invoker,type=jrmp">
<attribute name="RMIObjectPort">4444</attribute>
<mbean code="org.jboss.invocation.pooled.server.PooledInvoker"
name="jboss:service=invoker,type=pooled">
<attribute name="ServerBindPort">4445</attribute>
3. $JBOSS_HOME/server/all/deploy/jms/uil2-service.xml
修改ServerBindPort
4. 自己服務的相關配置