本文简单介绍,使用mod_cluster进行apache httpd server和jboss eap 6.1集群配置。本配置在windows上测试通过,linux下应该是一样的。可能要稍作调整。后面会在linux上做测试。
1、首先下载apache httpd server
http://httpd.apache.org/download.cgi#apache22,下载2.2.25,应该最新的2.4.6版本也是可以的。只是官网没有给出windows的版本,我又懒得去编译。就使用2.2.25。
将apache安装到 C:asfApache2.2
2、下载mod_cluster
2-1、 下载地址:http://www.jboss.org/mod_cluster/downloads/1-2-0-Final 选择1.2对应平台的版本。这里选择binaries windows-x86。
其实,选择linux的二进制版本也是可以只需要获取四个.so文件即可。windows和linux中,这四个文件是一样的。
2-2、 解压后,里面就是一个apache httpd server。解压后里面会有一个httpd-2.2文件夹,进入,再进入modules文件夹,找到四个文件
mod_proxy_cluster.so
mod_manager.so
mod_slotmem.so
mod_advertise.so
2-3、 双击httpd-2.2/bin 下的installconf.bat,安装初始化配置。因为我们使用我们自己下载的apache httpd server,这一步就不需要了。
2-4、 将上面四个文件拷到,第一步中,我们安装的apache的目录下的modules,C:asfApache2.2modules
2-5、 下面配置C:asfApache2.2confhttpd.conf这个文件,为了简化配置,和httpd.conf相同目录下,我们新增一个配置文件jboss_mod.conf,然后再里面加入下面的内容
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule slotmem_module modules/mod_slotmem.so
LoadModule manager_module modules/mod_manager.so
LoadModule proxy_cluster_module modules/mod_proxy_cluster.so
LoadModule advertise_module modules/mod_advertise.so
<IfModule manager_module>
Listen 10.10.16.119:6660
<VirtualHost 10.10.16.119:6660>
<Location />
Order deny,allow
Deny from all
Allow from all
</Location>
KeepAliveTimeout 60
MaxKeepAliveRequests 0
EnableMCPMReceive On
AdvertiseFrequency 5
ManagerBalancerName modcluster
ServerAdvertise On
AllowDisplay On
<Location /mod_cluster_manager>
SetHandler mod_cluster-manager
Order deny,allow
Deny from all
Allow from all
</Location>
</VirtualHost>
</IfModule>
将其中的IP地址换成你自己的IP地址。
2-6、 在C:asfApache2.2confhttpd.conf中引入我们新增的jboss_mod.conf文件,在httpd.conf最后面增加下面一行
Include conf/jboss_mod.conf
3、这样mod_cluster和apache httpd server的配置就好了。
重新启动apache,访问http://10.10.16.119:6660/mod_cluster_manager,会看到一个页面,类似下面:说明mod_cluster和apache已经整合成功了。否则请重复上面的步骤。直到成功。
4、下面配置jboss eap 6.1,,jboss as 7.2+,应该也是可以的。
4-1、下载jboss eap 6.1,地址:http://www.jboss.org/jbossas/downloads/
下载后解压,我们将其放到e:jboss-eap-6.1。因为集群需要两台server,我们假设两台server的IP分别是:10.10.16.119(master),10.10.16.212(slave)。
名字只是以示区分,并不是主从,他们两个是平等的。
4-2、这里使用到了jboss的域模式,想了解更多,自己去google了。这里master作为域控制器,下面开始:
进入E:jboss-eap-6.1domainconfiguration,打开domain.xml,到最后,去掉server-groups其他所有的组,只留下main-server-group,jvm heap大小,根据你的server 也要做调整,否则可能内存溢出,如下所示:
<server-groups>
<server-group name="main-server-group" profile="full-ha">
<jvm name="default">
<heap size="512m" max-size="512m"/>
<permgen max-size="128m"/>
</jvm>
<socket-binding-group ref="full-ha-sockets"/>
</server-group>
</server-groups>
我们使用full-ha profile,记得socket-binding-group也要做更改。
4-3、jboss域模式,需要增加账户,在E:jboss-eap-6.1in下,有个文件add-user.bat,双击,
a、添加ManagementRealm账户administrator,密码!QAZ1234
这个账户是用来登录jboss 控制台,管理jboss的。
b、增加 ApplicationRealm账户,administrator,密码!QAZ234
这个账户是应用级别的账户,后面jboss jms hornetq集群会使用到。
c、增加ManagementRealm账户slave,密码!QAZ1234
所有域中的主机,都要在域控制器中,以主机名为账户名,在master中注册一个账户,这个账户是用来和域控制器进行通讯使用的。注册的最后,会提示你是否需要将该账户用于主机间通讯,选择yes,会生成一个,base64加密的密码,这个要记下啦,后面会用到。
4-4、下面配置jms,进入E:jboss-eap-6.1domainconfiguration,打开domain.xml,找到full-ha profile,然后找到messaging subsystem,更改
<cluster-user>administrator</cluster-user>
<cluster-password>${jboss.messaging.cluster.password:IVFBWjEyMzQ=}</cluster-password>
这里的账户和密码就是上一步骤b,增加的账户。密码要base64加密的。
4-5、配置master的host.xml,E:jboss-eap-6.1domainconfigurationhost.xml,
<interfaces>
<interface name="management">
<inet-address value="${jboss.bind.address.management:10.10.16.119}"/>
</interface>
<interface name="public">
<inet-address value="${jboss.bind.address:10.10.16.119}"/>
</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.10.16.119}"/>
</interface>
</interfaces>
后面的IP改成master的IP。
将<host name="master" xmlns="urn:jboss:domain:1.4">,添加name="master"
为了简化
<servers> 下只保留一个<server>
这样,mster基本上就配置完毕了。
5、下面配置slave,我们假设,路径和master一样,E:jboss-eap-6.1你也可以调整。由于slave不作为域控制器,只是一个主机,
所以删除E:jboss-eap-6.1domainconfiguration下的domain.xml。
5-1、首先增加账户,只需要增加master配置中的第一个账户就可以了,管理员账户。
5-2、然后打开host.xml
<host name="slave" xmlns="urn:jboss:domain:1.4">,主机名改为slave
在<security-realm name="ManagementRealm">下增加子元素
<server-identities>
<secret value="IVFBWjEyMzQ="/>
</server-identities>
其中的secret的value值,就是在master账户配置中c步骤配置的账户,密码是bas64加密的。
5-3、配置主机控制器,其中的host,就是master的ip
<domain-controller>
<!-- Alternative remote domain controller configuration with a host and port -->
<remote host="${10.10.16.119}" port="${jboss.domain.master.port:9999}" security-realm="ManagementRealm"/>
</domain-controller>
5-4、
为了简化
<servers> 下只保留一个<server>
<server name="server-one" group="main-server-group">
</server>
5-5、管理端口配置,将后面的IP地址改成slave的IP地址
<interfaces>
<interface name="management">
<inet-address value="${jboss.bind.address.management:10.10.16.212}"/>
</interface>
<interface name="public">
<inet-address value="${jboss.bind.address:10.10.16.212}"/>
</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.10.16.212}"/>
</interface>
</interfaces>
这样,slave也就配置好了。
6、下面重启apache,然后依次启动master,slave。启动jboss eap的脚本在E:jboss-eap-6.1in下的domian.bat。
如果启动都没有报错。
访问 http://10.10.16.119:6660/mod_cluster_manager,你讲看到下面有两个Node,节点。你访问apache,mod_cluster就可以将请求转发到后面的jboss eap。
7、你可以增加一个空的war项目。我的名字是skmbw.war,然后,登录http://10.10.16.119:9990/,登录jboss控制台,使用master中增加账号,a步骤的账号密码,
将项目skmbw.war,传上去,然后部署.
右上角,Runtime,然后,左上角,Manage Deployments,在Content Repository tab菜单中,点击add 按钮,上传。
就可以将skmbw,同时部署到两台server上。
通过 http://10.10.16.119/skmbw就可以访问到了。说明apache成功转发了请求。
如果,想让apache处理静态资源,动态资源交给jboss处理,需要apache的httpd.conf做进一步配置,留在下一篇文章中。