3 Replies Latest reply on Oct 31, 2013 5:05 AM by Wolf-Dieter Fink

    Configuring secondary remote startup node for clustered EJBs

    Mark McGregor Newbie

      I am trying to determine if it is possible to setup a secondary remote startup node for clustered EJBs.


      Basic scenario:


      I have several AS7 servers running clustered EJBs.   Call them EJB1, EJB2, EJB3, etc.   They all run the same code.

      I have several other AS7 servers that talks to the EJB servers.   Call them CLNT1, CLNT2, etc.


      Please note that I am talking about *jboss server to jboss server communications*, and NOT standalone client to jboss server communications. 


      In the CLNTn configurations I have the follow entry to define where the remote EJB calls should go:


                      <remote-outbound-connection name="remote-ejb-connection" outbound-socket-binding-ref="remote-ejb" security-realm="ejb-security-realm" username="ejb">
                              <property name="SASL_POLICY_NOANONYMOUS" value="false"/>
                              <property name="SSL_ENABLED" value="false"/>
              <outbound-socket-binding name="remote-ejb">
                  <remote-destination host="EJB1" port="9000"/>

      This configuration is based on following the instructions on this page https://docs.jboss.org/author/display/AS71/EJB+invocations+from+a+remote+server+instance


      The nodes are supposed to be designed so that we have redundancy and failover.   We can lose or shutdown any node and not have any downtime, etc.   We've been pretty successful with this model under jboss 4.2.3, but we are now moving to JBoss 7.


      My problem...the unix sysadmins want to take down nodes for O/S patching.   So, they happily take down CLNT1 and EJB1 and O/S patch them.   Then they start up CLNT1 while EJB1 is still down.   CLNT1 then has issues because EJB1 is not running and it must talk to that node in order to get cluster information.   We would have similar issues is we lost the EJB1 node entirely.


      Is there way to specify a secondary host, or better yet a list of hosts in the above configuration so that CLNTx boxes can talk to any of the EJBx nodes at startup?


      I've seen the various docs on how to do this for remote standalone clients, but we are not using remote standalone clients.   We're using jboss servers talking to other jboss servers.  (I've tried different varieties of the remote standalone client configs, and I can't seem to get them working in the server-to-server model, but I can get readily get server-to-server EJB invocation working by following the instructions above).


      As for AS versions, I've tried 7.1.1 FINAL, and the latest EAP 6.0.x BETA just for kicks to see if it was better behaved.   I'm working on building 7.1.3 FINAL now, but I'm assuming it is older code than the EAP BETA.


      Any suggestions would be appreciated.