6 How to Manage Oracle WebLogic Tuxedo Connector in a Clustered Environment
For additional information, see Administering Clusters for Oracle WebLogic Server.
This chapter includes the following sections:
Oracle WebLogic Tuxedo Connector Guidelines for Clustered Environments
Use the following guidelines when deploying Oracle WebLogic Tuxedo Connector in a clustered environment:
-
Because the binding is not replicated in other servers in a cluster, all the WebLogic Servers in the cluster must have a configured Oracle WebLogic Tuxedo Connector that includes an Imported Services page that defines any imported services required. If one server in the cluster does not have a Oracle WebLogic Tuxedo Connector deployed, the Jakarta Enterprise Bean (EJB) or Message Driven Bean (MDB) won't be able to find a Tuxedo Connection Factory for that connection.
-
The administrator is responsible for the correct configuration of the TUXEDO DMCONFIG to allow proper load balancing and fail over of inbound calls to clustered nodes.
-
Oracle WebLogic Tuxedo Connector does not support inbound TGIOP in clustered environments.
How to Configure for Clustered Nodes
Configuring WTC servers for a clustered WebLogic Server (WLS) environment is the same as configuring WTC for a non-clustered WLS environment. Configure a WTC server for each node in a cluster that you intend to deploy a JATMI-based EJB. Then target each WTC server to their intended WebLogic Server. There should only be one WTC server per WebLogic Server node.
Limitations for Clustered Nodes
For every WebLogic Server that has a JATMI-based EJB deployed, you must configure it with a WTC server. The high availability depends on the WebLogic Server cluster's own HA ability. There is no special capability to failover/failback among the WTC servers.
Parent topic: How to Configure for Clustered Nodes
How to Configure OutBound Requests to Tuxedo Domains
The load balancing and failover of the outbound requests from WebLogic Server depend on the WebLogic Server EJB and MDB.
See Communications in a Cluster in Administering Clusters for Oracle WebLogic Server. Oracle WebLogic Tuxedo Connector also provides domain-level failover and failback capabilities. See Configuring Failover and Failback.
Example Clustered Oracle WebLogic Tuxedo Connector Configuration
The following configuration provides an example of Oracle WebLogic Tuxedo Connector in a clustered environment. The cluster consists of an administration server (wtcAServer
) and three managed servers (wtcMServer1
, wtcMServer2
, wtcMServer3
). Each managed server has a configured WTC server that contains the same service (TOUPPER) in as an imported service.
Example 6-1 Example Clustered Oracle WebLogic Tuxedo Connector Configuration
<name>mydomain</name> <security-configuration> <name>mydomain</name> <realm> <sec:authentication-provider xsi:type="wls:default-authenticatorType"></sec:authentication-provider> <sec:authentication-provider xsi:type="wls:default-identity-asserterType"> <sec:active-type>AuthenticatedUser</sec:active-type> </sec:authentication-provider> <sec:role-mapper xsi:type="wls:default-role-mapperType"></sec:role-mapper> <sec:authorizer xsi:type="wls:default-authorizerType"></sec:authorizer> <sec:adjudicator xsi:type="wls:default-adjudicatorType"></sec:adjudicator> <sec:credential-mapper xsi:type="wls:default-credential-mapperType"></sec:credential-mapper> <sec:cert-path-provider xsi:type="wls:web-logic-cert-path-providerType"></sec:cert-path-provider> <sec:cert-path-builder>WebLogicCertPathProvider</sec:cert-path-builder> <sec:user-lockout-manager></sec:user-lockout-manager> <sec:security-dd-model>Advanced</sec:security-dd-model> <sec:combined-role-mapping-enabled>false</sec:combined-role-mapping-enabled> <sec:name>myrealm</sec:name> </realm> <default-realm>myrealm</default-realm> <credential-encrypted>{3DES}O0Qw7QBG3+cmemXbtKhHPJL2QLw7tqSYkoWqBtU17W+IoPebpoNai/T3SdtxBOwVHOJJPi /sA8JMJ9MAM4i3KqVgd26A311z</credential-encrypted> <web-app-files-case-insensitive>os</web-app-files-case-insensitive> <compatibility-connection-filters-enabled>true</compatibility-connection-filters-enabled> <node-manager-username>weblogic</node-manager-username> <node-manager-password-encrypted>{3DES}37KMzVTzxZ9VFxCFSVGWzA==</node-manager-password-encrypted> <enforce-strict-url-pattern>false</enforce-strict-url-pattern> </security-configuration> <security> <realm>wl_default_realm</realm> <password-policy>wl_default_password_policy</password-policy> </security> <wtc-server> <name>WTCServer1</name> <target>wtcMServer1</target> <wtc-local-tux-dom> <name>ltd0</name> <access-point>WDOM1</access-point> <access-point-id>WDOM1</access-point-id> <security>NONE</security> <connection-policy>ON_STARTUP</connection-policy> <block-time>30000</block-time> <nw-addr>//mymachine:20401</nw-addr> </wtc-local-tux-dom> <wtc-remote-tux-dom> <name>rtd0</name> <access-point>TDOM1</access-point> <access-point-id>TDOM1</access-point-id> <local-access-point>WDOM1</local-access-point> <nw-addr>//123.123.123.123:20301</nw-addr> </wtc-remote-tux-dom> <wtc-remote-tux-dom> <name>rtd1</name> <access-point>TDOM2</access-point> <access-point-id>TDOM2</access-point-id> <local-access-point>WDOM1</local-access-point> <nw-addr>//123.123.123.123:20302</nw-addr> </wtc-remote-tux-dom> <wtc-export> <name>exp0</name> <resource-name>TOLOWER</resource-name> <local-access-point>WDOM1</local-access-point> <ejb-name>tuxedo.services.TOLOWERHome</ejb-name> <remote-name>TOLOWER</remote-name> </wtc-export> <wtc-export> <name>exp1</name> <resource-name>EJBLSleep</resource-name> <local-access-point>WDOM1</local-access-point> <ejb-name>tuxedo.services.TOLOWERHome</ejb-name> <remote-name>EJBLSleep</remote-name> </wtc-export> <wtc-import> <name>imp0</name> <resource-name>TOUPPER</resource-name> <local-access-point>WDOM1</local-access-point> <remote-access-point-list>TDOM2,TDOM1</remote-access-point-list> </wtc-import> <wtc-import> <name>imp1</name> <resource-name>LSleep</resource-name> <local-access-point>WDOM1</local-access-point> <remote-access-point-list>TDOM2,TDOM1</remote-access-point-list> </wtc-import> </wtc-server> <wtc-server> <name>WTCServer2</name> <target>wtcMServer2</target> <wtc-local-tux-dom> <name>ltd0</name> <access-point>WDOM2</access-point> <access-point-id>WDOM2</access-point-id> <security>NONE</security> <connection-policy>ON_STARTUP</connection-policy> <block-time>30000</block-time> <nw-addr>//mymachine:20402</nw-addr> </wtc-local-tux-dom> <wtc-remote-tux-dom> <name>rtd0</name> <access-point>TDOM1</access-point> <access-point-id>TDOM1</access-point-id> <local-access-point>WDOM2</local-access-point> <nw-addr>//123.123.123.123:20301</nw-addr> </wtc-remote-tux-dom> <wtc-remote-tux-dom> <name>rtd1</name> <access-point>TDOM2</access-point> <access-point-id>TDOM2</access-point-id> <local-access-point>WDOM2</local-access-point> <nw-addr>//123.123.123.123:20302</nw-addr> </wtc-remote-tux-dom> <wtc-export> <name>exp0</name> <resource-name>TOLOWER</resource-name> <local-access-point>WDOM2</local-access-point> <ejb-name>tuxedo.services.TOLOWERHome</ejb-name> <remote-name>TOLOWER</remote-name> </wtc-export> <wtc-export> <name>exp1</name> <resource-name>EJBLSleep</resource-name> <local-access-point>WDOM2</local-access-point> <ejb-name>tuxedo.services.TOLOWERHome</ejb-name> <remote-name>EJBLSleep</remote-name> </wtc-export> <wtc-import> <name>imp0</name> <resource-name>TOUPPER</resource-name> <local-access-point>WDOM2</local-access-point> <remote-access-point-list>TDOM2,TDOM1</remote-access-point-list> </wtc-import> <wtc-import> <name>imp1</name> <resource-name>LSleep</resource-name> <local-access-point>WDOM2</local-access-point> <remote-access-point-list>TDOM2,TDOM1</remote-access-point-list> </wtc-import> </wtc-server> <wtc-server> <name>WTCServer3</name> <target>wtcMServer3</target> <wtc-local-tux-dom> <name>ltd0</name> <access-point>WDOM3</access-point> <access-point-id>WDOM3</access-point-id> <security>NONE</security> <connection-policy>ON_STARTUP</connection-policy> <block-time>30000</block-time> <nw-addr>//mymachine:20403</nw-addr> </wtc-local-tux-dom> <wtc-remote-tux-dom> <name>rtd0</name> <access-point>TDOM1</access-point> <access-point-id>TDOM1</access-point-id> <local-access-point>WDOM3</local-access-point> <nw-addr>//123.123.123.123:20301</nw-addr> </wtc-remote-tux-dom> <wtc-remote-tux-dom> <name>rtd1</name> <access-point>TDOM2</access-point> <access-point-id>TDOM2</access-point-id> <local-access-point>WDOM3</local-access-point> <nw-addr>//123.123.123.123:20302</nw-addr> </wtc-remote-tux-dom> <wtc-export> <name>exp0</name> <resource-name>TOLOWER</resource-name> <local-access-point>WDOM3</local-access-point> <ejb-name>tuxedo.services.TOLOWERHome</ejb-name> <remote-name>TOLOWER</remote-name> </wtc-export> <wtc-export> <name>exp1</name> <resource-name>EJBLSleep</resource-name> <local-access-point>WDOM3</local-access-point> <ejb-name>tuxedo.services.TOLOWERHome</ejb-name> <remote-name>EJBLSleep</remote-name> </wtc-export> <wtc-import> <name>imp0</name> <resource-name>TOUPPER</resource-name> <local-access-point>WDOM3</local-access-point> <remote-access-point-list>TDOM2,TDOM1</remote-access-point-list> </wtc-import> <wtc-import> <name>imp1</name> <resource-name>LSleep</resource-name> <local-access-point>WDOM3</local-access-point> <remote-access-point-list>TDOM2,TDOM1</remote-access-point-list> </wtc-import> </wtc-server> <server> <name>wtcAServer</name> <native-io-enabled>true</native-io-enabled> <ssl> <name>wtcAServer</name> <identity-and-trust-locations>FilesOrKeyStoreProviders</identity-and-trust-locations> </ssl> <listen-port>5472</listen-port> <tunneling-enabled>true</tunneling-enabled> </server> <server> <name>wtcMServer1</name> <native-io-enabled>true</native-io-enabled> <ssl> <name>wtcMServer1</name> <identity-and-trust-locations>FilesOrKeyStoreProviders</identity-and-trust-locations> </ssl> <listen-port>7701</listen-port> <cluster>wtcCluster</cluster> <listen-address>mymachine</listen-address> <tunneling-enabled>true</tunneling-enabled> <jta-migratable-target> <user-preferred-server>wtcMServer1</user-preferred-server> <cluster>wtcCluster</cluster> </jta-migratable-target> </server> <server> <name>wtcMServer2</name> <native-io-enabled>true</native-io-enabled> <ssl> <name>wtcMServer2</name> <identity-and-trust-locations>FilesOrKeyStoreProviders</identity-and-trust-locations> </ssl> <listen-port>7702</listen-port> <cluster>wtcCluster</cluster> <listen-address>mymachine</listen-address> <tunneling-enabled>true</tunneling-enabled> <jta-migratable-target> <user-preferred-server>wtcMServer2</user-preferred-server> <cluster>wtcCluster</cluster> </jta-migratable-target> </server> <server> <name>wtcMServer3</name> <native-io-enabled>true</native-io-enabled> <ssl> <name>wtcMServer3</name> <identity-and-trust-locations>FilesOrKeyStoreProviders</identity-and-trust-locations> </ssl> <listen-port>7703</listen-port> <cluster>wtcCluster</cluster> <listen-address>mymachine</listen-address> <tunneling-enabled>true</tunneling-enabled> <jta-migratable-target> <user-preferred-server>wtcMServer3</user-preferred-server> <cluster>wtcCluster</cluster> </jta-migratable-target> </server> <cluster> <name>wtcCluster</name> <multicast-address>239.0.0.20</multicast-address> <multicast-port>7700</multicast-port> <multicast-ttl>1</multicast-ttl> </cluster> <configuration-version>9.0.0.0</configuration-version> <file-realm> <name>wl_default_file_realm</name> </file-realm> <realm> <name>wl_default_realm</name> <file-realm>wl_default_file_realm</file-realm> </realm> <password-policy> <name>wl_default_password_policy</name> </password-policy> <migratable-target> <name>wtcMServer1 (migratable)</name> <user-preferred-server>wtcMServer1</user-preferred-server> <cluster>wtcCluster</cluster> </migratable-target> <migratable-target> <name>wtcMServer2 (migratable)</name> <user-preferred-server>wtcMServer2</user-preferred-server> <cluster>wtcCluster</cluster> </migratable-target> <migratable-target> <name>wtcMServer3 (migratable)</name> <user-preferred-server>wtcMServer3</user-preferred-server> <cluster>wtcCluster</cluster> </migratable-target> <web-app-container> <relogin-enabled>true</relogin-enabled> <allow-all-roles>true</allow-all-roles> <filter-dispatched-requests-enabled>true</filter-dispatched-requests-enabled> <rtexprvalue-jsp-param-name>true</rtexprvalue-jsp-param-name> <jsp-compiler-backwards-compatible>true</jsp-compiler-backwards-compatible> </web-app-container> <admin-server-name>wtcAServer</admin-server-name> </domain>
Parent topic: How to Configure OutBound Requests to Tuxedo Domains
How to Configure Inbound Requests from Tuxedo Domains
Load balancing and failover of inbound requests from Tuxedo depend on the Tuxedo domain DMCONFIG configuration.
Load Balancing
The following is a sample Tuxedo DMCONFIG that load balances from Tuxedo to clustered WTC. This configuration has three nodes in a WebLogic Server cluster. Each node has a single properly configured Oracle WebLogic Tuxedo Connector instance that provides an exported service that is accessible to the Tuxedo client.
*DM_IMPORT TOUPPER LDOM=tuxedo_dom RDOM=WDOM1 LOAD=50 TOUPPER LDOM=tuxedo_dom RDOM=WDOM2 LOAD=50 TOUPPER LDOM=tuxedo_dom RDOM=WDOM3 LOAD=50
Parent topic: How to Configure Inbound Requests from Tuxedo Domains
Fail Over
The following is a sample Tuxedo DMCONFIG that uses a more sophisticated configuration that load balances between the WebLogic Server nodes as well as illustrate Tuxedo failover capability. The Tuxedo domain must be configured with a Connection Policy
of On Startup
or Incoming Only
to enable Domains-level failover/failback.
*DM_IMPORT TOUPPER LDOM=tuxedo_dom RDOM=WDOM1,WDOM2,WDOM3 LOAD=50 TOUPPER LDOM=tuxedo_dom RDOM=WDOM2,WDOM3,WDOM1 LOAD=50 TOUPPER LDOM=tuxedo_dom RDOM=WDOM3,WDOM1,WDOM2 LOAD=50
Parent topic: How to Configure Inbound Requests from Tuxedo Domains