JBOSS叢集域部署配置6.4
以6.4為例:
jboss eap 6.4 域(Domain)模式配置jboss提供了二種執行模式:standalone(獨立執行模式)、domain(域模式),日常開發中,使用standalone模式足已;但生產部署時,一個app,往往是部署在
jboss叢集環境中的,如果所有jboss server均採用standalone模式,會給運維帶來極大的工作量,需要每臺jboss server上逐一部署/更新,顯然不適合。
domain模式正是為了解決這一問題,該模式下,所有jboss server
,可以同時run多個jboss server例項,所以本文中的jboss server均指某個執行中的jboss server instance),每個group中可以包含多個jboss server,所有這些
jboss server中,可以指定一臺做為域控制器(domain controller),俗稱master server,其它jboss server均為Home Controller(俗稱slave server)。
master上可以控制所有jboss server,並監控其執行情況,部署應用時,一個
下面是配置步驟:
環境:
linux ,jboss eap 6.4
機器資源:
172.21.129.181 (master)、172.21.129.57(slave57)、172.21.129.128(slave128) - 即:181為主機,57、128這二臺機器為slave一、master server配置
1.1 進入 "jboss_home\domain\configuration",開啟host.xml
<interfaces>
<interface name="management">
<inet-address value="${jboss.bind.address.management:172.21.129.181}"/>
</interface>
<interface name="public">
<inet-address value="${jboss.bind.address:172.21.129.181}"/>
</interface>
<interface name="unsecure">
<!-- Used for IIOP sockets in the standard configuration.
To secure JacORB you need to setup SSL -->
<inet-address value="${jboss.bind.address.unsecure:172.21.129.181}"/>
</interface>
</interfaces>
將所有127.0.0.1的地址,換成master server對應的真實IP(否則,無法從遠端通過瀏覽器,訪問jboss 管理控制檯)
1.2 以domain模式啟動master server ---shdomain.sh
1.3 進入master jboss 控制檯
http://172.21.129.181:9990/console/
首次進入,可能會提示沒有建立管理員帳號,建立管理員
步驟如下
因為我們還未建立任何管理帳號,所以jboss提示我們先執行add-user.sh,新增使用者,先回到jboss 中,執行bin/add-user.sh
新增 Management User,然後輸入使用者名稱、密碼(密碼有一定要求,不能太簡單),
使用者名稱:Admin 密碼:Admin,1234
參考下圖:後面一路yes+回車即可,最後有一個加密字串(QW1iLDEyMzQ=),最好記下來,如果jboss上的某些應用要求安全認證,這個值會用上
1.4 建立group、server
進入控制檯後,可以看到jboss已經預設建立了一些group及server,先把他們全乾掉吧(通常,我們會建立自己的group/server)
參考下面這個介面,建立一個組 ASP-server-group-1tips: 建立group時,profile建議選擇full-ha或ha (以後會講如何做jboss叢集配置,負載均衡、智慧容錯時,需要使用ha系列的profile)
重要提示:同一個局域網裡如果有多個master,如果這些master上的group名稱有重複,則只有第一master能啟動成功後,後面的master啟動時會報錯,建議每個master上的
group命名時,加上master的IP,比如group+IP地址,這樣肯定不會重複!
參考下面的圖,在master server上建立1個server注:建立server時,有一個Port Offset選項(參考下圖)
解釋一下,預設情況下server的埠是8080,Port Offset指埠偏移量,如果按上圖配置,Port Offset指定為n,則表示該server建立後,
對應的埠為8080+n,即808n埠 (可以用http://172.21.129.181:808n / 來訪問)
tips: 如果一個server已經處於started狀態,是無法remove的,可以先到下面的介面,把該server stop掉,然後再回這個介面,就可以Remove了二、Slave Server配置
2.1 將jboss eap 6.4解壓到172.21.129.57這臺slave機器上
2.2 進入jboss_home\domain\configuration,將原來的host.xml改名備份,然後再將host-slave.xml複製一份,並改名為host.xml
2.3 修改host.xml
a)
<management-interfaces>
<native-interface security-realm="ManagementRealm">
<socket interface="management" port="${jboss.management.native.port:9099}"/>
</native-interface>
</management-interfaces>
這裡的9999埠,改成其它不使用的埠(比如:9099),否則slave server上的9999埠,與master server上的管理埠衝突,最後啟動時,會報錯
b)
<domain-controller>
<remote host="${jboss.domain.master.address:172.21.129.181}" port="${jboss.domain.master.port:9999}" security-realm="ManagementRealm"/>
</domain-controller>
第2行,指定master server的IP(本文中為172.21.129.181),這樣slave在啟動時,才知道去連哪一臺master
C)
<interfaces>
<interface name="management">
<inet-address value="${jboss.bind.address.management:0.0.0.0}"/>
</interface>
<interface name="public">
<inet-address value="${jboss.bind.address:0.0.0.0}"/>
</interface>
<interface name="unsecure">
<!-- Used for IIOP sockets in the standard configuration.
To secure JacORB you need to setup SSL -->
<inet-address value="${jboss.bind.address.unsecure:0.0.0.0}"/>
</interface>
</interfaces>
原來的127.0.0.1,改成slave server的真實IP或0.0.0.0,否則slave上的應用,只能在slave本機訪問
d)
<servers>
<server name="APS-server-slave2" group="APS-server-group-1" auto-start="true">
<socket-bindings socket-binding-group="full-ha-sockets" port-offset="0"/>
</server>
</servers>
手動在slave上建立二個server,並加入到APS-server-group-1 (注:group的值,必須是在master server上建立過的,否則啟動時,slave上的server無法正常加入到master相關的group中)
e)
<host name="slave57" xmlns="urn:jboss:domain:1.6">
最開頭的host節點上,加一個name="xxx"的屬性(本文中為slave57),這個name值最終會顯示在master server的jboss 控制檯中,建議起一個容易識別的名稱
三、安全認證配置
3.1回到master server上,新增一個名為slave57的管理員帳號,並記住最後生成的<secret value="xxxx" />的字串(xxx為密碼經過base64處理後的內容)
3.2 回到slave57這臺server中,再次編輯host.xml,將<secret value="xxxx" />的內容替換
<server-identities>
<!-- Replace this with either a base64 password of your own, or use a vault with a vault expression -->
<!--<secret value="c2xhdmVfdXNlcl9wYXNzd29yZA=="/>-->
<secret value="c2xhdmU1Ny4xMjM=" />
</server-identities>
中的<secret value=... />部分
解釋:slave啟動時,需要連線註冊到master的jboss中,連線過程需要安全認證,這裡的secret相當於認證的鑰匙,而認證的使用者名稱即為:正在連線的slave機器上jboss中host.xml中<host name='xxx'>這個節點中的name值,所以4.1需要在master中建立一個名為“slave57”的管理員
3.3 另一臺slave伺服器,類似的做法,host.xml中<host>節點的name為slave128
3.4 依次以domain模式啟動master、slave57 slave128 上的jboss
異常處理:如果出現命令列關閉JBOSS程序自動殺死情況,請按照圖下在在jboss-eap-6.4
bin目錄下建立start.sh啟動,內容如下: