以6.3版本为例,下载地址 https://www.jboss.org/products/eap/download/,这个地址现在有问题了,下不了好像要redhat账号还要花钱?不知咋回事

下载完成后,解压到某个目录即可 (下面用jboss_home代替jboss根目录)

jboss as版本下载地址:http://jbossas.jboss.org/downloads/ (这个已经不维护了)

wildfly版本下载地址: http://wildfly.org/downloads/

一、认识jboss

1.首先认识目录结构:

----bin
----add-user.bat
----domain.bat
----standalone.bat
----domain
----configuration
----mgmt-users.properties
----domain.xml
----host.xml
----host-master.xml
----host-slave.xml
----data
----content
----servers
----server*
----data
----tmp //与standalone模式下的tmp类似
----standalone
----configuration
----mgmt-users.properties //add-user.bat添加的管理员用户保存在这
----standalone.xml
----deployments
----tmp
----vfs
----temp //war项目在这,6.0稍有不同
----deployment //war项目中lib目录下的jar包,6.0稍有不同
----work
----jboss.web
----default-host //war项目的jsp文件生成的java,class类在这,.vm还不知道有没有class文件生成,目前看不在
----welcome-content

2.配置文件详解

以standalone.xml为例,

<xml>
<server>
<extensions>
  <extension module="org.jboss.as.clustering.infinispan"/> //一个扩展是一个能扩展服务器功能的模块
</extensions> <system-properties> //可定义变量
</system-properties>
<management> //感觉是后台管理的配置
<security-realms>
   <security-realm name="ManagementRealm"> //管理角色和用户
<authentication>
<local default-user="$local"/>
<properties path="mgmt-users.properties" relative-to="jboss.server.config.dir"/>
</authentication>
   </security-realm>
  </security-realms>
    <management-interfaces>
   <native-interface security-realm="ManagementRealm"> //命令行管理接口
    <socket-binding native="management-native"/>
   </native-interface>
   <http-interface security-realm="ManagementRealm"> //http安全接口,应用安全配置和socket binding
    <socket-binding http="management-http"/>
   </http-interface>
  </management-interfaces>
</management> <profile>
<subsystem xmlns="urn:jboss:domain:cmp:1.0"/>  //一个子系统是使用一个扩展添加到服务器核心的一组功能,对应一个extension节点
<subsystem xmlns="urn:jboss:domain:web:1.1"  .....>  //web配置
</profile>
  <interfaces>
<interface name="public"> //对socket可以绑定到的一个物理接口、IP地址或者主机名的逻辑命名
<inet-address value="${jboss.bind.address:127.0.0.1}"/>
</interface>
</interfaces>
<socket-binding-group>
<socket-binding /> //是对一个socket命名的配置
</socket-binding-group>
</server>

3.域(domain)模式

jboss提供了二种运行模式:standalone(独立运行模式)、domain(域模式),日常开发中,使用standalone模式足已;但生产部署时,一个app,往往是部署在jboss集群环境中的,如果所有jboss server均采用standalone模式,会给运维带来极大的工作量,需要每台jboss server上逐一部署/更新,显然不适合。

domain模式正是为了解决这一问题,该模式下,所有jboss server可以划分成不同的group(注:这里的jboss server并不一定要对应某台物理机或虚拟机,一个os上,可以同时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,并监控其运行情况,部署应用时,一个war包,只需要部署到group上,该group中的所有jboss server即会同步自动部署。

上一张域的拓扑图:

二、配置域模式

1.在10.6.144.156机器上配置master,

先添加个管理员账号:add-user.bat/add-user.sh ,

用户名:slave155

记住控制台显示的<secret value="c2xhdmUxNTUuMTIz" />的字符串(c2xhdmUxNTUuMTIz为密码经过base64处理后的内容)

1.1.进入 "jboss_home/domain/configuration",打开host.xml

<interfaces>
<interface name="management">
<inet-address value="${jboss.bind.address.management:10.6.144.156}"/>
</interface>
<interface name="public">
<inet-address value="${jboss.bind.address:10.6.144.156}"/>
</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:10.6.144.156}"/>
</interface>
</interfaces>

将所有127.0.0.1的地址,换成master server对应的真实IP(否则,无法从远程通过浏览器,访问jboss 管理控制台)

1.2.启动,nohup jboss_home/bin/domain.sh &

1.3.进入master jboss 控制台http://10.6.144.156:9990/console/,使用前面创建的管理账号

1.4.创建group.server

至此,master已基本配置完成

2.配置slave,在10.6.144.155机器上

2.1.进入 "jboss_home/domain/configuration",将原来的host.xml改名备份,然后再将host-slave.xml复制一份,并改名为host.xml

