Service Virtualization

  • 1.  DevTest Server in Cluster Mode

    Posted Mar 03, 2017 02:30 AM

    Hi All,

     

    My scenarios is :

    1)I have one DevTest Sever installed on one machine and testing going on against the server . Now I want to install another server on another machine in "Cluster mode" for Load Testing ,Regression testing etc. i.e if no response from one server then switch to next server for the response.

    2)Have anybody implemented this model structure of Cluster Mode of two servers , Please suggest/share the implementation process. Its bit urgent in my project to create such behaviour.

     

    OR 

    My second thought is can we do like : 

    1) One server , two VSE installations on one server , install some bypass software and pass the request to different VSE's , Is it feasible ?

     

    Please suggest .

     

    Thanks

    Rohan Doshi



  • 2.  Re: DevTest Server in Cluster Mode

    Posted Mar 06, 2017 01:01 AM

    Anybody has any suggestion on above query ? Please respond.

     

    Thanks

    Rohan Doshi



  • 3.  Re: DevTest Server in Cluster Mode
    Best Answer

    Posted Mar 06, 2017 04:05 PM

    Assumption: you are not talking about fault tolerance; therefore, the notion of failing over a running transaction does not apply.

     

    Architecturally, DevTest does support the concept of running multiple VSEs, Coordinators, and Simulators beneath a single Registry.  Additional configuration to identify the subsequent servers (i.e., VSE, Coord, Sims) and communications ports is required.

     

    DevTest does not care if its servers are on the same physical/virtual server or spread across several servers. However, you should consider separating components onto different physical or virtual server OS's because of the added resource drain on CPU & memory.  It is also more likely that a physical/virtual server OS goes offline than a DevTest server; therefore, everything on a single server might not be a viable strategy.

     

    From a routing perspective, as of version 10, DevTest does not contain functionality to 'fail over' from one VSE to another if a VSE is offline or not running.  Right now, we leave this feature to other tools such as load balancers.  

     

    Load balancers provide the features you want to accomplish your requirements.  A load balancer can expose a single IP address & port and then route based on a configurable set of routing rules.  The service consumers need only know the IP address / port exposed by the balancer.  The balancer routes to the underlying VSE or VSEs.

     

    As you develop a strategy, you should consider the architectures of your network, the selected load balancer, the Registry, the VSEs and the individual virtual services.  

     

    For example, if you expose an IP through the balancer, can you still access each physical machine to perform the necessary maintenance, review logs, deploy services, etc?  RDP and certain connections via the balancer are not desirable. 

     

    You can potentially access the Registry through the load balancer's exposed IP, but there is no facility to access multiple Registries via a single load balanced IP on port 2010.  So, you probably want to retain server level access to those ports. Some organizations only expose the servers via the load balancer (or virtual IP as some might term it).  The latter strategy of only exposing elements via the virtual IP may turn into a non-starter when it comes to things such as deploying a service or managing components.  

     

    The Registry, VSEs, Coord, Sims, etc. still need to talk to each other using their respective internal ports.  This is best accomplished via the physical/virtual machine-to-machine communications versus communication through the balancer's exposed IP addresses.  You certainly do not want to load balance the VSE's internal communication with the Registry and vice versa -- that does not make a lot of sense.  

     

    Similarly, virtual service deployments need to occur against each VSE to which the service will be deployed.  There is no deploy service 'X' to all running VSEs feature.  

     

    Lastly, if your Virtual Services are stateful or use the Shared Model Map during processing, you need a mechanism to make subsequent communications from the consumer application sticky against the VSE that received the original request because these resources are not shared across VSEs.

     

    The short answer is yes, it is doable.  The long answer is that a better understanding of each individual customer's specific environment is required to make a definitive assessment and recommendation.



  • 4.  Re: DevTest Server in Cluster Mode

    Posted Mar 08, 2017 01:12 AM

    Thank you Joel for the reply . I have few queries :

    I think that we can start by installing DevTest in our second server mirroring the exact same configuration that we have in our current server but my doubts are :

    1.      What about the Database? Should we have 1 database for all DevTest servers or be must have a separate database for each individual DevTest server? 
    2.      Any idea how is the EJB (Java) virtual services handled in a clustered env?
    3.      How do we balance the communication between the Brokers and the Agents?

    If we do this then no need of multiple VSE's right ? We are planning to install second server only .

    What is more feasible, installing second server OR configuring multiple VSE's ?

     

    Thanks

    Rohan Doshi

    9527319798



  • 5.  Re: DevTest Server in Cluster Mode

    Posted Mar 08, 2017 08:46 AM

    Question 2 / 3 first in case a colleague has thoughts...

    2 / 3) EJB (Java) services and Broker Agent Communications and balancing between Brokers and Agents?

    Perhaps one of my colleagues can assist with this question.  I do not have experience clustering EJBs/Java virtualizations. Stateful and Shared Model Map usage inside any of the VSEs will require figuring out a way to provide a sticky connection.

     

     

    1) What about the database?

    First, two Registry Servers cannot share the same database schema.  So, any time you have two Registries, you need two database schemas (one for Reg1 and the other for Reg2).  The Enterprise Dashboard will have its own schema; however, both Registries can connect to a single Enterprise Dashboard.

     

    If the question is about the DBMS software and running two schemas on the same instance of the DBMS, that is up to you. Many customers deploy the DevTest schemas onto RACs and clusters.  The DBMS handles the clustering.

     

     

     

    The picture below offers one deployment possibility. It is best to consider this graphic in the context of REST and Webservice virtualization; therefore, it does not compensate for how Java/EJB virtualization might be handled. Hopefully, someone can provide some ideas here...

     

    The basic idea is that teams developing and managing services access DevTest components using actual IPs.  Internal DevTest components communicate using native DevTest IP/ports.  Only the consumer applications use the endpoint exposed by the load balancer / VIP.  Rules in the load balancer route requests to virtual or Live applications.  For example, let's say that a particular service is not virtualized.  A rule in the balancer might route the request to the live application to prevent a Service Image Not Found condition from occurring. Virtual services also retain the ability to send requests to live applications, if necessary.

     

    Keep in mind that VSEs are not resources that are shared across Registry servers; rather, they 'reside underneath and communicate solely with' a given Registry. Portal also communicates with a single Registry so the concept of load balancing the Portal's 1507 port does not provide a consolidated view of all the Registries that might be running in the environment.

     

    The process of routing a request to a VSE is controlled by the balancer; therfore, the balancer must implement the mappings required to marshal a request to one or more VSEs.  Within the balancer, the mapping 'pins' a given request to a VSE resource that can respond to the request. The balancer needs to understand the mapping of what is and what is not available for a given service.  The VSE that receives the request simply needs to provide a response.

     

    In the graphic below, consider three different incoming requests.  The balancer determines where the request is routed and determines the routing algorithm to apply.

     

    vse1, vse2, vse3, vse4, and LiveSys each need an IP address. And, the respective service needs to be listening on the correct port. In this context, it seems reasonable that multiple registries and VSEs could handle the distribution so long as the balancer provides the capabilities necessary to map out the routing and determine the load balancing algorithm.  

     

    The approach implies that someone on the team has to be responsible for maintaining the balancer's routing table(s) and rules.



  • 6.  Re: DevTest Server in Cluster Mode

    Posted Mar 09, 2017 01:01 AM

    Thank you Joel , it helps a lot. Could you please ask your colleague to suggest on EJB's and Agent broker communication asap . That is important for us to start the installation.

     

    Thanks

    Rohan Doshi



  • 7.  Re: DevTest Server in Cluster Mode

    Posted Mar 14, 2017 01:48 AM

    Hi All,

     

    Could anybody suggest on EJB services and Agent -Broker communication in cluster mode .

    Please go through latest reply from Joel.

     

    Thanks

    Rohan Doshi