(這在HP-UX 11.11與Windows XP SP2 配合JBOSS 5.1.0上驗證過)
  有時候因為現實的因素,需要在同一台主機上執行多個JBOSS,例如需要另一個QA用的環境,也有可能是要執行不同版本的JBOSS,或JBOSS需要不同的JAVA版本,在主機的cpu與memory資源足夠的前提下,這是可行的。
  如果不修改設定,同一台主機執行兩個JBOSS時,因為使用相同IP與相同port,會發生衝突而JBOSS無法啟動。此時有兩個解法,一個方式是兩個 JBOSS Instance 使用不同的IP;另一個方式是兩個JBOSS instance使用不同的port來服務。要讓兩個JBOSS Instances啟動於不同的port也有兩個方式,一個是手動設定config檔,另一個是使用JBOSS 5提供的Service Binding Manager服務。
  前提,每個JBOSS Instance要在檔案系統內建立不同的目錄來放置各自的設定檔,通常放在$JBOSS_HOME的server目錄下,例如有node1,node2,node3的三個不同服務,
$JBOSS_HOME\server\node1
$JBOSS_HOME\server\node2
$JBOSS_HOME\server\node3


  下面介紹讓一台主機啟動多個JBOSS Instances的設定方式:
1. 使用不同的IP來啟動
如果主機上binding了多個IP,就可以考慮使用不同IP來提供服務,啟動方式如下:

# cd $JBOSS_HOME/bin
# ./run.sh -c node1 -b 172.22.11.1
# ./run.sh -c node2 -b 172.22.11.2
# ./run.sh -c node3 -b 172.22.11.3

2. 使用JBOSS的Service Binding Manager如果主機上沒有binding多個IP,或binding的IP不敷使用,則可用下列方式啟動使用其他port的JBOSS instance
第一個JBOSS Instance可以使用系統預設值,啟動方式如下:
# ./run.sh -c node1 -b 172.22.11.2
(若不指定IP,如使用 -b 172.22.11.2,JBOSS會起於127.0.0.1這個IP來服務,只能本機使用;如果使用 -b 0.0.0.0 ,則可以使用本機上所有的IP來對外服務)

第二台JBOSS Instance可以選用另個port set,如:ports-01
# ./run.sh -c node2 -b 172.22.11.2 -Djboss.service.binding.set=ports-01
  Service Binding Port Set的設定方式與可使用的port set名稱,可參考各服務目錄下的設定檔,設定檔位置範例如下:$JBOSS_HOME\server\node02\conf\bindingservice.beans\META-INF\bindings-jboss-beans.xml,檔案中設定ports-01將所有提供服務的port number都偏移100,例如該服務的web port會由8080變成8180(所對應的Naming Service,Remote classloading service,Remoting Connector,RMI/JRMP,HA Pooled invoker等,都會自適應+100),ports-02會將該服務的所有port number都由預設值加上200,其web port會變成8280,以此類推;如果想要修改偏移值或增加service binding的設定值,可直接修改。
測試的方式可試著開啟JBOSS上部屬的服務或使用下列網址開啟JBOSS Web Console(當然port number與IP就要隨測試目的來改變了):http://172.22.11.2:8180/web-console

3. 手動設定config檔:
JBOSS官方文件不建議採用這個方式,所以就不提了。

一般來說,如果能binding 多個IP是最好的,因為這樣可以在相同port number下測試服務,僅需改變IP。若改變服務的port number,則相對的可能需要去調整防火牆或其他軟體的設定值,徒增測試的難度與複雜度。


 

啟動寫完之後,當然就要提關閉JBOSS Instance之法,

# cd $JBOSS_HOME/bin

若欲關閉的JBOSS Instance是使用預設值啟動的,可直接使用下列指令來關閉,
# ./shutdown.sh -S
若JBOSS Instance啟動於預設的服務Port,也可以指定IP與Java Naming Service Port來關閉,關閉的範例如下:
# ./shutdown.sh -S -s jnp://172.22.11.2
# ./shutdown.sh -S -s jnp://172.22.11.2:1099
若JBOSS Instance啟動於之前設定的ports-01,因為服務的Port Number都偏移了100,則其Java Naming Service Port要改為1199,關閉的範例如下:
# ./shutdown.sh -S -s jnp://172.22.11.2:1199
創作者介紹
創作者 easychen 的頭像
easychen

簡單

easychen 發表在 痞客邦 留言(0) 人氣()