2.2修改host.xml

a)

<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本机访问

b)

<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上的管理端口冲突,最后启动时,会报错

c)

<domain-controller>
<remote host="${jboss.domain.master.address:172.21.129.181}" port="${jboss.domain.master.port:9999}" security-realm="ManagementRealm"/>
</domain-controller>

指定master server的IP(本文中为10.6.144.156),这样slave在启动时,才知道去连哪一台master

d)最开头的host节点上,加一个name="xxx"的属性(本文中为slave155),这个name值最终会显示在master server的jboss 控制台中,建议起一个容易识别的名称

<host name="slave155" xmlns="urn:jboss:domain:1.6">

安全认证

<server-identities>
<!-- Replace this with either a base64 password of your own, or use a vault with a vault expression -->
<secret value="c2xhdmUxNTUuMTIz" />
</server-identities>

注:slave启动时,需要连接注册到master的jboss中,连接过程需要安全认证,这里的secret相当于认证的钥匙,而认证的用户名即为:正在连接的slave机器上jboss中host.xml中<host name='xxx'>这个节点中的name值,所以一开始需要在master中创建一个名为“slave155”的管理员

2.3手动在slave上创建slave server,并加入到group8801(注:group的值,必须是在master server上创建过的,否则启动时,slave上的server无法正常加入到master相关的group中)

3.启动部署应用

依次以domain模式启动master、slave155 上的jboss,在http://10.6.144.156:9990/console/可以看到

进入部署界面,点击Add,添加一个war包,再Assign,分配到某一个group,即可自动部署到该group下所有server。如果想把一个app,部署到多个group,也没问题,再次点击assign,再分配到另一个group。

三、集群

Domain模式解决了统一管理多台jboss的问题,下面是如何利用mod_cluster来实现负载均衡、容错。

mod_cluster是jboss的一个开源集群模块(基于apache 2.2.x),官网地址为http://mod-cluster.jboss.org/, http://mod-cluster.jboss.org/downloads/1-2-6-Final-bin 这上面有各种OS的版本,

windows环境,应该下载http://downloads.jboss.org/mod_cluster//1.2.6.Final/windows/mod_cluster-1.2.6.Final-windows-amd64.zip 这个版本

linux环境,应该下载http://downloads.jboss.org/mod_cluster//1.2.6.Final/linux-x86_64/mod_cluster-1.2.6.Final-linux2-x64.tar.gz

解压到10.6.144.156机器上/opt/jboss目录下

3.1修改/opt/jboss/httpd/httpd/conf/httpd.cfg文件

mod_cluster部分,参考下面修改

<IfModule manager_module>
Listen 10.6.144.156:8836
ManagerBalancerName mycluster
<VirtualHost 10.6.144.156:8836>
<Location />
Order deny,allow
Allow from all
</Location> KeepAliveTimeout 300
MaxKeepAliveRequests 0
AdvertiseFrequency 5
EnableMCPMReceive #<Location /mod_cluster_manager>
<Location /cluster>
SetHandler mod_cluster-manager
Order deny,allow
Allow from all
</Location> </VirtualHost>
</IfModule>

主要是把127.0.0.1,改成master server对应的真实IP,另外把Deny from all注释掉,把紧贴着的一行改成Allow from all,去掉这些访问上的限制

下面是完整的http.conf参考内容:

 ServerRoot "/opt/jboss/httpd/httpd"
