Injecting failures into a high availability system

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

Before you begin

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.

About this task

You 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.
    Note: The wsadmin scripting client is run from Qshell. For more information, see Configuring Qshell to run WebSphere scripts using wsadmin scripting .

    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, that you want 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 administrative console to view the results. If you 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 myNode01.server1-bus1, use the following commands:
In Jython:
myMBean = AdminControl.queryNames("type=SIBMessagingEngine,name=myNode01.
server1-bus1,*")

$AdminControl invoke $myMBean injectFault GlobalError
In Jacl:
set myMBean [$AdminControl queryNames type=SIBMessagingEngine,name=myNode01.
server1-bus1,*]

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



In this information ...


IBM Redbooks, demos, education, and more

(Index)

Use IBM Suggests to retrieve related content from ibm.com and beyond, identified for your convenience.

This feature requires Internet access.

Task topic Task topic    

Terms and conditions for information centers | Feedback

Last updatedLast updated: Feb 6, 2014 8:11:25 PM CST
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=matt&product=was-nd-mp&topic=tjt0037_
File name: tjt0037_.html