What Is Clustering? Clustering is an advanced feature of the webMethods product suite that substantially extends the reliability, availability, and scalability of the webMethods Integration Server. Clustering accomplishes this by providing the infrastructure and tools to deploy multiple Integration Servers as if they were a single virtual server clustering, only vertical scalability scalability is possible. possible. That is, increased Scalability —without clustering, Capacity reuirements can only be met by deploying on larger, more powerful machines, typically housing multiple C!"s. Clustering provides hori#ontal scalability, which allows virtually limitless expansion of capacity by simply adding more machines of the same or similar capacity. clustering—even with expensive %ault&Tolerant %ault&Tolerant systems—a systems—a Availability —$ithout clustering—even failure of the system 'hardware, (ava runtime, or software) may result in unacceptable downtime. Clustering provides virtually uninterrupted availability by deploying applications on multiple Integration Servers* in the worst case, a server failure produces degraded but not disrupted service independent set of servers), clustering clustering provides Reliability —"nli+e a server farm 'an independent the reliability reuired for mission&critical applications. istributed applications must address networ+, hardware, and software errors that might produce duplicate 'or failed) transactions. Clustering ma+es it possible to deliver -exactly once- execution as well as chec+pointrestart chec+pointrestart functionality for critical operations. The following diagram shows clustering in its simplest form/
0oad balancing is an optimi#ing feature you use with clustered webMethods Integration Servers. 0oad balancing controls how reuests are distributed to the servers in the cluster. 1ou must use a third&party load balancer to perform load balancing. 2 thirdparty load balancer can be useful if you need load balancing for multiple types of servers, for example, $eb servers and application servers, in addition to webMethods Integration Servers. Third&party load balancers also offer virtual I! support, Important! o not perform development wor+ in a clustered environment. 3asic namespace loc+ing and the $m4CS pac+age are not supported across Integration Servers in a cluster.
What Data Is Shared in a Cluster?
In a clustered configuration, the session state for clients connected to all servers in the cluster is stored in the shared distributed cache ' A distributed cache may span multiple
servers so that it can grow in size and in transactional capacity. It is mainly used to store application data residing in database and web session data) created by 5racle Coherence. The cache allows transactions in a conversation to be continued on other servers in the cluster. In addition, Trading 6etwor+s uery results and 27T polling notifications are stored in the distributed cache. Note: $hen a server cannot communicate with the other servers sharing a distributed cache, the 5racle Coherence software creates a local cache on that server. This results in this local cache getting out of sync with the other servers in the cluster. $hen communication between the server and the rest of the cluster is restored, 5racle Coherence will integrate the caches that had been separated. Information about scheduled (obs, (obs trac+ed by guaranteed delivery, and 879% data is stored in an external database, identified by the ISInternal functional alias. In addition, :5I6 documents '26s and 857s only) and the processing state of activations that are participating in a :5I6 are also stored in the database. %or more information about these transient logs, see the Publish-Subscribe Developer’s Guide . %or more information about functional aliases, refer to Installing webMethods Products .
vervie o" #ailover Support %ailover support allows you to recover from system failures that occur during processing, ma+ing your applications more robust. %or example, by having more than one Integration Server, you protect your application from failure in case one of the servers becomes unavailable. If the webMethods Integration Server to which the client is connected fails, the client automatically reconnects to another webMethods Integration Server in the cluster.
Note: webMethods Integration Server clustering provides failover capabilities to clients that implement the webMethods Context and TContext classes. Integration Server does not provide failover capabilities when a generic ;TT! client, such as a $eb browser, is used. 1ou can achieve failover support a number of ways/ eb$ethods Integration Server clustering—$ith multiple webMethods Integration Servers, if one Integration Server fails, reuests can be automatically redirected to another server, thereby avoiding a single point of failure. Redundant hardare con"igurations —3y specifying hardware configurations that are redundant, for example multiple machines, multiple file servers, and so on, you further reduce the chance of a single point of failure.
vervie o" Reliability %uaranteed Delivery —This feature ensures that a service executes once and only once. It is particularly useful when used with clustering to prevent a restarted service from running on more than one server. This feature is only for use with server&to&server communications. Chec&point restart services —These services allow you to code your flow service to store state information and other pertinent information in the short&term data store. If the flow service fails because a server becomes unavailable, the flow service can be
restarted from the last chec+point rather than at the beginning.
%uaranteed Delivery and Clustering
Chec&point Restart webMethods Integration Server provides a number of built&in services 'in the pub.storage folder) that you can use to ma+e your flows more robust. $ith these services, you can write state information and other pertinent data to a data store in the Integration Server short&term data store. If the webMethods Integration Server on which your flow is executing becomes unavailable, when your flow restarts it can chec+ the state information in the data store and begin processing at the point where the flow was interrupted.
eb$ethods Integration Server Session b'ects Clustered Integration Servers create and maintain the session ob(ects that are stored in the cache. In a non&clustered environment, Integration Server maintains session information in its own local memory. In a cluster, however, Integration Server creates a session in the distributed 'or shared) cache, so that when a load balancer redirects a client for failover, the new server can access the session information. The Integration Server that initially receives a reuest from a client creates the session ob(ect in the cache. 5ther I ntegration Servers in the cluster can access the session ob(ect to access and update session information as necessary. $hen you configure an Integration Server to use clustering, you specify a setting that indicates how long inactive session ob(ects are maintained in the cache. !eriodically, each Integration Server in the cluster chec+s the session ob(ects in the cache to determine if any have expired, and if so, removes them.
Scheduled (obs 1ou can schedule (obs to run on one, any, or all Integration Servers in the cluster. Integration Server stores information about scheduled (obs in the external database
identified by the ISInternal functional alias. %or (obs to run in the cluster, the server must be enabled for clustering and existing (obs must be flagged to run in the cluster
Client Applications Server clustering is almost transparent to the client. 2 client can issue reuests to a server that is in a clustered environment in the same way it issues a reuest to a server that is not in a clustered environment. $hen a client connects to a server that is in a clustered environment 'using the Context class), the server returns information about the other servers in the cluster to the client. In the event that a reuest is not processed, the client can use this information to connect to another server in the cluster to have the reuest fulfilled. $hether you are using the Context or TContext class to communicate with the webMethods Integration Server, the redirection of failed reuests is transparent to the client. The logic to handle redirection is in the webMethods Integration Server Context or TContext class. To improve the failover capability, before your client calls Context or TContext to connect to an Integration Server in the cluster, have your client issue the setRetryServer method in that class to specify another server to try if the first server the client tries to connect to is unavailable. 6o special processing is reuired in your clients. Note: webMethods Integration Server clustering provides failover capabilities to ;TT!based webMethods clients,
Remote Integration Servers in a Cluster 2n Integration Server can be configured to connect to a remote server for a number of reasons, including/ 2llow clients to run services on other Integration Servers using the pub.remote:invoke service and the pub.remote.gdi:* services. Connect publisher and subscriber Integration Servers to each other for the purpose of pac+age replication. %acilitate the process of presenting different certificates to different Integration Servers. In general, if a remote server is not available when a reuest is made, and the remote server is not part of a cluster, Integration Server will use the retry server specified in the alias definition for the remote server. If the reuested remote server is part of a cluster, Integration Server will attempt to use the next Integration Server in the cluster until one is found. If no available Integration Server is found in the cluster, Integration Server will use the retry server specified in the alias definition for the remote server. In cases where a client calls the pub.remote:invoke to run a service on a remote server that is part of a cluster, it is possible to modify the default behavior by using the $clusterRetry. This parameter controls whether the service will try other Integration Servers in the cluster. $hen this parameter is set to true, the service will try other Integration Servers in the cluster. If none are found, the service will try the retry server specified in the remote server alias definition. $hen this parameter is set to false, the service does not try other Integration Servers in the cluster. Instead, it will try the retry server specified in the alias definition.
9ach Integration Server in the cluster must be 4ersion =.> or later. ?@Install the eb$ethods Integration Server s and configure them for clustering. )*Con"igure netor& routers to support multicast tra""ic+ Integration Server uses 5racle Coherence to create a distributed 'or shared) cache for storing volatile data. This caching software uses the multicast method of discovery.' $hen a server cannot communicate with the other servers sharing a distributed cache, the 5racle Coherence software creates a local cache on that server. This results in this local cache getting out of sync with the other servers in the cluster. $hen communication between the server and the rest of the cluster is restored, 5racle Coherence will integrate the caches that had been separated.) For Trading Networks to run in a clustered environment, you must do the following. ?@Configure Trading 6etwor+s so that user accounts, data cached in memory, and Integration Server properties are synchroni#ed on all servers in the cluster. A@9nsure that all Trading 6etwor+s instances use the same database. %or an adapter to run in a clustered environment, a duplicate version of it must exist on each machine in the cluster. it is recommended that the servers in a cluster each have the same server environment. %or server clustering to wor+ effectively, you should +eep the following the same on all servers in the cluster/ ?@All servers should have the same pac&ages o" services+ In order for a service to execute on any server in the cluster, that service must exist in the same pac+age on every server in the cluster.' It is recommended that you use webMethods eployer, or the pac+age replication functionality in the Integration Server 2dministrator to copy pac+ages to other servers in the cluster, instead of using esigner or eveloper to copy them.) A@,ach server should have the same user accounts+ The server uses user account information to authenticate clients. $hen a server redirects a reuest to an alternate server, the alternate server re&authenticates the user using the credentials supplied to the original server. If authentication fails, the reuest fails. B@Access to services should be the same on all servers+ The server uses group information and 2C0s to determine whether a client has access to a service. 2ll servers should have the same groups with the same group membership. Services should be protected by the same 2C0s. The 2C0s should identify the same 2llow
.*,ach server should have its on diagnostic port+ /*,ach server should have its on 0space+ If you want the Integration Servers in a cluster to temporarily store large documents in a hard dis+ drive space rather than +eep them in memory, you must define a different Tspace for each Integration Server in a cluster. ?>@racle Coherence clustering parameters should be the same on all servers+ Cluster name,discovery address, and discovery port ust be same for all cluster members. Session timeout and time&to&live should be the same on all servers, but it is not reuired.
Sitching "rom the ,mbedded Database to an ,1ternal RD2$S %or Integration Servers to participate in a cluster, they must share database components in an external 73MS. 0o sitch to a shared e1ternal RD2$S 3 In Integration Server 2dministrator, navigate to the Security * Certi"icates * Client Certi"icates screen, and ma+e a note of the certificate mappings. ) 7un the migration utility pub.scheduler:migrateTasksToJDC to migrate your scheduled tas+s from the embedded database to the external 73MS 4 In Integration Server 2dministrator, navigate to the Security * Certi"icates * Client Certi"icates screen and re&specify your certificate mappings.
,nabling Clustering and Speci"ying Clustering 5arameters "se the following procedure to turn clustering on for this Integration Server and to specify various clustering parameters. 0o enable clustering 3 In the Settings menu of the navigation area, clic+ Clustering . ) Clic+ ,dit Cluster Settings . 4 Clic+ ,nable Cluster 6 Specify the following information/ #or this parameter Speci"y 6ame of the cluster to which this Integration Server belongs. Cluster Name 6umber of minutes an inactive session will be retained in the Session 0imeout clustered session store. efault is E>. 2 networ+ address, local to the host machine, that you want to 7ocal Address use for Coherence traffic. !ort that receives data from other members of the cluster. This 7ocal 5ort number must be a valid port number. The default is AGF. I! address used to identify members of the cache that are to be Discovery Address used for clustering. This address must be in the range AA.>.>.> & ABH.AGG.AGG. !ort used to identify members of the cache that are to be used Discovery 5ort for clustering. This number must be an integer. The maximum number of networ+ segments that a multicast 0ime to 7ive pac+et is allowed to traverse. Specify a number from > to AGG. Set this number to that lowest value that wor+s in your environment. The default is ?.
- Clic+ Save Settings . 8 4erify that all nodes in the cluster are displayed under Cluster 9osts. 7estart the Integration Server. %or (obs to run in the cluster, the server must be enabled for clustering and existing (obs must be flagged to run in the cluster. when a cluster of Integration Servers are hosted on a single machine, the host name itself cannot uniuely identify the individual Integration Server instances. In such cases, use the watt.server.scheduler.logical.hostname property to specify a uniue logical name to identify individual Integration Server instances. The default value for this parameter is the host name. eep the following points in mind when setting the watt.server.scheduler.logical.hostname property/ Set this property only if you are running multiple Integration Server in a cluster on a single machine. Set this property on each Integration Server instance in the cluster before scheduling any tas+s. The logical host name you specify must be uniue. The logical host name you specify cannot contain a semicolon '*). 0o speci"y a uni;ue name "or an Integration Server in a cluster 3 5pen the Integration Server 2dministrator if it is not already open. ) In the Settings menu of the 6avigation panel, clic+ ,1tended . Integration Server displays a screen that lists the configuration properties. 4 0ocate the watt.server.scheduler.logical.hostname parameter. If this parameter does not exist, add it. Set it as follows/ 6 Clic+ Save Changes. - 7estart Integration Server for the changes to ta+e effect. The guaranteed delivery capabilities of the webMethods Integration Server ensure guaranteed one&time execution of services.
0o vie a list o" all clustered servers 3 Start the Integration Server 2dministrator. See !dinistering webMethods Integration Server if you need help with this step. ) In the Settings menu of the navigation area, clic+ Cluster . The server displays the list of servers in the cluster. If you notice that a server is missing from the list, it might be for one of the following reasons/ The server is not running. The server is running, but the computer on which it runs has become disconnected from the other nodes in the cache. $hen a node becomes unavailable, 5racle Coherence creates a local cache on that server. This behavior allows the server to continue operating, but can result in the local cache becoming out&of&sync with the other cluster nodes. ;owever, when the connection is restored, 5racle Coherence will automatically resynchroni#e the cache.
Removing a Server "rom the Cluster 4 In the Settings menu of the navigation area, clic+ Clustering . 6 Clic+ ,dit Cluster Settings . - Clic+ Disable Cluster to turn clustering off for this server. 8 Clic+ Save Settings . 7estart the server. 0o add a server bac& into the cluster 3 If it is not already running, start the Integration Server 2dministrator of the server you want to add bac+ into the cluster. See !dinistering webMethods Integration Server if you need help with this step. ) In the Settings menu of the navigation area, clic+ Clustering . 4 Clic+ ,dit Cluster Settings . 6 Clic+ ,nable Cluster to turn clustering on for this server. - Ma+e any changes you want to the configuration. 8 Clic+ Save Settings . 7estart the server. 0o ta&e a server o""line 3 Start the Integration Server 2dministrator. See !dinistering webMethods Integration Server if you need help with this step. ) In the Security menu of the navigation area, clic+ 5orts. 4 Clic+ Change 5rimary 5ort . 6 In the Select Ne 5rimary 5ort area of the screen, select the port you want to ma+e the primary port from the pull down menu. Select a port that does not already exist, for example GGGE. If GGGG was your primary listening port, this step replaces port GGGG with GGGE. - Clic+ =pdate . 8 5n your browser, update the "70 for the Integration Server 2dministrator to use the new port. isable all other listening ports
2ringing a Server 2ac& nline There may be times when you need to bring a server bac+ online. %or example, you might have ta+en a server offline because you run guaranteed delivery and you needed to
remove the server from the cluster. '$hen a server is offline, it can only be accessed through a single, unpublished port.) 2fter you add the server bac+ to the cluster, you must bring it bac+ online. 0o bring a server bac& online 3 Start the Integration Server 2dministrator. See !dinistering webMethods Integration
Server if you need help with this step. ) In the Security menu of the navigation area, clic+ 5orts. 4 Clic+ Change 5rimary 5ort . 6 Change the primary listening port bac+ to the published primary port for the server. - Clic+ =pdate . 8 5n your browser, update the "70 for the Integration Server 2dministrator to the new listening port you (ust defined. 9nable all disabled listening ports.
1ou can have a variety of webMethods Integration Servers in your cluster, for example one server on ;!&"8, one on Solaris, and one on 6T.