jboss eap 6.3 集群(cluster)配置

上一篇继续,Domain模式解决了统一管理多台jboss的问题,今天我们来学习如何利用mod_cluster来实现负载均衡、容错。

mod_cluster是jboss的一个开源集群模块(基于apache 2.2.x),官网地址为http://mod-cluster.jboss.org/ ,下面是使用步骤:

 

一、从官网下载binary文件

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)

 

二、解压安装

将下载下来的文件解压到jboss master server机器上的某个目录(假定master server的IP为172.21.129.181),比如C:\Apache2.2\ ,mod_cluster其实就是一个包含集群模块的apache server,如果你的机器上之前有安装过apache server,且自动安装成了windows服务,强烈建议先卸载,否则启动mod_cluster对应的apache时,有可能启动的是之前的版本。

注:如果是linux环境安装,强烈建议将压缩包中的httpd目录,解压到/opt/jboss/目录下,因为linux版本的很多脚本和配置里,都是写死这个目录,如果修改了目录,apachectl、http.conf这些文件里的路径全都要改,十分麻烦

2.1 先执行C:\Apache2.2\bin\installconf.bat 生成默认配置 (注:linux环境下安装时,无需执行该步骤,直接进入2.2改http.conf文件即可)

2.2 修改C:\Apache2.2\conf\httpd.conf

a)

#Listen 12.34.56.78:80

Listen 80

40行,把原来的端口8000,改成80,这样方便直接用 http://172.21.129.181/xxx 来访问应用

b)

164行改成

ServerName 172.21.129.181:80

c)

最后的mod_cluster部分,参考下面修改

# MOD_CLUSTER_ADDS
# Adjust to you hostname and subnet.
<IfModule manager_module>
  Listen 172.21.129.181:6666
  ManagerBalancerName mycluster
  <VirtualHost 172.21.129.181:6666>
    <Location />
     Order deny,allow
     #Deny from all
     Allow from all
    </Location>

    KeepAliveTimeout 300
    MaxKeepAliveRequests 0
    #ServerAdvertise on http://127.0.0.1:6666
    AdvertiseFrequency 5
    #AdvertiseSecurityKey secret
    #AdvertiseGroup 224.0.1.105:23364
    EnableMCPMReceive

    <Location /mod_cluster_manager>
       SetHandler mod_cluster-manager
       Order deny,allow
       #Deny from all
       Allow from all
    </Location>

  </VirtualHost>
</IfModule>

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

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

 1 ServerRoot "C:/Apache2.2"
 2 Listen 80
 3 LoadModule actions_module modules/mod_actions.so
 4 LoadModule alias_module modules/mod_alias.so
 5 LoadModule auth_basic_module modules/mod_auth_basic.so
 6 LoadModule authz_host_module modules/mod_authz_host.so
 7 LoadModule autoindex_module modules/mod_autoindex.so
 8 LoadModule dir_module modules/mod_dir.so
 9 LoadModule log_config_module modules/mod_log_config.so
10 LoadModule mime_module modules/mod_mime.so
11
12 ServerAdmin jimmy@localhost.localdomain
13 ServerName 172.21.129.181:80
14 DocumentRoot "C:/Apache2.2/htdocs"
15
16 <Directory />
17     Options FollowSymLinks
18     AllowOverride None
19     Order deny,allow
20     Allow from all
21 </Directory>
22
23 <Directory "C:/Apache2.2/htdocs">
24     Options Indexes FollowSymLinks
25     AllowOverride None
26     Order allow,deny
27     Allow from all
28 </Directory>
29
30 <IfModule dir_module>
31     DirectoryIndex index.html
32 </IfModule>
33
34 <FilesMatch "^\.ht">
35     Order allow,deny
36     Deny from all
37     Satisfy All
38 </FilesMatch>
39
40 ErrorLog "logs/error_log"
41 LogLevel warn
42 <IfModule log_config_module>
43     LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
44     LogFormat "%h %l %u %t \"%r\" %>s %b" common
45
46     <IfModule logio_module>
47       LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
48     </IfModule>
49     CustomLog "logs/access_log" common
50 </IfModule>
51
52 <IfModule alias_module>
53     ScriptAlias /cgi-bin/ "C:/Apache2.2/cgi-bin/"
54 </IfModule>
55
56 <Directory "C:/Apache2.2/cgi-bin">
57     AllowOverride None
58     Options None
59     Order allow,deny
60     Allow from all
61 </Directory>
62
63 DefaultType text/plain
64
65 <IfModule mime_module>
66     TypesConfig conf/mime.types
67     AddType application/x-compress .Z
68     AddType application/x-gzip .gz .tgz
69 </IfModule>
70
71 LoadModule proxy_module modules/mod_proxy.so
72 LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
73 LoadModule proxy_http_module modules/mod_proxy_http.so
74 LoadModule proxy_cluster_module modules/mod_proxy_cluster.so
75 LoadModule manager_module modules/mod_manager.so
76 LoadModule slotmem_module modules/mod_slotmem.so
77 LoadModule advertise_module modules/mod_advertise.so
78
79 # MOD_CLUSTER_ADDS
80 <IfModule manager_module>
81   Listen 172.21.129.181:6666
82   ManagerBalancerName mycluster
83   <VirtualHost 172.21.129.181:6666>
84     <Location />
85      Order deny,allow
86      Allow from all
87     </Location>
88     KeepAliveTimeout 300
89     MaxKeepAliveRequests 0
90     AdvertiseFrequency 5
91     EnableMCPMReceive
92     <Location /mod_cluster_manager>
93        SetHandler mod_cluster-manager
94        Order deny,allow
95        Allow from all
96     </Location>
97   </VirtualHost>
98 </IfModule>

