一、概述
在JBoss EAP的各种配置文件(包括standalone.xml、domain.xml、host.xml等等)中,interface部分是不太起眼的一部分。看起来比较简单,一般情况下也无须修改,但如果不小心一样会在实践中造成相当的困扰。本文对这部分进行一些经验性总结,至于更深层次的原理探究,一时还顾不上。
先做个铺垫,JBoss EAP已经预设置了四种interface,其绑定IP缺省为127.0.0.1,如下:
<interfaces> <interface name="management"> <inet-address value="${jboss.bind.address.management:127.0.0.1}"/> </interface> <interface name="public"> <inet-address value="${jboss.bind.address:127.0.0.1}"/> </interface> <interface name="private"> <inet-address value="${jboss.bind.address.private:127.0.0.1}"/> </interface> <interface name="unsecure"> <inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/> </interface> </interfaces>
二、standalone.xml的配置
最简单也是最常用的JBoss EAP使用场景,是一个服务器上使用standalone.xml来运行单独的实例。此时,关于interface的配置只包括management和public两项:
<interfaces> <interface name="management"> <inet-address value="${jboss.bind.address.management:127.0.0.1}"/> </interface> <interface name="public"> <inet-address value="${jboss.bind.address:127.0.0.1}"/> </interface> </interfaces>
不能简单地添加private和unsecure项,也不能将IP修改为实际IP,否则启动JBoss实例时会出错。
三、standalone-ha.xml或standalone-full-ha.xml的配置
通常用到standalone-ha.xml或standalone-full-ha.xml的场景比较少见,不过实际上用它们同样可以组建JBoss EAP集群,只不过比起domain模式来要麻烦一些。具体方法是:在各节点上采用相同的配置和部署,然后linux平台以 standalone.sh -c standalone-ha.xml(或standalone-full-ha.xml),而在windows平台以standalone.bat -c standalone-ha.xml(或standalone-full-ha.xml)启动。
另外,如果想在standalone.xml的基础上添加interface项或更改绑定IP,不妨在这两个配置文件的基础上修改。
以7.x版的standalone-ha.xml为例,关于interface的缺省设置为:
<interfaces> <interface name="management"> <inet-address value="${jboss.bind.address.management:127.0.0.1}"/> </interface> <interface name="public"> <inet-address value="${jboss.bind.address:127.0.0.1}"/> </interface> <interface name="private"> <inet-address value="${jboss.bind.address.private:127.0.0.1}"/> </interface> </interfaces>
而standalone-full-ha.xml中还报括了unsecure项,缺省IP也是127.0.0.1。
如果需要用standalone-ha.xml或standalone-full-ha.xml配置为JBoss集群,则绑定IP均需改为服务器各自的实际IP。如果不需要组成集群,则改与不改均可。
四、domain.xml的配置
通常情况下,组件JBoss集群大都使用domain.xml + host.xml的配置。
对于6.x和7.x版,domain.xml中关于interface的配置有所不同:
<!-- 6.x的缺省配置 --> <interfaces> <interface name="management"/> <interface name="public"/> <interface name="unsecure"/> </interfaces> <!-- 7.x的缺省配置 --> <interfaces> <interface name="management"/> <interface name="public"/> <interface name="private"> <inet-address value="${jboss.bind.address.private:127.0.0.1}"/> </interface> <interface name="unsecure"> <inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/> </interface> </interfaces>
不管是哪一种,都不需要对其进行修改。
五、host.xml的配置
host.xml(host-master.xml和host-slave.xml同理)的情况要复杂一些。
对于6.x版,缺省配置为:
<interfaces> <interface name="management"> <inet-address value="${jboss.bind.address.management:127.0.0.1}"/> </interface> <interface name="public"> <inet-address value="${jboss.bind.address:127.0.0.1}"/> </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:127.0.0.1}"/> </interface> </interfaces>
如果要组成集群或从开通外部访问,需将三处127.0.0.1修改为服务器的实际IP。注意,这里没有private项。
对于7.x,缺省配置只包含management和public两项,为:
<interfaces> <interface name="management"> <inet-address value="${jboss.bind.address.management:127.0.0.1}"/> </interface> <interface name="public"> <inet-address value="${jboss.bind.address:127.0.0.1}"/> </interface> </interfaces>
如果只是单纯地开通外部访问,将两处127.0.0.1修改为服务器的实际IP即可。
但如果还要组成集群(使用ha或full-ha的profile),则必须增加private项(为保险unsecure项也一起增加),否则将来无法实现负载均衡和session复制。另外,别忘记将此处所有的127.0.0.1修改为服务器的实际IP。
六、总结
再次吐个槽:JBoss EAP的资料太少,完全靠自己摸索,效率不高。