wildfly 21的domain配置

簡介

wildfly可以使用Standalone模式或者domain模式啟動晶乔,standalone模式就很簡單了锣咒,可以看做是一個單獨的服務器。今天我們將會詳細講解一下domain模式赞弥。

wildfly模式簡介

wildfly可以在兩種模式下面工作毅整,他們是standalone和managed domain。

standalone模式表示的是一個獨立的服務器绽左,它們可以通過使用standalone.sh來啟動悼嫉。如果使用的是standalone模式,但是又需要使用多服務器的集群模式拼窥,那么需要用戶自己在應用層去處理戏蔑。

如果想中心化管理多個多個服務的話蹋凝,那么可以用到managed domain模式。

在managed domain模式下总棵,wildfly可以通過一個domain controller來控制和管理其他的domain server鳍寂。

我們看下managed domain下的服務器部署示意圖:

image

上面示意圖中,一個host表示的是一個實體或者虛擬機情龄。在一個host中可以部署多個server instances迄汛。

我們可以通過domain.sh來啟動host controller。

host controller負責啟動和停止server服務骤视,并且負責和Domain Controller進行交互鞍爱。

host controller通過讀取domain/configuration/host.xml的配置信息,來進行服務器的配置专酗。

上圖中有一個特殊的host controller叫做Domain Controller睹逃。Domain Controller負責整個domain的管理工作。

域控制器的主要職責是維護域的中央管理策略祷肯,以確保所有主機控制器都知道其當前內容沉填,并協(xié)助主機控制器確保根據(jù)此策略配置任何正在運行的應用程序服務器實例。 默認情況下躬柬,此中央管理策略存儲在Domain Controller主機的domain/configuration/domain.xml中拜轨。

server group中的一組server都有相同的配置,可以將它們看做是一個允青。一個 Domain Controller 可以管理多個server group.

我們看一個server group的定義:

<server-group name="main-server-group" profile="default">
    <socket-binding-group ref="standard-sockets"/>
    <deployments>
        <deployment name="foo.war_v1" runtime-name="foo.war" />
        <deployment name="bar.ear" runtime-name="bar.ear" />
    </deployments>
</server-group>

最后一個概念就是server橄碾,server表示的是一個運行的應用程序。server和Host Controller 運行在不同的JVM中的颠锉,并且server是由Host Controller 來啟動的法牲。

注意,不管是standalone還是managed domain琼掠,這都是取決于你內部的服務是怎么管理的拒垃,是一個個單獨的部署還是使用中心化的管理方式,他們和外部用戶的服務方式是無關的瓷蛙,也就是說不管使用standalone還是managed domain,都可以搭建服務集群悼瓮。

domain controller的配置

domain controller是一個中心化的對domain進行管理的服務。我們需要一個host被配置為domain controller艰猬,還需要暴露它的管理接口以供被管理的host進行連接横堡。

我們看下一個domain controller的配置:

<domain-controller>
   <local/>
</domain-controller>

上面的例子中,local表示的是本地host冠桃。

如果這個機子被當做是domain controller命贴,那么必須配置和暴露管理接口:

<management-interfaces>
  <native-interface security-realm="ManagementRealm">
    <socket interface="management" port="${jboss.management.native.port:9999}"/>
  </native-interface>
  <http-interface security-realm="ManagementRealm">
    <socket interface="management" port="${jboss.management.http.port:9990}"/>
  </http-interface>
</management-interfaces>

其中,interface指向的management是在host.xml中配置的:

<interfaces>
   <interface name="management">
       <inet-address value="192.168.0.101"/>
   </interface>
</interfaces>

默認情況下master domain controller是需要認證才能被訪問的,我們需要通過使用add-user來為slave domain controller 創(chuàng)建用戶胸蛛,以連接到master domain controller污茵。

所以,我們在add-user的最后一步葬项,我們需要輸入y:

Is this new user going to be used for one AS process to connect to another AS process e.g. slave domain controller?
yes/no? y
To represent the user add the following to the server-identities definition <secret value="cE3EBEkE=" />

我們需要記住上面的xml格式的secret泞当,以便在后續(xù)slave的配置中使用。

