搭建基于standalone模式的JBoss EAP集群

一、概述

对于JBoss EAP的初学者来说,经常分不清集群(clustering)与域(domain)的概念,认为二者相似或者一个是另一个的子集。实际上二者虽然都是由多个服务器节点组成,都其实有着很大的区别。简而言之,集群的作用是将内部多个服务器整体上当作一个对外开放,而域则是为了在中心节点上管理作用相同的多个节点。

互联网上的很多资料,都是基于domain模式搭建的JBoss EAP集群。这可能加深了一部分人的误区,认为JBoss EAP集群必须基于domain模式,但实际上基于standalone模式也一样可以搭建集群,差别在于:在每个节点都需进行应用系统的部署,这在节点个数较多或应用需频繁更新时显得尤为麻烦。

二、准备工作

以下步骤都比较简单,详细过程省略:

  1. 两台虚拟机,均为CentOS 6.4 64bit,因为是克隆而来,机器名都是centos;
  2. 修改虚拟机的IP,分别为192.168.64.147和192.168.64.148。
  3. 安装反向代理服务器,这里选择的是nginx,版本7,为简单起见只在147上安装;
  4. 安装JDK 8(及以上版本),两台服务器均需安装;
  5. 安装JBoss EAP,7.0或7.1版均可,两台服务器均需安装,假设安装目录为/root/EAP-7.1.0;
  6. 部署应用程序,这里选择以前用到的cluster-demo.war作为测试应用,拷贝到/root/EAP7/standalone/deployment目录。

三、配置

3.1 设置环境变量

在两台服务器,修改/etc/profile,在最后增加以下设置:

export JAVA_HOME=/usr/lib/jdk1.8.0_91
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export JBOSS_HOME=/root/EAP-7.1.0

保存后执行source /etc/profile使其立即生效。

3.2 配置nginx

在147上,修改/etc/nginx/nginx.conf,主要是upstream块和server块,如:

user  nobody;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
#pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    gzip  on;

    upstream test {
        server 192.168.64.147:8080;
        server 192.168.64.148:8080;
    }

    server {
        listen 8088;
        server_name localhost;
        location / {
            root html;
            index index.html index.htm;
            proxy_pass http://test;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            client_max_body_size 100m;
        }

        location ~ ^/(WEB-INF)/ {
            deny all;
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root html;
        }
    }

    #include /etc/nginx/conf.d/*.conf;
}

之后,nginx将在8088端口监听,并将外部请求转发到http://192.168.64.147:8080和http://192.168.64.147:8080,即将来的两个Jboss Server实例。

3.3 配置JBoss EAP

standalone模式下的集群,默认使用的配置文件standalone.xml已经不支持,需改用standalone-ha或standalone-full-ha.xml,这里选择的是standalone-full-ha.xml。在两台服务器均修改该文件,将其中interfaces部分中的127.0.0.1改为服务器的实际IP,比如147上为:

...
    <interfaces>
        <interface name="management">
            <inet-address value="${jboss.bind.address.management:192.168.64.147}"/>
        </interface>
        <interface name="public">
            <inet-address value="${jboss.bind.address:192.168.64.147}"/>
        </interface>
        <interface name="private">
            <inet-address value="${jboss.bind.address.private:192.168.64.147}"/>
        </interface>
        <interface name="unsecure">
            <inet-address value="${jboss.bind.address.unsecure:192.168.64.147}"/>
        </interface>
    </interfaces>
...

3.4 修改测试应用的index.jsp

正式环境中不需要(也不建议)本步骤,但由于测试时需验证集群具有负载均衡和session复制的功能,而两台虚拟机为克隆而来具有相同的hostname,因此增加了本步骤。

可直接打开cluster-demo.war,修改根目录下的index.jsp,将title或body中的JBoss EAP分别改为JbossEap1、JBossEap2以示区分。

四、测试过程

4.1 在147上启动nginx服务

[root@centos bin]# service nginx start

4.2 在两台服务器启动Jboss

注意不能按默认的standalone.xml启动,必须指定配置文件:

[root@centos bin]# ./standalone.sh -c standalone-full-ha.xml

4.3 用浏览器进行测试

打开浏览器,访问http://192.168.64.147:8088/cluster-demo,注意IP和端口与nginx所在服务器及监听端口一致。

页面显示,147和148已经组建为集群。

多刷新几次,会发现首行会不停切换为JBossEap1和JBossEap2,而sessionID及创建时间保持不变,表明负载均衡和session共享已经实现,这与基于domain模式的集群是等效的。

停止其中一个JBoss EAP实例,再刷新页面,会发现页面固定指向另一个JBoss EAP实例;再恢复那个JBoss EAP实例,页面刷新也恢复到刚才的来回切换方式;若再停掉另一个JBoss EAP实例,页面指向仍运行的实例。但无论如何,sessionID及创建时间都是固定不变的。这表明集群的故障转移也已实现,与基于domain模式的集群等效。

五、总结

以上测试说明,基于standalone模式的集群与基于domain模式的集群,在故障转移、负载均衡和session共享这三个最基本方面是等效的。

PS:反向代理服务器可在多个服务上部署,Linux平台上还可利用keepalived或heartbeat服务将nginx组成主备式的集群,以进一步提升整体的高可用性。

转载于:https://www.cnblogs.com/wggj/p/9522934.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值