Using other ADCs with Multiple Resilience

The multiple server resilience software requires the special ADC called AUXDISTR to be loaded. Users may wish to load their own ADC programs to intercept messages passed from the application to AUXDISTR; the following explains how this can be done (and also how users may load multiple ADCs). Note that the explanation is "top-down", as it is easier to work out the correct command tail in this direction. However, the programs are actually loaded in the opposite order.

  1. The first ADC in the chain receiving messages from the application should be loaded without any special command tail. This will cause it to use the same IPC mechanism that the database manager normally uses, so that it receives the messages from the application correctly.

  2. The next ADC should use the command tails: -aux -chain 1 and subsequent ADCs should specify -aux -chain 2 , -aux -chain 3 and so on to indicate their position in the chain. The -chain n command tail causes the ADC to modify the IPC mechanism it uses (by reading a different queue, semaphore or whatever) so that messages are passed down the chain of ADCs in the correct order.

  3. Finally the database manager SRVn should be given the same command tails as the last ADC in the chain.

  4. If the network manager (usually TCPMGR) is also loaded, it should usually be given the same command tails as the database manager, to ensure that it communicates directly with the database manager and not using the ADC. Alternatively you can specify the command tails that match the ADC you want to intercept the network manager. You must not let the network manager pass its calls to AUXDISTR - you must specify at least -aux.

The database manager and ADCs should be loaded in reverse order to that in which messages pass down the chain, as each tests for the presence of the other programs in the chain when it is loaded.

Example Configuration for Unix

For example, the following sequence of UNIX commands loads the ADC called USERADC on top of the appropriate programs for multiple server resilience:

tcp3 -remain -multiple
srv3 -remain -aux -chain 1
tcpmgr -remain -detach -aux -chain 1 -server 1
auxdistr -remain -chain 1 -server 1 -use 1 -use 2
useradc -remain

You should normally load user ADCs above auxdistr rather than underneath. (A possible exception might be if you were using AUXDEBUG to track which database requests were being handled locally.) AUXDISTR uses some special functionality in the database manager, which makes putting ADCs underneath AUXDISTR difficult.