Host controller的配置文件

有了domain controller玷室,我們就可以通過host controller加入存在的domain了零蓉。

在做host controller的配置的時候,需要注意穷缤,host的邏輯名在一個domain內部必須是唯一的敌蜂。并且host controller是通過IP地址來連接到domain controller的。

所以我們需要在host.xml中給host起一個唯一的名字:

<host xmlns="urn:jboss:domain:3.0"
     name="slave">
[...]
</host>

如果沒有指定host的名字津肛,將會使用jboss.host.name的值作為host的名字章喉。如果這個值也沒有設置,那么將會使用HOSTNAME或者COMPUTERNAME作為host的名字身坐。

我們需要在hsot controller中指定domain controller的連接信息:

<domain-controller>
   <remote protocol="remote" host="192.168.0.101" port="9999" username="slave" security-realm="SlaveRealm"/>
</domain-controller>

這里我們需要指定一個security realm秸脱,用來存放slave的密碼:

<security-realm name="SlaveRealm">
  <server-identities>
    <secret value="cE3EBEkE=" />
  </server-identities>
</security-realm>

這個secret,就是在使用user-add工具的時候創(chuàng)建的密碼部蛇。

忽略域范圍的資源

我們知道domain controller的職責就是保證所有正在運行的host controller都擁有和domain controller域范圍配置一致的本地副本摊唇。

這些域范圍的配置指的是不以 /host = * 開頭的資源,比如那些保存在domain.xml中的資源涯鲁。

如果host controller不是想做domain controller的備份巷查,或者說host controller不想重新啟動一個新的server group。那么host controller只需要保存已運行server group相關的域范圍配置即可抹腿,并不需要保存所有的是域范圍配置岛请。

這樣可以減少數(shù)據(jù)的傳輸,提升系統(tǒng)的效率警绩。

如果要忽略域范圍的資源我們可以使用ignore-unused-configuration="true"崇败。

<domain-controller>
    <remote security-realm="ManagementRealm" ignore-unused-configuration="true">
        <discovery-options>
            <static-discovery name="primary" protocol="${jboss.domain.master.protocol:remote}" host="${jboss.domain.master.address}" port="${jboss.domain.master.port:9999}"/>
        </discovery-options>
    </remote>
</domain-controller>

Server groups

Server groups就是服務分組,它是由domain controller來定義的肩祥,每個server-group都需要和profile后室,socket-binding-group進行關聯(lián),我們看個例子:

<server-groups>
   <server-group name="main-server-group" profile="default">
       <jvm name="default">
          <heap size="64m" max-size="512m"/>
          <permgen size="128m" max-size="128m"/>
       </jvm>
       <socket-binding-group ref="standard-sockets"/>
   </server-group>
   <server-group name="other-server-group" profile="bigger">
       <jvm name="default">
           <heap size="64m" max-size="512m"/>
       </jvm>
       <socket-binding-group ref="bigger-sockets"/>
   </server-group>
</server-groups>

上面配置中的socket-binding-group也是在domain.xml中定義的混狠,指定了網(wǎng)絡的interface和端口:

<socket-binding-groups>
    <socket-binding-group name="standard-sockets" default-interface="public">
        <socket-binding name="http" port="8080"/>
        [...]
    </socket-binding-group>
    <socket-binding-group name="bigger-sockets" include="standard-sockets" default-interface="public">
        <socket-binding name="unique-to-bigger" port="8123"/>
    </socket-binding-group>
</socket-binding-groups>

socket-binding-group還可以使用include來引用其他的socket-binding-group岸霹。

profile是subsystems的集合,subsystem就是應用程序需要的各種功能檀蹋。

<profiles>
    <profile name="default">
        <subsystem xmlns="urn:jboss:domain:web:1.0">
            <connector name="http" scheme="http" protocol="HTTP/1.1" socket-binding="http"/>
            [...]
        </subsystem>
        <\!-\- The rest of the subsystems here \-->
        [...]
    </profile>
    <profile name="bigger">
        <subsystem xmlns="urn:jboss:domain:web:1.0">
            <connector name="http" scheme="http" protocol="HTTP/1.1" socket-binding="http"/>
            [...]
        </subsystem>
        <\!-\- The same subsystems as defined by 'default' here \-->
        [...]
        <subsystem xmlns="urn:jboss:domain:fictional-example:1.0">
            <socket-to-use name="unique-to-bigger"/>
        </subsystem>
    </profile>
