Network Deployment (Distributed operating systems), v8.0 > Establishing high availability > Establishing high availability for Service integration > High availability and workload sharing


Injecting failures into a high availability system

We can inject failures into the system to check that the high availability behavior functions as you expect.

Attention: This facility is provided to support acceptance testing of a highly available configuration and should only be used for that purpose. Injecting a failure into the system will cause resources to be disabled or failed over from one server to another and will disrupt the workload.

We can send a JMX command to a messaging engine MBean to simulate a failure in the high availability system. Injecting failures provides a useful way to undertake advanced verification or preproduction testing. You should not inject a failure into a production system. There are two types of messaging engine failure that you can simulate: local error and global error. For more information about error types, see Messaging engine recovery from exception conditions.


Procedure

  1. Start the wsadmin client.

    For more information about the wsadmin client, see wsadmin scripting tool.

  2. Use a JMX command to create a variable and set its value to the messaging engine, or engines, to fail.

    In Jython:

    mbean_name = AdminControl.queryNames("type=SIBMessagingEngine,name=messaging_engine_name,*" )
    

    In Jacl:

    set mbean_name [$AdminControl queryNames type=SIBMessagingEngine,name=messaging_engine_name,*]
    

  3. Use a JMX command to inject the failure, by using the variable you created in the previous step.

    To inject a local error in Jython:

    AdminControl.invoke(mbean_name, "injectFault", "LocalError")
    

    To inject a global error in Jython:

    AdminControl.invoke(mbean_name, "injectFault", "GlobalError")
    

    To inject a local error in Jacl:

    $AdminControl invoke $mbean_name injectFault LocalError
    

    To inject a global error in Jacl:

    $AdminControl invoke $mbean_name injectFault GlobalError
    


Results

Use the admin console to view the results. If we have configured the system for failover, a local error should cause the messaging engine to be failed over to another server. A global error does not cause a failover.


Example

For example, to inject a global error into a messaging engine named node1.server1-bus1, use the following commands:

In Jython:

myMBean = AdminControl.queryNames("type=SIBMessagingEngine,name=node1.
server1-bus1,*")

$AdminControl invoke $myMBean injectFault GlobalError

In Jacl:

set myMBean [$AdminControl queryNames type=SIBMessagingEngine,name=node1.
server1-bus1,*]

AdminControl.invoke(myMBean, "injectFault", "GlobalError")

Messaging engine recovery from exception conditions

+

Search Tips   |   Advanced Search