3 Replies Latest reply on May 22, 2013 10:36 AM by wdfink

    JBoss AS 7 setup for High Availability

    dragos.enachescu

      Hi,

       

      We have an environment consisting of 2 Linux boxes on which we want to install JBoss/EAP 6. The applications which will run on these machines are Switchyard services exposed through SOAP binding and maybe in the future we will use also Messaging. Anyway, we are concern about the High Availability for our services and cannot decide which approach to follow in order to install JBoss EAP.

       

      Initially we considered installing JBoss EAP in domain mode and have a server group defined across all machines (master-slave installation) - this decision was mainly taken because of the ease of managing the environment through a single controller (on the master machine). But we have learned that an application deployment will be performed at the server group level (e.g. all the server instances defined in the group will deploy the new application at once, and if the deployment fails in one server, will fail in all servers). If I understood it correctly, this will break our service "High Availability".

       

      Going further with the investigation, we've learned that the only way we can achive high availability is to install in each machine an independent EAP (e.g. have a clone of the same configuration in each machine: "master"/"master" installation). But this setup seem to be hard to manage, because we will end up in having 2 management controllers. But at least this seem to be the best of us in order to keep our service "high availability". Also, we might have other configuration problems with hornetq/clustering?

       

      Can you give us some thoughts about the best approach of setting up JBoss EAP in the above scenario? Maybe there is something we have overlooked.

       

      Thank you in advance,

      Dragos

        • 1. Re: JBoss AS 7 setup for High Availability
          wdfink

          It sounds like that you want to have a simple administration.

          If you use HA this is more loadbalancing and failover which you can achieve by using mod_jk or mod_cluster or other kind of loadbalancer.

           

          The administrative side, i.e. JBoss domain mode is only to manage the servers configuration and deployment.

           

          My approach to achieve two independend server (or server-groups) if you have such condition is to use two server groups and deploy the application with the next version only to one group and after check it try the second.

          In that case you have the benefit of a single point of administration but you are able to act in the same way as you do it with standalone servers.

          • 2. Re: JBoss AS 7 setup for High Availability
            dragos.enachescu

            Thanks for the reply.

             

            Yes, the question is more about how to simplify the administration... There will be a physical load balancer in front of the machines which will distribute the load on each machine.

             

            So, having the master-slave configuration with the JBoss AS in Domain mode, we could configure 2 server groups which will be managed independently (started/stoped, apps deployments etc). But having the two server groups, will imply that we will also have 2 distinct listening ports for the application (one for each server group/instance). So this means that we need to configure the load balancer to forward the requests on 2 different ports? How do you think we can workaround this knowing that we cannot re-configure the load balancer during an application deployment (also I will have to check with our Networking if the LB can receive requests on one inbound port and forward it to two ports on the same machine ).

             

            Or am I missing something else from your line of thoughts?

             

            Thanks

            • 3. Re: JBoss AS 7 setup for High Availability
              wdfink

              The port configuration does not depend on the server-group.

              The only thing is that you have to ensure that there are no port conflicts if you start two servers on one machine, you might use different (virtual) IPs for that.

               

              You can use the same profile and socket-binding for both server-groups, if you need to change the port's or the IP address you can do that inside the host.xml server element.

               

              Does that answer your question?