如何使用 JBoss 5 实现高可用性服务?

如何使用 JBoss 5 实现高可用性服务?

我尝试使用 JBoss 和 Apache 实现高可用性服务。

该架构如下:

  Apache
|         |
|         |
JBoss1 JBoss2 

Apache 和 JBoss 之间实现了一个平衡器,它工作正常。有时请求由 JBoss1 接收,有时由 JBoss2 接收,但是如果某个 JBoss 发生故障,平衡器仍会向其发送请求,因此应用程序有时可以工作,有时则不能。

如何实现一项服务,当某个 JBoss 发生故障时,它能够自动将流量重定向到另一个节点?

我尝试使用 heartbeat,但无法解决它。

答案1

它是mod_proxy+mod_proxy_balancer或mod_jk的内置功能。

它们依赖于 AJP 协议:https://community.jboss.org/wiki/UsingModproxyWithJBoss

只需按照本教程操作即可。

下面是 Apache HTTP 配置的示例:

<VirtualHost *:80>

    ServerName web-gui-acceptance.myorg.com
    ServerAlias web-gui-acceptance


    ProxyRequests Off
    ProxyPass /web-gui balancer://jbosscluster/web-gui stickysession=JSESSIONID nofailover=On
    ProxyPassReverse /web-gui http://srvlnx01.myorg.com:8080/web-gui
    ProxyPassReverse /web-gui http://srvlnx02.myorg.com:8080/web-gui

    <Proxy *>
      AuthType Kerberos
      [...]
    </Proxy>

    <Proxy balancer://jbosscluster>
        BalancerMember ajp://srvlnx01.myorg.com:8009 route=SRVLNX01_node1
        BalancerMember ajp://srvlnx01.myorg.com:8009 route=SRVLNX02_node1
        ProxySet lbmethod=byrequests
    </Proxy>

</VirtualHost>

对于每个 JBoss 实例:

vi $JBOSS_HOME/server/default/deploy/jbossweb.sar/server.xml

<Engine name="jboss.web" defaultHost="localhost" jvmRoute="SRVLNX01_node1">
    [...]
</Engine>

您还可以查看HA 代理

相关内容