View Code

2.3 将httpd安装成windows服务

C:\Apache2.2\bin\httpd -k install

再启动apache

C:\Apache2.2\bin\httpd -k start

顺利的话,浏览http://172.21.129.181:6666/mod_cluster_manager 应该能看到类似以下界面:(注:不要用google chrome浏览器,chrome打不开这个地址,不知道是啥原因,换成IE或Firefox就可以了)

这是很关键的一个界面,用来管理/监控所有节点,如果没成功,请仔细检查前面的步骤是否有误。

 

三、以domain模式启动所有jboss master/slave server

参考上一篇的做法,启动jboss master server / slave server,完成后,刷新 http://172.21.129.181:6666/mod_cluster_manager,会看到多出了好多节点

如果没有新的节点显示在该界面,检查jboss master server中创建的group,对应的profile是否为full-ha或ha

点击相关的链接,还能看到更详细的信息

下面是点击 show INFO output后的内容:

Node: [1],Name: d2c49277-af22-32b1-95be-b70e3ff20237,Balancer: mycluster,LBGroup: ,Host: 172.21.129.128,Port: 8010,Type: ajp,Flushpackets: Off,Flushwait: 10,Ping: 10,Smax: 65,Ttl: 60,Elected: 0,Read: 0,Transfered: 0,Connected: 0,Load: 100
Node: [2],Name: 708b3ee3-fd4d-39eb-b24c-3384bd11958c,Balancer: mycluster,LBGroup: ,Host: 172.21.129.128,Port: 8009,Type: ajp,Flushpackets: Off,Flushwait: 10,Ping: 10,Smax: 65,Ttl: 60,Elected: 0,Read: 0,Transfered: 0,Connected: 0,Load: 100
Node: [3],Name: c4051fb6-9cc9-30aa-967b-6ba1294026b8,Balancer: mycluster,LBGroup: ,Host: 172.21.129.181,Port: 8011,Type: ajp,Flushpackets: Off,Flushwait: 10,Ping: 10,Smax: 65,Ttl: 60,Elected: 0,Read: 0,Transfered: 0,Connected: 0,Load: 100
Node: [4],Name: 17181717-8b5c-3289-b6ea-fedcee2a27cb,Balancer: mycluster,LBGroup: ,Host: 172.21.129.181,Port: 8012,Type: ajp,Flushpackets: Off,Flushwait: 10,Ping: 10,Smax: 65,Ttl: 60,Elected: 3,Read: 3355,Transfered: 0,Connected: 0,Load: 100
Node: [5],Name: 2465cf8d-9cb0-3248-b335-09c02f13b6fe,Balancer: mycluster,LBGroup: ,Host: 172.21.129.181,Port: 8009,Type: ajp,Flushpackets: Off,Flushwait: 10,Ping: 10,Smax: 65,Ttl: 60,Elected: 0,Read: 0,Transfered: 0,Connected: 0,Load: -1
Node: [6],Name: 68a1e90f-6645-38e0-8157-219ab2004148,Balancer: mycluster,LBGroup: ,Host: 172.21.129.181,Port: 8010,Type: ajp,Flushpackets: Off,Flushwait: 10,Ping: 10,Smax: 65,Ttl: 60,Elected: 0,Read: 0,Transfered: 0,Connected: 0,Load: -1
Node: [7],Name: b403bcec-5eb5-37a2-a956-51d273b87548,Balancer: mycluster,LBGroup: ,Host: 172.21.129.57,Port: 8011,Type: ajp,Flushpackets: Off,Flushwait: 10,Ping: 10,Smax: 65,Ttl: 60,Elected: 0,Read: 0,Transfered: 0,Connected: 0,Load: 100
Node: [8],Name: 6e5ac603-5f19-3c90-8f97-d0bf01124c94,Balancer: mycluster,LBGroup: ,Host: 172.21.129.57,Port: 8012,Type: ajp,Flushpackets: Off,Flushwait: 10,Ping: 10,Smax: 65,Ttl: 60,Elected: 0,Read: 0,Transfered: 0,Connected: 0,Load: 100
Vhost: [2:1:1], Alias: example.com
Vhost: [2:1:2], Alias: localhost
Vhost: [2:1:3], Alias: default-host
Vhost: [4:1:4], Alias: default-host
Vhost: [4:1:5], Alias: localhost
Vhost: [4:1:6], Alias: example.com
Vhost: [1:1:7], Alias: example.com
Vhost: [1:1:8], Alias: localhost
Vhost: [1:1:9], Alias: default-host
Vhost: [3:1:10], Alias: default-host
Vhost: [3:1:11], Alias: localhost
Vhost: [3:1:12], Alias: example.com
Vhost: [6:1:13], Alias: localhost
Vhost: [6:1:14], Alias: default-host
Vhost: [7:1:15], Alias: example.com
Vhost: [8:1:16], Alias: example.com
Vhost: [8:1:17], Alias: localhost
Vhost: [8:1:18], Alias: default-host
Vhost: [7:1:19], Alias: localhost
Vhost: [7:1:20], Alias: default-host
Context: [2:1:1], Context: /SSO, Status: ENABLED
Context: [4:1:2], Context: /SSO, Status: ENABLED
Context: [1:1:3], Context: /SSO, Status: ENABLED
Context: [3:1:4], Context: /SSO, Status: DISABLED
Context: [7:1:5], Context: /SSO, Status: ENABLED
Context: [8:1:6], Context: /SSO, Status: ENABLED

 注意一下:虽然我们有8台jboss server,但是mod_cluster貌似最多只能支持6个node的负载均衡,有2个node的转发因子是-1,即未生效(但大多数情况下,已经够用了)。mod_cluster还有其它一些限制,详情可参考 http://docs.jboss.org/mod_cluster/1.2.0/html_single/#d0e85

 

