一.环境准备.
系统: 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=$PATHJAVA_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
<cluster-password>${jboss.messaging.cluster.password:CHANGE ME!!}</cluster-password>
修改为:
<cluster-password>${jboss.messaging.cluster.password:redhat!@#123}</cluster-password>
启动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处
<management-interfaces>
<native-interface security-realm="ManagementRealm">
<socket interface="management" port="${jboss.management.native.port:9999}"/> #port端口改为9099
</native-interface>
</management-interfaces>
这里的9999端口,改成其它不使用的端口(比如:9099),否则slave server上的9999端口,与master server上的管理端口冲突,最后启动时,会报错
修改2处
<domain-controller>
<remote host="${jboss.domain.master.address}" port="${jboss.domain.master.port:9999}" security-realm="ManagementRealm"/>
改为
<domain-controller>
<remote host="${jboss.domain.master.address:192.168.0.140}" port="${jboss.domain.master.port:9999}" security-realm="ManagementRealm"/>
</domain-controller>
指定master server的IP(本文中为192.168.0.140),这样slave在启动时,才知道去连哪一台master
修改3处
<interfaces>
<interface name="management">
<inet-address value="${jboss.bind.address.management:192.168.0.141}"/>
</interface>
<interface name="public">
<inet-address value="${jboss.bind.address:192.168.0.141}"/>
</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:192.168.0.141}"/>
</interface>
</interfaces>
原来的127.0.0.1,改成slave server的真实IP或0.0.0.0,否则slave上的应用,只能在slave本机访问
修改4处
<servers>
<server name="slave-server-8084" group="my-group-1">
<socket-bindings port-offset="4"/>
</servers>
手动在slave上创建一个server,并加入到my-group-1(注:group的值,必须是在master server上创建过的,否则启动时,slave上的server无法正常加入到master相关的group中)
修改 5 处
<host name="slave57" xmlns="urn:jboss:domain:1.6">
最开头的host节点上,加一个name="xxx"的属性(本文中为slave57),这个name值最终会显示在master server的jboss 控制台中,建议起一个容易识别的名称
修改 6处
安全认证
4.1 回到master server上,添加一个名为slave57的管理员帐号,并记住最后生成的<secret value="xxxx" />的字符串(xxx为密码经过base64处理后的内容)账户名 slave1 密码
redhat!@#123 还是用之前master的 添加用户的脚本,切记,必须得在master上添加这个用户,slave连接到master全凭借这个用户认证连接
添加到 slave host.xml 文件
<security-realm name="ManagementRealm">
<server-identities>
<!-- Replace this with either a base64 password of your own, or use a vault with a vault expression -->
<secret value="cmVkaGF0IUAjMTIz" /> #生成的密码字符串替换这个即可
</server-identities>
解释:slave启动时,需要连接注册到master的jboss中,连接过程需要安全认证,这里的secret相当于认证的钥匙,而认证的用户名即为:正在连接的slave机器上jboss中host.xml中<host name='xxx'>这个节点中的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
我们需要写一个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 #修改前建议备份
<mod-cluster-config advertise-socket="modcluster" connector="ajp">
改为:
<mod-cluster-config advertise-socket="modcluster" proxy-list="127.0.0.1:6666" balancer="kylinBalancer" sticky-session="true" advertise-security-key="123456789" connector="ajp">
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 #修改前建议备份
<mod-cluster-config advertise-socket="modcluster" connector="ajp">
改为:
<mod-cluster-config advertise-socket="modcluster" proxy-list="192.168.0.140:6666" balancer="kylinBalancer" advertise-security-key="123456789" instance-id="${jboss.node.name}" sticky-session="true" connector="ajp">
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” 分发到组里面所有机器
如果包没问题,日志会提示,包已部署
欢迎光临 中科因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) | Powered by Discuz! X3.4 |