Listen
LoadModule authn_file_module /opt/jboss/httpd/lib/httpd/modules/mod_authn_file.so
LoadModule authn_dbm_module /opt/jboss/httpd/lib/httpd/modules/mod_authn_dbm.so
LoadModule authn_anon_module /opt/jboss/httpd/lib/httpd/modules/mod_authn_anon.so
LoadModule authn_dbd_module /opt/jboss/httpd/lib/httpd/modules/mod_authn_dbd.so
LoadModule authn_default_module /opt/jboss/httpd/lib/httpd/modules/mod_authn_default.so
LoadModule authn_alias_module /opt/jboss/httpd/lib/httpd/modules/mod_authn_alias.so
LoadModule authz_host_module /opt/jboss/httpd/lib/httpd/modules/mod_authz_host.so
LoadModule authz_groupfile_module /opt/jboss/httpd/lib/httpd/modules/mod_authz_groupfile.so
LoadModule authz_user_module /opt/jboss/httpd/lib/httpd/modules/mod_authz_user.so
LoadModule authz_dbm_module /opt/jboss/httpd/lib/httpd/modules/mod_authz_dbm.so
LoadModule authz_owner_module /opt/jboss/httpd/lib/httpd/modules/mod_authz_owner.so
LoadModule authz_default_module /opt/jboss/httpd/lib/httpd/modules/mod_authz_default.so
LoadModule auth_basic_module /opt/jboss/httpd/lib/httpd/modules/mod_auth_basic.so
LoadModule auth_digest_module /opt/jboss/httpd/lib/httpd/modules/mod_auth_digest.so
LoadModule advertise_module /opt/jboss/httpd/lib/httpd/modules/mod_advertise.so
LoadModule file_cache_module /opt/jboss/httpd/lib/httpd/modules/mod_file_cache.so
LoadModule cache_module /opt/jboss/httpd/lib/httpd/modules/mod_cache.so
LoadModule disk_cache_module /opt/jboss/httpd/lib/httpd/modules/mod_disk_cache.so
LoadModule mem_cache_module /opt/jboss/httpd/lib/httpd/modules/mod_mem_cache.so
LoadModule dbd_module /opt/jboss/httpd/lib/httpd/modules/mod_dbd.so
LoadModule dumpio_module /opt/jboss/httpd/lib/httpd/modules/mod_dumpio.so
LoadModule reqtimeout_module /opt/jboss/httpd/lib/httpd/modules/mod_reqtimeout.so
LoadModule ext_filter_module /opt/jboss/httpd/lib/httpd/modules/mod_ext_filter.so
LoadModule include_module /opt/jboss/httpd/lib/httpd/modules/mod_include.so
LoadModule filter_module /opt/jboss/httpd/lib/httpd/modules/mod_filter.so
LoadModule substitute_module /opt/jboss/httpd/lib/httpd/modules/mod_substitute.so
LoadModule deflate_module /opt/jboss/httpd/lib/httpd/modules/mod_deflate.so
LoadModule log_config_module /opt/jboss/httpd/lib/httpd/modules/mod_log_config.so
LoadModule log_forensic_module /opt/jboss/httpd/lib/httpd/modules/mod_log_forensic.so
LoadModule logio_module /opt/jboss/httpd/lib/httpd/modules/mod_logio.so
LoadModule env_module /opt/jboss/httpd/lib/httpd/modules/mod_env.so
LoadModule mime_magic_module /opt/jboss/httpd/lib/httpd/modules/mod_mime_magic.so
LoadModule cern_meta_module /opt/jboss/httpd/lib/httpd/modules/mod_cern_meta.so
LoadModule expires_module /opt/jboss/httpd/lib/httpd/modules/mod_expires.so
LoadModule headers_module /opt/jboss/httpd/lib/httpd/modules/mod_headers.so
LoadModule ident_module /opt/jboss/httpd/lib/httpd/modules/mod_ident.so
LoadModule usertrack_module /opt/jboss/httpd/lib/httpd/modules/mod_usertrack.so
LoadModule unique_id_module /opt/jboss/httpd/lib/httpd/modules/mod_unique_id.so
LoadModule setenvif_module /opt/jboss/httpd/lib/httpd/modules/mod_setenvif.so
LoadModule version_module /opt/jboss/httpd/lib/httpd/modules/mod_version.so
LoadModule proxy_module /opt/jboss/httpd/lib/httpd/modules/mod_proxy.so
LoadModule proxy_connect_module /opt/jboss/httpd/lib/httpd/modules/mod_proxy_connect.so
LoadModule proxy_ftp_module /opt/jboss/httpd/lib/httpd/modules/mod_proxy_ftp.so
LoadModule proxy_http_module /opt/jboss/httpd/lib/httpd/modules/mod_proxy_http.so
LoadModule proxy_scgi_module /opt/jboss/httpd/lib/httpd/modules/mod_proxy_scgi.so
LoadModule proxy_ajp_module /opt/jboss/httpd/lib/httpd/modules/mod_proxy_ajp.so
LoadModule proxy_cluster_module /opt/jboss/httpd/lib/httpd/modules/mod_proxy_cluster.so
LoadModule mime_module /opt/jboss/httpd/lib/httpd/modules/mod_mime.so
LoadModule dav_module /opt/jboss/httpd/lib/httpd/modules/mod_dav.so
LoadModule status_module /opt/jboss/httpd/lib/httpd/modules/mod_status.so
LoadModule autoindex_module /opt/jboss/httpd/lib/httpd/modules/mod_autoindex.so
LoadModule asis_module /opt/jboss/httpd/lib/httpd/modules/mod_asis.so
LoadModule info_module /opt/jboss/httpd/lib/httpd/modules/mod_info.so
LoadModule suexec_module /opt/jboss/httpd/lib/httpd/modules/mod_suexec.so
LoadModule cgi_module /opt/jboss/httpd/lib/httpd/modules/mod_cgi.so
LoadModule cgid_module /opt/jboss/httpd/lib/httpd/modules/mod_cgid.so
LoadModule jk_module /opt/jboss/httpd/lib/httpd/modules/mod_jk.so
LoadModule manager_module /opt/jboss/httpd/lib/httpd/modules/mod_manager.so
LoadModule slotmem_module /opt/jboss/httpd/lib/httpd/modules/mod_slotmem.so
LoadModule dav_fs_module /opt/jboss/httpd/lib/httpd/modules/mod_dav_fs.so
LoadModule vhost_alias_module /opt/jboss/httpd/lib/httpd/modules/mod_vhost_alias.so
LoadModule negotiation_module /opt/jboss/httpd/lib/httpd/modules/mod_negotiation.so
LoadModule dir_module /opt/jboss/httpd/lib/httpd/modules/mod_dir.so
LoadModule imagemap_module /opt/jboss/httpd/lib/httpd/modules/mod_imagemap.so
LoadModule actions_module /opt/jboss/httpd/lib/httpd/modules/mod_actions.so
LoadModule speling_module /opt/jboss/httpd/lib/httpd/modules/mod_speling.so
LoadModule userdir_module /opt/jboss/httpd/lib/httpd/modules/mod_userdir.so
LoadModule alias_module /opt/jboss/httpd/lib/httpd/modules/mod_alias.so
LoadModule rewrite_module /opt/jboss/httpd/lib/httpd/modules/mod_rewrite.so <IfModule !mpm_netware_module>
<IfModule !mpm_winnt_module>
User daemon
Group daemon </IfModule>
</IfModule> ServerAdmin ****
ServerName 10.6.144.156:8835 DocumentRoot "/opt/jboss/httpd/htdocs/htdocs" <Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory> <Directory "/opt/jboss/httpd/htdocs/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory> <IfModule dir_module>
DirectoryIndex index.html
</IfModule> <FilesMatch "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</FilesMatch> ErrorLog "logs/error_log"
LogLevel warn <IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common <IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
CustomLog "logs/access_log" common
</IfModule> <IfModule alias_module>
ScriptAlias /cgi-bin/ "/opt/jboss/httpd/htdocs/cgi-bin/" </IfModule> <IfModule cgid_module>
</IfModule> <Directory "/opt/jboss/httpd/htdocs/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory> DefaultType text/plain <IfModule mime_module>
TypesConfig conf/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
</IfModule> <IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule> <IfModule manager_module>
Listen 10.6.144.156:8836
ManagerBalancerName mycluster
<VirtualHost 10.6.144.156:8836>
<Location />
Order deny,allow
Allow from all
</Location> KeepAliveTimeout 300
MaxKeepAliveRequests 0
AdvertiseFrequency 5
EnableMCPMReceive #<Location /mod_cluster_manager>
<Location /cluster>
SetHandler mod_cluster-manager
Order deny,allow
Allow from all
</Location> </VirtualHost>
</IfModule>

