jboss-eap-6.3.0 域(Domain)模式+mod_cluster-1.2.6 集群环境配置
一.环境准备.
系统: centos 6.5_x64
jboss-node1.example.com: 192.168.0.140 (master)
jboss-node2.example.com: 192.168.0.141 (slave)
jboss-node3.example.com: 192.168.0.142 (slave)
注意:三台机器iptables 关闭selinux 关闭
所有软件包存放位置: /usr/local/src/
软件下载地址:
1. jboss-eap
jboss-eap-6.3.0.zip
#下载地址
http://www.jboss.org/downloads/ #需要输入redhat账户密码,没有的话可以注册个
2.jdk:
jdk-6u45-linux-x64.bin 我这里用的比较老,java环境,各位可以到官网下载rpm包安装即可
#下载地址
www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
3.mod-cluster
mod_cluster-1.2.6.Final-linux2-x64-ssl.tar.gz #这个主要做负载均衡器只部署在master上
#下载地址
http://mod-cluster.jboss.org/
本次试验,软件包下载地址 链接:http://pan.baidu.com/s/1gd8b0l1 密码:7enz
安装前导读:
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即会同步自动部署。
二.环境配置
(master) 节点配置
1. jboss-node1.example.com: 192.168.0.140 (master) 节点配置
[root@jboss-node1 src]# cd /usr/local/src/
[root@jboss-node1 src]# ./jdk-6u45-linux-x64.bin
[root@jboss-node1 src]# cp -rp jdk1.6.0_45/ /usr/
2.配置java 环境变量:
[root@jboss-node1 src]# vi /etc/profile
export JAVA_HOME=/usr/jdk1.6.0_45
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
[root@jboss-node1 src]# source /etc/profile
3.安装配置jboss(master)
[root@jboss-node1 src]# yum install unzip -y
[root@jboss-node1 src]# unzip jboss-eap-6.3.0.zip
[root@jboss-node1 src]# cp -rp jboss-eap-6.3 /usr/local/
[root@jboss-node1 src]# vi /usr/local/jboss-eap-6.3/domain/configuration/host.xml
将所有127.0.0.1的地址,换成master server对应的真实IP(否则,无法从远程通过浏览器,访问jboss 管理控制台)
在命令模式下输入下面命令,替换ip
:%s/127.0.0.1/192.168.0.140/g
保存退出
添加管理员账户
[root@jboss-node1 src]# cd /usr/local/jboss-eap-6.3/bin
[root@jboss-node1 bin]# ./add-user.sh #添加管理员账户,否则我们无法登陆控制台
admin redhat!@#123
修改cluster连接密码,这个密码跟我们后面添加的slave server用户密码必须一致,否则 会报错
[root@jboss-node1 ~]# vi /usr/local/jboss-eap-6.3/domain/configuration/domain.xml
修改为:
启动master ./domain.sh
[root@jboss-node1 src]# vi /root/start_master.sh
启动脚本:
#!/bin/bash
nohup /usr/local/jboss-eap-6.3/bin/domain.sh >/root/jboss.log 2>&1 &
[root@jboss-node1 src]# chmod +x /root/start_master.sh
[root@jboss-node1 src]# /root/start_master.sh
4.web 控制台访问地址
http://192.168.0.140:9990/console/ #输入添加的管理员账户秘密登陆即可
5.创建group、server
进入控制台后,可以看到jboss已经默认创建了一些group及server,我们需要创建自己的,这些都可以删掉
创建group时,profile建议选择full-ha (以后会讲如何做jboss集群配置,负载均衡、智能容错时,需要使用full-ha profile)
创建server时,有一个Port Offset选项
解释一下,默认情况下server的端口是8080,Port Offset指端口偏移量,如果按上图配置,Port Offset指定为5,则表示该server创建后,对应的端口为8080+5,即8085端口 (可以用http://192.168.0.140:8085/ 来访问)
默认有几个分组,我们可以在这里把分组停掉,然后在Server Configurations 里面删除即可
Slave 节点配置
1.两台slave java环境安装,和jboss环境安装和master一样,参照上边的安装
2.配置 jboss slave server
注意:将原来的host.xml改名备份,然后再将host-slave.xml复制一份,并改名为host.xml
[root@jboss-node2 configuration]# cd /usr/local/jboss-eap-6.3/domain/configuration/
[root@jboss-node2 configuration]# cp host.xml host.xml.bak
[root@jboss-node2 configuration]# cp host-slave.xml host.xml
修改 host.xml
修改1处
这里的9999端口,改成其它不使用的端口(比如:9099),否则slave server上的9999端口,与master server上的管理端口冲突,最后启动时,会报错
修改2处
指定master server的IP(本文中为192.168.0.140),这样slave在启动时,才知道去连哪一台master
修改3处
原来的127.0.0.1,改成slave server的真实IP或0.0.0.0,否则slave上的应用,只能在slave本机访问
修改4处
手动在slave上创建一个server,并加入到my-group-1(注:group的值,必须是在master server上创建过的,否则启动时,slave上的server无法正常加入到master相关的group中)
修改 5 处
slave57" xmlns="urn:jboss:domain:1.6">
最开头的host节点上,加一个name="xxx"的属性(本文中为slave57),这个name值最终会显示在master server的jboss 控制台中,建议起一个容易识别的名称
修改 6处
安全认证
4.1 回到master server上,添加一个名为slave57的管理员帐号,并记住最后生成的的字符串(xxx为密码经过base64处理后的内容)账户名 slave1 密码
redhat!@#123 还是用之前master的 添加用户的脚本,切记,必须得在master上添加这个用户,slave连接到master全凭借这个用户认证连接
添加到 slave host.xml 文件
解释:slave启动时,需要连接注册到master的jboss中,连接过程需要安全认证,这里的secret相当于认证的钥匙,而认证的用户名即为:正在连接的slave机器上jboss中host.xml中这个节点中的name值,所以 需要在master中创建一个名为“slave57”的管管理账户
启动slave
[root@jboss-node2 bin]# vi /root/start_node2.sh
启动脚本:
#!/bin/bash
nohup /usr/local/jboss-eap-6.3/bin/domain.sh >/root/jboss.log 2>&1 &
[root@jboss-node2 bin]# chmod +x /root/start_node2.sh
[root@jboss-node2 bin]# /root/start_node2.sh
依次添加,其他节点
两个节点已经全部添加
mod_cluster-1.2.6 负载均衡器配置
1.解压出软件
[root@jboss-node1 src]# tar -zxvf mod_cluster-1.2.6.Final-linux2-x64-ssl.tar.gz
[root@jboss-node1 src]# cp -rp opt/jboss/ /opt/ #配置文件默认写的就是/opt
[root@jboss-node1 src]# cd /opt/jboss/httpd/httpd/ conf
[root@jboss-node1 ~]# vi /opt/jboss/httpd/httpd/conf/httpd.conf
点击(此处)折叠或打开
- # MOD_CLUSTER_ADDS
- # Adjust to you hostname and subnet.
- <IfModule manager_module>
- Listen 192.168.0.140:6666
- ManagerBalancerName mycluster
- <VirtualHost 192.168.0.140: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.108:23333
- AdvertiseBindAddress 224.0.1.108:23333
- #AdvertiseGroup 和 AdvertiseBindAddress的配置尤为重要 #这里是我们的组播地址默认224.0.1.105:23364.需要改一下,如果我们一个内网环境,多个jboss集群,就会发送冲突,模块能扫描到其他项目的节点这里至关重要
- EnableMCPMReceive
- <Location /mod_cluster_manager>
- SetHandler mod_cluster-manager
- Order deny,allow
- #Deny from all
- Allow from all
- </Location>
- </VirtualHost>
我们需要写一个hosts 解析
[root@jboss-node1 ~]# vi /etc/hosts #添加本的解析
192.168.0.140 Jboss-node1.example.com
[root@jboss-node1 ~]# vi /opt/jboss/httpd/httpd/conf/httpd.conf
#ServerName 改成这样启动就不会报错了
ServerName Jboss-node1.example.com:80
2.修改jboss 配置让他连接我们的6666端口,由我们的模块代理这几台机器
3.master 修改连接并设置session黏贴
我们的session可以共享,这是集群工作的必须
vi /usr/local/jboss-eap-6.3/domain/configuration/domain.xml #修改前建议备份
改为:
4.修改master 的广播地址
我们配置master选择的是full-ha-sockets模式,我们需要修改这个段落,广播地址有两个,我们都改成不同的网段,231.7.7.7 改为231.7.7.8,224.0.1.105,改为224.0.1.108,端口改成23333默认值23364 我们必须得更改这个,不然影响其他集群
5.selave 修改连接,并设置session黏贴
vi /usr/local/jboss-eap-6.3/domain/configuration/domain.xml #修改前建议备份
改为:
6.修该slave 的广播地址
我们配置master选择的是full-ha-sockets模式,我们需要修改这个段落,,广播地址有两个,我们都改成不同的网段,231.7.7.7 改为231.7.7.8,224.0.1.105,改为224.0.1.108,端口改成23333默认值23364 我们必须得更改这个,不然影响其他集群
注意:修改之后,master 和,其他节点,都要重新启动
启动 mod_cluster 代理
[root@jboss-node1 ~]# /opt/jboss/httpd/sbin/httpd
访问web界面
http://192.168.0.140:6666/mod_cluster_manager
我们的模块由此配置,不会影响到内网其他集群,如果不这样配置,mod_cluster 默认广播到任何节点,只要安装有jboss 他都会扫描到,多集群部署就会给我们带来困扰
比如这样的报错,就是其他集群尝试连接这个模块,认证失败导致的报错
三.部署软件包测试集群。
在 jboss 控制台,点击 “Manage Deployments”
添加软件包
点击 “Assign” 分发到组里面所有机器
如果包没问题,日志会提示,包已部署
登陆测试
参考文档:
http://www.cnblogs.com/yjmyzz/p/jboss-eap-domain-configuration.html
软件包下载地址 链接:http://pan.baidu.com/s/1gd8b0l1 密码:7enz