初学习Jboss Datagrid的时候,将一些概念搞混了,然后误打误撞了解了jboss eap domain模式。
jboss提供了二种运行模式:standalone(独立运行模式)、domain(域模式),日常开发中,使用standalone模式足已;但生产部署时,一个app,往往是部署在jboss集群环境中的,如果所有jboss server均采用standalone模式,会给运维带来极大的工作量,需要每台jboss server上逐一部署/更新,显然不适合。而domain模式就是为了解决这一问题。该模式下,所有jboss server可以划分成不同的group,每个group中可以包含多个jboss server,所有这些jboss server中可以指定一台做为域控制器(domain controller),俗称master server,其它jboss server均为slave server。
※这里的jboss server,均指某个运行中的jboss server instance
一台物理机或者虚拟机称之为host controller,选取其中的一台机器作为domain controller,这样就可以管理其他的host controller,而host controller分别管理各自上的server instance。
为了理清这些概念,做如下测试
一.环境准备(操作系统是windows还是linux是没有影响的,这里因为只有一台windows机器,所以准备了一台可以与之通信的linux机器)
※这里操作系统的类型没有任何影响,只是恰巧而已。
二.什么也不做,启动服务,查看默认配置
1.启动服务
domain.bat
2.创建管理者(adminstrator-user)
add-user.bat
3.访问控制台
http://127.0.0.1:9990
通过这个URL,也不一定能访问到控制台,为了一定能访问到,最好将下面这一段,改成本机的真是Ip
http://ip:9990
host.xml
………
<interfaces>
<interface name="management">
<inet-address value="${jboss.bind.address.management:10.0.210.135}"/>
</interface>
<interface name="public">
<inet-address value="${jboss.bind.address:10.0.210.135}"/>
</interface>
</interfaces>
………
4.从控制台中可以看到有一些默认的内容。
为什么访问控制台,会有那么多默认信息,原因是如下设定产生的
1)domain.xml
………
<server-groups>
<server-group name="main-server-group" profile="full">
<jvm name="default">
<heap size="1000m" max-size="1000m"/>
</jvm>
<socket-binding-group ref="full-sockets"/>
</server-group>
<server-group name="other-server-group" profile="full-ha">
<jvm name="default">
<heap size="1000m" max-size="1000m"/>
</jvm>
<socket-binding-group ref="full-ha-sockets"/>
</server-group>
</server-groups>
………
2)host.xml
<host name="master" xmlns="urn:jboss:domain:4.1">
………
<servers>
<server name="server-one" group="main-server-group">
</server>
<server name="server-two" group="main-server-group" auto-start="true">
<socket-bindings port-offset="150"/>
</server>
<server name="server-three" group="other-server-group" auto-start="false">
<socket-bindings port-offset="250"/>
</server>
</servers>
………
</host>
※定义port -offset的时候一定不能定义重复的偏移量,它是相对于8080偏移的。
5.根据上面的默认配置,测试
server-one
http://10.0.210.135:8080
server-two
http://10.0.210.135:8230/
6.看完默认配置,试着在master group里创建一台server
这一步完成之后,host.xml里的servers节点下会自动多出来如下配置。
<server name="server-test1" group="main-server-group" auto-start="true">
<socket-bindings socket-binding-group="full-sockets" port-offset="1"/>
</server>
这样完成之后,windows里就多出来了一个server-test1,并且访问下面的URL可以正常显示
http://10.0.210.135:8081/
7.如何去管理别的一台机器上的服务,比如在slave中一般这样定义:
<domain-controller>
<!-- Alternative remote domain controller configuration with a host and port -->
<remote protocol="remote" host="${jboss.domain.master.address:10.0.210.135}" port="${jboss.domain.master.port:9999}" security-realm="ManagementRealm"/>
</domain-controller>
第3行,指定master server的IP(本文中为10.0.210.135),这样slave在启动时,才知道去连哪一台master 。
而master Server中这一段,他是这样定义的:
<domain-controller>
<local/>
</domain-controller>
8.其他注意事项
<management-interfaces>
<native-interface security-realm="ManagementRealm">
<socket interface="management" port="${jboss.management.native.port:9099}"/>
</native-interface>
<http-interface security-realm="ManagementRealm" http-upgrade-enabled="true">
<socket interface="management" port="${jboss.management.http.port:9001}"/>
</http-interface>
</management-interfaces>
这里的9999端口,改成其它不使用的端口(比如:9099),否则slave server上的9999端口,与master server上的管理端口冲突,最后启动时,会报错
<interfaces>
<interface name="management">
<inet-address value="${jboss.bind.address.management:192.168.100.25}"/>
</interface>
<interface name="public">
<inet-address value="${jboss.bind.address:192.168.100.25}"/>
</interface>
</interfaces>
原来的127.0.0.1,改成slave server的真实IP或0.0.0.0,否则slave上的应用,只能在slave本机访问
<host xmlns="urn:jboss:domain:4.1" name="slave192">
最开头的host节点上,加一个name="xxx"的属性(本文中为slave57),这个name值最终会显示在master server的jboss 控制台中,建议起一个容易识别的名称
回到master server上,添加一个名为slave192的管理员帐号,并记住最后生成的<secret value="xxxx" />的字符串(xxx为密码经过base64处理后的内容)
<secret value="MXEydzNlNHIhQA=="/>
回到slave192这台server中,再次编辑host.xml
<security-realm name="ManagementRealm">
<authentication>
<local default-user="$local" skip-group-loading="true"/>
<properties path="mgmt-users.properties" relative-to="jboss.domain.config.dir"/>
</authentication>
<authorization map-groups-to-roles="false">
<properties path="mgmt-groups.properties" relative-to="jboss.domain.config.dir"/>
</authorization>
<server-identities>
<!-- Replace this with either a base64 password of your own, or use a vault with a vault expression -->
<secret value="MXEydzNlNHIhQA=="/>
</server-identities>
</security-realm>
slave启动时,需要连接注册到master的jboss中,连接过程需要安全认证,这里的secret相当于认证的钥匙,而认证的用户名即为:正在连接的slave机器上jboss中host.xml中<host
name='xxx'>这个节点中的name值,所以4.1需要在master中创建一个名为“slave192”的管理员
9.最后,启动Linux里的jboss,这样就可以在上面的控制台里看到slave192这个host
这里除了通过控制台,管理各个服务,还可以通过cli去控制。
启动jboss-cli.bat
执行命令(native-interface)
connect 10.0.210.135:9999
执行对服务器管理的各种命令,
ls /host=master/server-config=server-test1
ls /host=slave192/server-config=server-slave1
。。。。。
备注
有人可能会有疑问,通过Master去管理slave,那原来slave自己的一些管理画面还可以访问吗?答案是否定的。
connect 192.168.100.25:9099
The controller is not available at 192.168.100.25:9099: java.net.ConnectException: WFLYPRT0053: http-remoting://192.168.100.25:9099连接不成功,连接失败。
: WFLYPRT0053: http-remoting://192.168.100.25:9099 连接不成功,连接失败: XNIO000812: Connection closed unexpectedly
访问控制页面:
http://192.168.100.25:9001
You may not access the admin console on this node, all access must come via the master host controller.
参考:http://www.cnblogs.com/yjmyzz/p/jboss-eap-mod-cluster.html
相关推荐
基于 JBoss DataGrid 和 EAP 产品的演示展示了如何使用 JBoss DataGrid 的 MapReduce 实现创建分布式大数据处理应用程序。 设置和配置 有关此项目的详细信息,请参阅 docs 目录。 对于那些迫不及待的人,请参阅...
JBoss BRMS HA 复杂事件处理演示 这是一个演示应用程序,演示了使用 JBoss ... Infinispan/JBoss DataGrid 缓存:该组件嵌入在 CEP 节点内(即 Infinispan 用于复制模式),用于存储规则触发时由 CEP 引擎发出的命令。
少儿编程scratch项目源代码文件案例素材-直升机飞行.zip
wanjunshe_Python-Tensorflow_12888_1745868924470
健康监测_Android开发_BLE蓝牙通信_心率数据采集与存储_基于小米手环2的实时心率监测应用_支持后台长时间运行的心率记录工具_可导出SQLite数据库的心率数据分析系统_适
少儿编程scratch项目源代码文件案例素材-种花模拟器.zip
嵌入式系统开发_FreeRTOS实时操作系统_STM32F103C8T6微控制器_OLED显示屏_DHT11温湿度传感器_多任务调度_多级菜单设计_万年历算法_电子闹钟功能_参数配
基于python实现的粒子群的VRP(车辆配送路径规划)问题建模求解+源码+项目文档+算法解析,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 算法设计的关键在于如何向表现较好的个体学习,标准粒子群算法引入惯性因子w、自我认知因子c1、社会认知因子c2分别作为自身、当代最优解和历史最优解的权重,指导粒子速度和位置的更新,这在求解函数极值问题时比较容易实现,而在VRP问题上,速度位置的更新则难以直接采用加权的方式进行,一个常见的方法是采用基于遗传算法交叉算子的混合型粒子群算法进行求解,这里采用顺序交叉算子,对惯性因子w、自我认知因子c1、社会认知因子c2则以w/(w+c1+c2),c1/(w+c1+c2),c2/(w+c1+c2)的概率接受粒子本身、当前最优解、全局最优解交叉的父代之一(即按概率选择其中一个作为父代,不加权)。 算法设计的关键在于如何向表现较好的个体学习,标准粒子群算法引入惯性因子w、自我认知因子c1、社会认知因子c2分别作为自身、当代最优解和历史最优解的权重,指导粒子速度和位置的更新,这在求解函数极值问题时比较容易实现,而在VRP问题上,速度位置的更新则难以直接采用加权的方式进行,一个常见的方法是采用基于遗传算法交叉算子的混合型粒子群算法进行求解,这里采用顺序交叉算子,对惯性因子w、自我认知因子c1、社会认知因子c2则以w/(w+c1+c2),c1/(w+c1+c2),c2/(w+c1+c2)的概率接受粒子本身、当前最优解、全局最优解交叉的父代之一(即按概率选择其中一个作为父代,不加权)。
scratch少儿编程逻辑思维游戏源码-猫猫粉碎.zip
scratch少儿编程逻辑思维游戏源码-蓝胡子.zip
scratch少儿编程逻辑思维游戏源码-美食大亨.zip
scratch少儿编程逻辑思维游戏源码-洛克人.zip
scratch少儿编程逻辑思维游戏源码-龙冲刺.zip
思幻个人引导页V2.2版本11月29日更新.zip
scratch少儿编程逻辑思维游戏源码-骑士风斩法.zip
移动应用开发_H5CSS3ionicng-cordovaMVVM模式_基于HTML5和CSS3技术实现多页面布局ionic指令数据绑定ui-route单页跳转调用手机
少儿编程scratch项目源代码文件案例素材-植物大战僵尸创造版 Ver. 1.0.3.zip
scratch少儿编程逻辑思维游戏源码-日落(2).zip
动态星空背景个人主页(带后台).zip
scratch少儿编程逻辑思维游戏源码-迷雾森林:诞生 3.2 起源觉醒.zip