先启动jboss master server / slave server,再启动httpd, /opt/jboss/httpd/sbin/httpd -k start,

完成后,http://10.6.144.156:8836/cluster

注意顺序,有时候看不到ajp://***信息,我本机试的时候出现这种情况发现是先启动的mod_cluster

现在就可以用http://10.6.144.156:8835/bill访问应用了

附:httpd命令

查看状态:ps -ef|grep httpd
启动: /opt/jboss/httpd/sbin/httpd -k start
停止:/opt/jboss/httpd/sbin/httpd -k stop
重启:cd /opt/jboss/httpd/sbin/
sudo ./apachectl -k graceful

参考:

1. jboss配置指南

2. jboss eap 6.3 域(Domain)模式配置

jboss使用(eap 6.0以后版本)的更多相关文章

  1. JBOSS EAP 6.0+ Standalone模式安装成Windows服务

    网上有一些文章介绍用JavaService.exe来实现,但是到EAP 6以上版本,我试过好象没成功,幸好JBoss官方已经推出了专门的工具. 一.先到官网下载http://www.jboss.org ...

  2. NHibernate 1.0 Released 版本发布了

    NHibernate is a port of Hibernate to the .NET platform. Hibernate is the leading open-source object- ...

  3. 记录一次MongoDB3.0.6版本wiredtiger与MMAPv1引擎的写入耗时对比

    一.MongoDB3.0.x的版本特性(相对于MongoDB2.6及以下): 增加了wiredtiger引擎: 开源的存储引擎: 支持多核CPU.充分利用内存/芯片级别缓存(注:10月14日刚刚发布的 ...

  4. MongoDBV3.0.7版本(shard+replica)集群的搭建及验证

    集群的模块介绍: 从MongoDB官方给的集群架构了解,整个集群主要有4个模块:Config Server.mongs. shard.replica set: Config Server:用来存放集群 ...

  5. 【大数据】Linux下Storm(0.9版本以上)的环境配置和小Demo

    一.引言: 在storm发布到0.9.x以后,配置storm将会变得简单很多,也就是只需要配置zookeeper和storm即可,而不再需要配置zeromq和jzmq,由于网上面的storm配置绝大部 ...

  6. 【原】webapp开发中兼容Android4.0以下版本的css hack

    话说现在的手机型号越来越多,主要还是android和ios这2个巨头称霸了江湖,而他们自带的浏览器内核是webkit,那对于做移动网页开发的同事来说,一般只要做好webkit内核浏览器的展现效果就行了 ...

  7. HBase1.0以上版本的API改变

    HBase1.0以上版本已经废弃了 HTableInterface,HTable,HBaseAdmin等API的使用,新增了一些API来实现之前的功能: Connectioninterface: Co ...

  8. 升级时出现:请先升级 UCenter 到 1.6.0 以上版本。

    有的站点UCenter升级完成后仍然提示请先升级 UCenter 到 1.6.0 以上版本的现象,下面分享下UCenter版本号不正确的原因和处理办法,可能有以下的几个文件和处理办法: 一.UCent ...

  9. Unity NGUI 3.0.4版本 制作网络版斗地主

    Unity NGUI 3.0.4版本 @by 灰太龙  开发环境 Win7旗舰版 Unity 4.2.1f4 本文就写个开门篇,告诉大家怎么用NGUI,第一步导入NGUI 3.0.4版本! 1.启动U ...

随机推荐

  1. 【转】Nginx系列(五)--nginx+tomcat实现负载均衡

    原博文出于:  http://blog.csdn.net/liutengteng130/article/details/47129909   感谢! Nginx占有内存少,并发能力强,事实上Nginx ...

  2. Argument 'xxx' is not a function, got undefined,初学Angular的第一个坑

    终于考完试了,在没更新的这一段时间里,一直都在忙于应付考试.不过在期间也是接触到不少好玩的东西,比如Html5的Canvas,我用lufylegend的Html5引擎做了个<看你有所色>的 ...

  3. Web Service学习之一:Web Service原理

    一.定义 Web Service 不是框架也不是技术 而是解决远程调用.跨平台调用.跨语言调用问题的一种规范. 二.应用1.同一个公司新.旧系统的整合:比如CRM系统与OA.客服系统相互调用2.不同公 ...

  4. AVCaptureSession 照相时获取 AVCaptureVideoPreviewLayer尺寸

    http://stackoverflow.com/questions/14153878/avcapturesession-preset-photo-and-avcapturevideopreviewl ...

  5. UVaLive 7360 Run Step (排列组合,枚举)

    题意:给定一个数 n ,表示一共有 n 步,然后你可以迈一步也可以迈两步,但是左腿和右腿的一步和两步数要一样,并且两步数不小于一步数,问你有多少种方式. 析:虽然是排列组合,但还是不会做.....水啊 ...

  6. Lucene:信息检索与全文检索

    目录 信息检索的概念 信息检索技术的分类 全文检索与数据库查询对比 全文检索工具一般由三部分构成 全文检索中建立索引和进行检索的流程 索引里面究竟存什么 如何创建索引 如何对索引进行检索 Lucene ...

  7. PostgreSQL的 initdb 源代码分析之三

    继续 其实接前面,整个while循环是这样的: ) { switch (c) { ...... } ...... } 这一句,c = getopt_long(argc, argv, "dD: ...

  8. 多线程/进度条应用(progressbar)

    使用Control Sets 下的 ProgressBar - Responsive Loop控件 ProcessBar 或者 CancelBar 都可以被设置为 invisible 代码如下(分享自 ...

  9. Flash Builder 4.6 界面显示一半中文一半英文?

    Flash Builder 4.6 (简称 Flex 4.6 或 FB 4.6)启动后界面有时候会显示一半中文,一半英文(这种奇葩的情况一般发生在 FB 4.6 刚安装后或操作系统安装一个类似 SP1 ...

  10. Node.js简单介绍

    Node.js是一个能够让javascript执行在server上的平台,既是语言又是平台. Node.js是一个实时web应用程序的平台. Node.js有强大的包管理器npm,故node相关软件安 ...