四、负载均衡、容错验证

在上一篇里,已经在my-group-1、my-group-2上部署了一个名为SSO的应用,现在可以直接用 http://172.21.129.181/SSO/ 来访问了,apache会智能转发到6个节点中的某一个,如果访问正常,说明负载均衡已经生效。

继续把其它server停掉几台,再继续访问http://172.21.129.181/SSO/ ,如果仍然正常,说明某几个node损坏,并不影响正常使用,即容错成功。

所有server全shutdown后,http://172.21.129.181/SSO/ 将无法访问。

最后附一张:架构图

 

参考文章:

[1] mod_cluster Documentation

[2] JBoss AS7 cluster with mod_cluster setup howto

[3] 使用mod_cluster进行apache httpd server和jboss eap 6.1集群配置

时间: 2025-01-01 12:32:05

jboss eap 6.3 集群(cluster)配置的相关文章

jboss eap 6.3 集群(cluster)-Session 复制(Replication)

本文算是前一篇的后续,java web application中,难免会用到session,集群环境中apache会将http请求智能转发到其中某台jboss server.假设有二个jboss server:Server A,Server B,Session值在Server A上.用户在访问某一个依赖session的页面时,如果第一次访问到Server A,能正常取到Session值,刷新一下,如果这时转发到Server B,Session值取不到,问题就来了. 解决的办法简单到让人不敢相信,

Jboss EAP 6.1集群环境下Ejb3.1 timer配置数据同步问题-----急急急!!!

问题描述 Hi,请问大神,我们公司有个web项目是基于JbossEAP6.1+EJB3.1+JSF2架构开发的,并部署在Jboss的集群环境下(ServerA,ServerBandServerC).项目中用EJB3.1TimerServer创建了一些scheduletasks,Timer的配置数据文件独立的存放于另一台中央文件服务器中.用户能访问一个配置task的页面,来创建新的task或更改,删除已有的tasks.但我们发现这样做在集群环境下出现问题.详情如下:当服务器被启动时,每台服务器会去

