We now had two instances of that
Java application sending duplicate records. IT staff on the business partner??™s end worked
with the data sent as best it could, but our data, which incidentally got replicated all over
the place after it was transmitted and consequently received back, was an unknown
amount of garbage. And that resulted in a manual cleanup that impacted us for weeks.
Needless to say, the configuration has been corrected since then, but this is an example
of how clustering is not the high-availability answer to everything.
For applications that are cluster-unaware, you must create manual compensation
steps to include the cluster-unaware applications in the entire clustering solution. In
the previous example, our solution was to have a simple batch job that fired whenever
a new instance of the Java application started. The role of this batch job was to see if an
instance of the Java application was running on the other server participating in the
cluster. The batch job was included in SQL Agent and set to fire whenever SQL Agent
started. If SQL Server failed over (and not the entire node), SQL Agent needed to fail
over as well (it relied on the MSDB database).
Pages:
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356