jboss应用部署的多端口管理机制
大多数时候,在应用部署的初始阶段,流量不是太大的情况下,没必要购买很多台机器来部署不同的应用,所以一台机器上部署3-5个jboss实例是很正常的,不同的实例通过调用不同的端口来和谐运行。而部署过的人都知道,各种配置中涉及到端口的文件有很多,如果要一个个的修改除了工作量大不说,还很容易出错,jboss其实提供了端口集中管理的机制,是通过service-bindings.xml文件来实现的,文件中定义了多个以server-name为标志的端口管理节点,该文件在jboss server的根目录下,然后在每个jboss实例中的jboss-server.xml中注册一个端口绑定服务ServiceBindingManager:
ServerName:指定xxx-bindings.xml对应的端口配置
StoreURL: 指定xx-bindings.xml文件的位置
一旦该服务注册,则Tomcat下server.xml的端口设置被忽略,而启用新的端口配置
新建实例步骤:
1、拷贝一份初始的jboss实例至jboss的server目录下
2、将examplesinding-managersample-bindings.xml重命名service-bindings.xml至server目录下,从sample可以看到,jboss默认内置了4个jboss服务实例的端口绑定。部分片段内容如下:
<!-- **************** http-invoker.sar & httpha-invoker.sar*************** -->
<!-- EJBInvoker -->
<service-config name="jboss:service=invoker,type=http"
delegateClass="org.jboss.services.binding.AttributeMappingDelegate"
>
<delegate-config>
<attribute name="InvokerURLSuffix">:${port}/invoker/EJBInvokerServlet</attribute>
</delegate-config>
<!--
MUST BE THE SAME AS
TOMCAT HTTP CONNECTOR BELOW !!!
-->
<binding port="8182"/>
</service-config>
<!-- JMXInvoker -->
<service-config name="jboss:service=invoker,type=http,target=Naming"
delegateClass="org.jboss.services.binding.AttributeMappingDelegate"
>
<delegate-config>
<attribute name="InvokerURLSuffix">:${port}/invoker/JMXInvokerServlet</attribute>
</delegate-config>
<!--
MUST BE THE SAME AS
TOMCAT HTTP CONNECTOR BELOW !!!
-->
<binding port="8182"/>
</service-config>
<!-- readonly JMXInvoker -->
<service-config name="jboss:service=invoker,type=http,target=Naming,readonly=true"
delegateClass="org.jboss.services.binding.AttributeMappingDelegate"
>
<delegate-config>
<attribute name="InvokerURLSuffix">:${port}/invoker/readonly/JMXInvokerServlet</attribute>
</delegate-config>
<!--
MUST BE THE SAME AS
TOMCAT HTTP CONNECTOR BELOW !!!
-->
<binding port="8182"/>
</service-config>
3、在jbossserverdefaultconfjboss-service.xml文件中找到ServiceBindingManager对应的节点,默认情况下该节点是处于注释状态,去掉注释,修改ServerName的值
<mbean code="org.jboss.services.binding.ServiceBindingManager"
name="jboss.system:service=ServiceBindingManager">
<attribute name="ServerName">ports-k2d</attribute>
<attribute name="StoreURL">${jboss.home.url}/server/service-bindings.xml</attribute>
<attribute name="StoreFactoryClassName">
org.jboss.services.binding.XMLServicesStoreFactory
</attribute>
</mbean>
4、制作jboss服务重启脚本
ps aux | grep k2d | awk '{ print $2 }' > kill-2.txt
kill -9 `cat kill-2.txt`
rm -f kill-2.txt
rm -fr /jboss/server/k2d/work/jboss.web
nohup run.sh -b xxx.xxx.xxx.xxx-c k2d </dev/null 1>/dev/null 2>&1 &
5、配置脚本相关的环境变量,可以在任何目录下重启该jboss服务
6、编写日志分割和压缩脚本
评论