查看: 1522|回复: 0
打印 上一主题 下一主题

JBoss-eap-6.3.0 域(Domain)模式+mod_cluster-1.2.6 集群环境配置

[复制链接]
跳转到指定楼层
沙发
发表于 2015-3-31 11:22:05 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

一.环境准备.

   系统: 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/libJAVA_HOME/libJAVA_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

点击(此处)折叠或打开

  • # 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>
  • <IfModule manager_module>


这时候启动Apache 会有个报错

我们需要写一个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”  分发到组里面所有机器


如果包没问题,日志会提示,包已部署


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入中科因仑

本版积分规则

快速回复 返回顶部 返回列表