JBOSS EAP实战(2)-集群、NGINX集成、队列与安全

JBOSS HTTP的Thread Group概念 JBOSS是一个企业级的J2EE APP Container,因此它和任何一种成熟的企业级中间件一样具有Thread Group的概念.所谓Thread Group就是一个HTTP队列机制,利用Thread Group在JBOSS内可以设置如"阻断","升级","降级"等机制.来看一个这样的实际应用场景:当你的JBOSS连着一堆核心应用时,此时突然你的HTTP的并发请求在某一个点激增,如果把这些

Windows Server 2003 下配置 MySQL 集群(Cluster)教程

  这篇文章主要介绍了Windows Server 2003 下配置 MySQL 集群(Cluster)教程,本文先是讲解了原理知识,然后给出详细配置步骤和操作方法,需要的朋友可以参考下 MySQL 群集是 MySQL 适合于分布式计算环境的高可用.高冗余版本.它采用了 NDB Cluster 存储引擎,允许在 1 个群集中运行多个 MySQL 服务器.在 MySQL 5.0 及以上的二进制版本中,以及与最新的 Linux 版本兼容的 RPM 包中提供了该存储引擎. MySQL 群集是一种技术,

深入分析redis cluster 集群安装配置详解

Redis 集群是一个提供在多个Redis间节点间共享数据的程序集.redis3.0以前,只支持主从同步的,如果主的挂了,写入就成问题了.3.0出来后就可以很好帮我们解决这个问题. 目前redis 3.0还不稳定,如果要用在生产环境中,要慎重. 一,redis服务器说明 192.168.10.219 6379  192.168.10.219 6380  192.168.10.219 6381    192.168.10.220 6382  192.168.10.220 6383  192.168

[喵咪MQ(3)]RabbitMQ集群安装配置

[喵咪MQ(3)]RabbitMQ集群安装配置 w-blog博客 在各项生产环境使用中,容灾总是一个很重要的话题,如果单点故障会导致整个系统奔溃或者是丢失数据是不是好气好气的,领导会追着你问这是怎么了?你只能说是我们没有经验什么什么组件故障了,这个是低级玩法,高级玩法是配置好集群容灾,告诉老板死一两台机器宕机了没有事没有影响,所以我们今天就来讲讲RabbitMQ的集群模式... 附上: 喵了个咪的博客:w-blog.cn RabbitMQ官网 :http://www.rabbitmq.com/

【Big Data】HADOOP集群的配置(二)

Hadoop集群的配置(二) 2.8 节点之间的免密码通信 1.什么是SSH SSH是Secure Shell的缩写,由IETF的网络工作小组(Network Working Group)所制定:SSH为建立在应用层和传输层基础上的安全协议.SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议.利用SSH协议可以有效防止远程管理过程中的信息泄露问题. 从客户端来看,SSH提供两种级别的安全验证. 第一种级别  基于口令的安全验证 只要知道自己的帐号和口令,就可以登录到远程主机.所有

Apache+tomcat负载均衡以及集群环境配置安装包+详细教程

问题描述 一:软件环境(所需全部软件已经一起打包,安装使用即可)1.Apache2.0.65(一个)2.tomcat6.0.41(二个或者两个以上)3.mod_jk.so(Apache与Tomcat的连接器,并藉此附带提供集群和负载均衡的功能)二:负载均衡配置(1)Apache配置1.把Apache安装在D:/ApacheGroup/Apache2 解压两分Tomcat,分别在D:/ApacheGroup/apache-tomcat-6.0.41_1,D:/ApacheGroup/apache-

ElasticSearch-2.0.0集群安装配置与API使用实践

ElasticSearch是基于全文搜索引擎库Lucene构建的分布式搜索引擎,我们可以直接使用ElasticSearch实现分布式搜索系统的搭建与使用,都知道,Lucene只是一个搜索框架,它提供了搜索引擎操作的基本API,如果要实现一个能够使用的搜索引擎系统,还需要自己基于Lucene的API去实现,工作量很大,而且还需要很好地掌握Lucene的底层实现原理. ElasticSearch是一个完整的分布式搜索引擎系统,它的一些基本特性包括如下: 全文检索 提供插件机制,可以共享重用插件的功能