</profiles>

Servers

Servers是在host controller中定義的松申,而Servers group是在domain controller中定義的。

每個server都要屬于一個server group俯逾,server就是服務贸桶,每個server都會啟動一個jvm。 我們先看下server的定義:

<servers>
    <server name="server-one" group="main-server-group">
        <\!-\- server-one inherits the default socket-group declared in the server-group \-->
        <jvm name="default"/>
    </server>
 
    <server name="server-two" group="main-server-group" auto-start="true">
        <socket-binding-group ref="standard-sockets" port-offset="150"/>
        <jvm name="default">
            <heap size="64m" max-size="256m"/>
        </jvm>
    </server>
 
    <server name="server-three" group="other-server-group" auto-start="false">
        <socket-binding-group ref="bigger-sockets" port-offset="250"/>
    </server>
</servers>

在server中桌肴,我們可以重新定義socket-binding-group皇筛。

auto-start的意思是server是否回隨著host controller的啟動而啟動。

最后坠七,我們看下在host.xml中的jvm的定義:

<jvms>
    <jvm name="default">
        <heap size="64m" max-size="128m"/>
    </jvm>
</jvms>

我們可以在server中對其進行重寫水醋。

總結

以上就是wildfly中,對domain的配置規(guī)則彪置,可以看到在domain中拄踪,可以啟動多個server,配置和管理起來比tomcat要復雜很多拳魁,不過功能也相應的強大很多惶桐,我們可以借鑒這些優(yōu)秀軟件的設計思想,從而應用到我們的自己的程序中潘懊。

本文作者:flydean程序那些事

本文鏈接:http://www.flydean.com/wildfly-21-domain/

本文來源:flydean的博客

歡迎關注我的公眾號:「程序那些事」最通俗的解讀姚糊,最深刻的干貨,最簡潔的教程授舟,眾多你不知道的小技巧等你來發(fā)現(xiàn)救恨!

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市释树,隨后出現(xiàn)的幾起案子肠槽,更是在濱河造成了極大的恐慌,老刑警劉巖躏哩,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件署浩,死亡現(xiàn)場離奇詭異,居然都是意外死亡扫尺,警方通過查閱死者的電腦和手機筋栋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來正驻,“玉大人弊攘,你說我怎么就攤上這事」檬铮” “怎么了襟交?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長伤靠。 經(jīng)常有香客問我捣域,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任焕梅,我火速辦了婚禮迹鹅,結果婚禮上,老公的妹妹穿的比我還像新娘贞言。我一直安慰自己斜棚,他們只是感情好,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布该窗。 她就那樣靜靜地躺著弟蚀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪酗失。 梳的紋絲不亂的頭發(fā)上义钉,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機與錄音规肴,去河邊找鬼断医。 笑死,一個胖子當著我的面吹牛奏纪,可吹牛的內容都是我干的鉴嗤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼序调,長吁一口氣:“原來是場噩夢啊……” “哼醉锅!你這毒婦竟也來了?” 一聲冷哼從身側響起发绢,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤硬耍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后边酒,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體经柴,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年墩朦,在試婚紗的時候發(fā)現(xiàn)自己被綠了坯认。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡氓涣,死狀恐怖牛哺,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情劳吠,我是刑警寧澤引润,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站痒玩,受9級特大地震影響淳附,放射性物質發(fā)生泄漏议慰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一奴曙、第九天 我趴在偏房一處隱蔽的房頂上張望褒脯。 院中可真熱鬧,春花似錦缆毁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至践啄,卻和暖如春浇雹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背屿讽。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工昭灵, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人伐谈。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓烂完,卻偏偏與公主長得像,于是被迫代替她去往敵國和親诵棵。 傳聞我的和親對象是個殘疾皇子抠蚣,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內容