Wednesday, August 11, 2010

AgilePoint and Network Load Balancing

For most IT departments, Server clustering has become necessary for scaling mission critical business applications, as well as to maintain highly available applications. This article provides information about deploying AgilePoint in a cluster network for scalability and high availability.

Below is a basic topology overview of an AgilePoint Clustering environment:



When a single server machine is not enough to handle the IP traffic on the AgilePoint Server application, it is time to look into constructing a NLB cluster that uses multiple machines on the network acting as a single server. NLB clustering improves performance and enhances scalability by allowing run time processing to be load balanced and distributed among multiple AgilePoint Servers. This type of deployment can improve a systems performance drastically that has very high load or heavy usage. NLB clustering also includes functionality that improves the availability of AgilePoint Server applications (e.g. if one AgilePoint Server machine is brought down in the event of planned downtime due to maintenance or unplanned downtime due to hardware, OS, or application failures, the NLB automatically redirects incoming requests to the other AgilePoint Servers (nodes) in the cluster, maintaining service and application availability without interruption).

IMPORTANT: The AgilePoint CSM application is required if you are installing multiple
AgilePoint Servers in a NLB cluster. If the AgilePoint CSM is not installed, there may be technical issues (e.g. duplicated work items).

NLB load-balances incoming client IP requests across multiple AgilePoint Servers in the cluster. The AgilePoint Servers in the cluster then concurrently process the different client requests. NLB Clustering is setup so that each AgilePoint Server in the load balanced cluster is configured with the same Virtual IP address. Whenever a request is made on this Virtual IP, a network driver on each of these machines intercepts the request for the Virtual IP address and re-routes the request based on the load to one of the machines in the NLB cluster.

To implement an AgilePoint Server NLB cluster, a NLB software or hardware device is required. Microsoft offers a low cost, Network Load Balancing Manager software component as part of Windows Server 2003.

While Windows Server 2003 provides software network load balancing, an alternative high performance

load balancing hardware device may be better suited for production systems.

NLB clustering offers the following benefits:
• Scalability
• High Availability

AgilePoint CSM

Below are some important notes about the AgilePoint CSM:
• The AgilePoint CSM does not provide NLB functionality.
• The AgilePoint CSM is required if you are installing multiple AgilePoint Servers in a NLB
cluster. If the AgilePoint CSM is not installed, there may be technical issues (e.g. duplicated work items).
• The AgilePoint CSM cannot be installed on the same machine as AgilePoint Server.
• Clustering requires each of the AgilePoint Server's in the cluster to be activated using a separate "Clustered" license key. "Clustered" license keys are different than regular production license keys.

How the AgilePoint CSM Works

The AgilePoint CSM runs as a Windows Service and works as an event dispatcher using .NET Remoting. It records information from the AgilePoint Servers in the NLB to track which process instances are running on each of the AgilePoint Server machines. When a process instance is created the first event will be load balanced by the NLB, after that, the AgilePoint CSM is involved to dispatch events to each of the AgilePoint Servers in the cluster, ensuring that all events associated with the same process instance lifecycle are processed on the same AgilePoint Server machine. As the AgilePoint Server machines monitor the DB, when a new event is triggered, the AgilePoint Server machine picks up the event and posts a call to the AgilePoint CSM to determine whether the event is currently being handled by any of the AgilePoint
Servers in the NLB based on the associated Process Instance ID. If the event is associated with a Process Instance ID that is already running on a different server, The AgilePoint CSM will re-route the event to be processed on the AgilePoint Server that is currently dedicated to processing events associated with that process instance.

AgilePoint CSM exploits the event-subscribe/publish approach, so CPU time is very low. It is not supposed to be a risk to install the AgilePoint CSM on the same machine as the Database Server if it is powerful (e.g. 2 CPU Xeons and 4G of memory), however most customers find this is not a viable option. Since the AgilePoint CSM uses .NET Remoting, consider installing it on a server separate from the AgilePoint DB server because it will require opening additional ports and generating an additional IO.

No comments:

Post a Comment