jboss配置多實例的重要性
在開發, 測試項目的過程中, 我們經常需要在同一台主機上, 同一個服務器上配置多個運行實例。這樣做有一下幾點好處:
- 在項目開發, 調試階段能最大限度的節省資源
- 某個實例出現異常或錯誤都不會對其他實例的運行造成影響
- 需要對某個實例進行重啟、關閉等操作屬於獨立操作, 不會對服務器的運行造成影響
對重要性的介紹就到這里, 對jboss服務器進一步了解可以點擊這里
本文地址: http://www.cnblogs.com/blackmanba/p/3674301.html或者http://forkme.info/run-jbosses/, 轉載請注明源地址。
jboss server配置
解決這個問題的關鍵其實就是對於不同的實例分配不同的端口。
在linux下, 進入到jboss的server目錄下, 拷貝一份實例數據修改項目名, 如圖:
在jboss啟動時默認發布的不同實例需要使用不同的端口監聽。項目復制過來后由於端口一樣所以會導致端口沖突, 無法啟動。解決這個問題最簡單的方法就是直接在配置文件中修改端口。這種方法當然可以, 但是對於jboss服務器來說, 每個實例所需的端口數非常多, 包括http協議的8080、AJP協議的8009、JNP服務的1099、RMI命名服務的1098等等, 並且這些端口配置都分布在不同的文件, 手工修改極易出錯。
考慮到這些因素, jboss服務器提供了Binding-Manager服務, 不用繁瑣的配置就能夠實現多實例運行而端口不沖突。步驟如下:
1. 部署環境
以jboss 4.2.3 GA 為例, server下有兩個不同的實例node1, node2(名字自定義), %JBOSS_HOME%表示jboss安裝目錄。
關鍵文件是%JBOSS_HOME%/docs/examples/binding-manager/sample-bindings.xml, 該文件默認情況下定義了4組不同的端口配置(分別是ports-default、ports-01、ports-02、ports-03), 也就是說默認情況下jboss支持部署4個不同的jboss實例。
2. node2配置
進入node2目錄, 修改node2/conf/jboss-service.xml文件, 配置如下:
<mbean code="org.jboss.services.binding.ServiceBindingManager" name="jboss.system:service=ServiceBindingManager">
<attribute name="ServerName">ports-01</attribute>
<attribute name="StoreURL">${jboss.home.url}/docs/examples/binding-manager/sample-bindings.xml</attribute>
<attribute name="StoreFactoryClassName">
org.jboss.services.binding.XMLServicesStoreFactory
</attribute>
</mbean>
這里node2配置為使用ports-01的配置。
3. node1配置
node1默認可以不用配置, 這種情況下使用的是jboss提供的默認端口8080, 8009等, 也可以參照第一步的配置, 只需修改"ServerName"與node2不一樣即可。ps: 只能是定義的四組端口范圍內。
4. 自定義端口
這一步不是必須的, 上一步配置的時候已經指定了運行端口。如果你想修改實例http服務監聽端口, 才需進行下列步驟。
進入node1目錄, 修改node1/deploy/jboss-web.deployer/server.xml, 配置如下:
<Connector port="80" address="0.0.0.0"
maxThreads="250" maxHttpHeaderSize="8192"
emptySessionPath="true" protocol="HTTP/1.1"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
里面port="80"選項可以修改為任意的端口, 只要不沖突即可。ps: node2的配置也與node1一致。
5. 啟動實例
完成上述配置后, 實例的啟動非常簡單。如下:
%JBOSS_HOME%/bin/run.sh -c node1 -b ip地址 &
%JBOSS_HOME%/bin/run.sh -c node2 -b ip地址 &
ip地址指的就是項目的地址。
配置說明
如果沒有指定運行端口而采用默認定義的4組端口配置, 端口是以以下方式進行設定的:
http服務端口默認情況下是8080, 其他實例的端口依次在8080的基礎上增加100, 對應關系如下:
ports-default 8080
ports-01 8180
ports-02 8280
ports-03 8380
其他端口規律和http端口規律一致。eg: AJP端口依次為8009、8109、8209、8309。
注意事項
- 上述方法同樣適用於同一台機器上面部署多個jboss而不是同一個jboss下部署多個實例
- 如果定義的4組端口不夠用, 也可以自行添加其他port組
- 在正式環境下, 推薦將不同的實例綁定在不同的ip地址上
使用情景
- 32位JVM限制無法使用超過2G的內存, 通過多實例可以充分利用服務器上的大內存(不理解, 有懂的人請告知)
- 不同的jboss用於不同的用途, 比如開發環境, 測試環境的分離
- 在同一台機器上使用不同版本的jboss服務器
- 在同一台機器上部署基於不同JVM的jboss