| Title and Copyright Information |
| About This Manual |
| Audience |
| New and Changed Features |
| Organization |
| Related Documents |
| Reader's Comments |
| Conventions |
| Part 1 -- Running Applications on TruCluster Server |
| 1 | Cluster Applications |
| 1.1 | Application Types |
| 1.1.1 | Single-Instance Applications |
| 1.1.2 | Multi-Instance Applications |
| 1.1.3 | Distributed Applications |
| 2 | Using CAA for Single-Instance Application Availability |
| 2.1 | When to Use CAA |
| 2.2 | Resource Profiles |
| 2.2.1 | Creating a Resource Profile |
| 2.2.2 | Application Resource Profiles |
| 2.2.2.1 | Required Resources |
| 2.2.2.2 | Application Resource Placement Policies |
| 2.2.2.3 | Optional Resources in Placement Decisions |
| 2.2.3 | Network Resource Profiles |
| 2.2.4 | Tape Resource Profiles |
| 2.2.5 | Media Changer Resource Profiles |
| 2.2.6 | Validating Profiles |
| 2.3 | Writing Action Scripts |
| 2.3.1 | Guidelines for Writing Application Resource Action Scripts |
| 2.3.2 | Action Script Examples |
| 2.3.3 | Accessing Environment Variables |
| 2.3.4 | Directing Output from Action Scripts |
| 2.4 | Creating User-Defined Attributes |
| 2.5 | Registering Resources |
| 2.6 | Starting Application Resources |
| 2.7 | Relocating Application Resources |
| 2.8 | Balancing Application Resources |
| 2.9 | Stopping Application Resources |
| 2.10 | Unregistering Application Resources |
| 2.11 | Displaying CAA Status Information |
| 2.12 | Graphical User Interfaces |
| 2.12.1 | Using SysMan Menu to Manage CAA |
| 2.12.2 | Using SysMan Station to Manage and Monitor CAA |
| 2.13 | CAA Tutorial |
| 2.13.1 | Preconditions |
| 2.13.2 | Miscellaneous Setup |
| 2.13.3 | Example of an Action Script for dtcalc |
| 2.13.4 | Step 1: Creating the Application Resource Profile |
| 2.13.5 | Step 2: Validating the Application Resource Profile |
| 2.13.6 | Step 3: Registering the Application |
| 2.13.7 | Step 4: Starting the Application |
| 2.13.8 | Step 5: Relocating the Application |
| 2.13.9 | Step 6: Stopping the Application |
| 2.13.10 | Step 7: Unregistering the Application |
| 2.14 | Example Applications Managed by CAA |
| 2.14.1 | OpenLDAP Directory Server |
| 2.14.2 | Creating a Single-Instance, Highly Available Apache HTTP Server Using CAA |
| 2.14.3 | Creating a Single-Instance Oracle8i Server Using CAA |
| 2.14.4 | Creating a Single-Instance Informix Server Using CAA |
| 3 | Using Cluster Aliases with Multi-Instance Applications |
| 3.1 | When to Use Cluster Aliasing |
| 3.2 | Using the Default Cluster Alias to Access a Multi-Instance Apache HTTP Server |
| Part 2 -- Moving Applications to TruCluster Server |
| 4 | General Application Migration Issues |
| 4.1 | Clusterwide and Member-Specific Files |
| 4.1.1 | Using a Single File |
| 4.1.2 | Using Multiple Files |
| 4.1.3 | Using CDSLs |
| 4.2 | Device Naming |
| 4.3 | Interprocess Communication |
| 4.4 | Synchronized Access to Shared Data |
| 4.5 | Member-Specific Resources |
| 4.6 | Expanded PIDs |
| 4.7 | DLM Parameters Removed |
| 4.8 | Licensing |
| 4.8.1 | TruCluster Server Clusterwide Licensing Not Supported |
| 4.8.2 | Layered Product Licensing and Network Adapter Failover |
| 4.9 | Blocking Layered Products |
| 5 | Moving ASE Applications to TruCluster Server |
| 5.1 | Comparing ASE to CAA |
| 5.1.1 | Disk Service |
| 5.1.2 | NFS Service |
| 5.1.3 | User-Defined Service |
| 5.1.4 | DRD Service |
| 5.1.5 | Tape Service |
| 5.2 | Preparing to Move ASE Services to TruCluster Server |
| 5.2.1 | Saving ASE Database Content from TruCluster Available Server and Production Server Version 1.5 or Later |
| 5.2.2 | Saving ASE Database Content from TruCluster Available Server and Production Server Version 1.4 or Earlier |
| 5.3 | ASE Script Considerations |
| 5.3.1 | Replacing ASE Commands with CAA Commands |
| 5.3.2 | Combining Start and Stop Scripts |
| 5.3.3 | Redirecting Script Output |
| 5.3.4 | Replacing nfs_ifconfig Script |
| 5.3.5 | Handling Errors Correctly |
| 5.3.6 | Removing Storage Management Information |
| 5.3.7 | Converting Device Names |
| 5.3.8 | Replacing or Removing ASE Variables |
| 5.3.9 | Exit Codes |
| 5.3.10 | Posting Events |
| 5.4 | Networking Considerations |
| 5.4.1 | Using an Alias |
| 5.4.1.1 | Cluster Alias |
| 5.4.1.2 | Interface Alias |
| 5.4.2 | Networking Services |
| 5.5 | File System Partitioning |
| 6 | Moving Distributed Applications to TruCluster Server |
| 6.1 | Preparing to Move Distributed Applications to TruCluster Server |
| 6.2 | Running Oracle Parallel Server on TruCluster Server |
| 6.3 | Moving Oracle Parallel Server to TruCluster Server |
| Part 3 -- Writing Cluster-Aware Applications |
| 7 | Programming Considerations |
| 7.1 | Modifications Required for RPC Programs |
| 7.2 | Portable Applications: Standalone and Cluster |
| 7.3 | CLSM Support |
| 7.4 | Diagnostic Utility Support |
| 7.5 | CDFS File System Restrictions |
| 7.6 | Scripts Called from the /cluster/admin/run Directory |
| 7.7 | Testing the Status of a Cluster Member During a Rolling Upgrade |
| 7.8 | File Access Resilience in a Cluster |
| 8 | Cluster Alias Application Programming Interface |
| 8.1 | Cluster Alias Port Terminology |
| 8.2 | Cluster Alias Functions |
| 8.3 | Cluster Port Space |
| 8.4 | Binding to Reserved Ports (512 Through 1024) |
| 8.5 | setsockopt() Options |
| 8.6 | Port Attributes: /etc/clua_services, clua_registerservice(), and setsockopt() |
| 8.7 | UDP Applications and Source Addresses |
| 9 | Distributed Lock Manager |
| 9.1 | DLM Overview |
| 9.2 | Resources |
| 9.2.1 | Resource Granularity |
| 9.2.2 | Namespaces |
| 9.2.3 | Uniquely Identifying Resources |
| 9.3 | Using Locks |
| 9.3.1 | Lock Modes |
| 9.3.2 | Levels of Locking and Compatibility |
| 9.3.3 | Lock Management Queues |
| 9.3.4 | Lock Conversions |
| 9.3.5 | Deadlock Detection |
| 9.4 | Dequeuing Locks |
| 9.5 | Canceling a Conversion Request |
| 9.6 | Advanced Locking Techniques |
| 9.6.1 | Asynchronous Completion of a Lock Request |
| 9.6.2 | Notification of Synchronous Completion |
| 9.6.3 | Blocking Notifications |
| 9.6.4 | Lock Conversions |
| 9.6.4.1 | Queuing Lock Conversions |
| 9.6.4.2 | Forced Queuing of Conversions |
| 9.6.5 | Parent Locks |
| 9.6.6 | Lock Value Blocks |
| 9.7 | Local Buffer Caching Using DLM Functions |
| 9.7.1 | Using the Lock Value Block |
| 9.7.2 | Using Blocking Notifications |
| 9.7.2.1 | Deferring Buffer Writes |
| 9.7.2.2 | Buffer Caching |
| 9.7.3 | Choosing a Buffer Caching Technique |
| 9.8 | Distributed Lock Manager Functions Code Example |
| 10 | Memory Channel Application Programming Interface Library |
| 10.1 | Memory Channel Multirail Model |
| 10.1.1 | Single-Rail Style |
| 10.1.2 | Failover Pair Style |
| 10.1.3 | Configuring the Memory Channel Multirail Model |
| 10.2 | Initializing the Memory Channel API Library |
| 10.3 | Initializing the Memory Channel API Library for a User Program |
| 10.4 | Tuning Your Memory Channel Configuration |
| 10.4.1 | Extending Memory Channel Address Space |
| 10.4.2 | Increasing Wired Memory |
| 10.5 | Troubleshooting |
| 10.5.1 | IMC_NOTINIT Return Code |
| 10.5.2 | Memory Channel API Library Initialization Failure |
| 10.5.3 | Fatal Memory Channel Errors |
| 10.5.3.1 | Rail Initialization Failure |
| 10.5.4 | IMC_MCFULL Return Code |
| 10.5.5 | IMC_RXFULL Return Code |
| 10.5.6 | IMC_WIRED_LIMIT Return Code |
| 10.5.7 | IMC_MAPENTRIES Return Code |
| 10.5.8 | IMC_NOMEM Return Code |
| 10.5.9 | IMC_NORESOURCES Return Code |
| 10.6 | Accessing Memory Channel Address Space |
| 10.6.1 | Attaching to Memory Channel Address Space |
| 10.6.1.1 | Broadcast Attach |
| 10.6.1.2 | Point-to-Point Attach |
| 10.6.1.3 | Loopback Attach |
| 10.6.2 | Initial Coherency |
| 10.6.3 | Reading and Writing Memory Channel Regions |
| 10.6.4 | Address Space Example |
| 10.6.5 | Latency Related Coherency |
| 10.6.6 | Error Management |
| 10.7 | Clusterwide Locks |
| 10.8 | Cluster Signals |
| 10.9 | Cluster Information |
| 10.9.1 | Using Memory Channel API Functions to Access Memory Channel API Cluster Information |
| 10.9.2 | Accessing Memory Channel Status Information from the Command Line |
| 10.10 | Comparison of Shared Memory and Message Passing Models |
| 10.11 | Frequently Asked Questions |
| 10.11.1 | IMC_NOMAPPER Return Code |
| 10.11.2 | Efficient Data Copy |
| 10.11.3 | Memory Channel Bandwidth Availability |
| 10.11.4 | Memory Channel API Cluster Configuration Change |
| 10.11.5 | Bus Error Message |
| Examples |
| 9-1 | Locking, Lock Value Blocks, and Lock Conversion |
| 10-1 | Accessing Regions of Memory Channel Address Space |
| 10-2 | System V IPC and Memory Channel Code Comparison |
| 10-3 | Error Detection Using the imc_rderrcnt_mr Function |
| 10-4 | Error Detection Using the imc_ckerrcnt_mr Function |
| 10-5 | Locking Memory Channel Regions |
| 10-6 | Requesting Memory Channel API Cluster Information; Waiting for Memory Channel API Cluster Events |
| Figures |
| 1-1 | Accessing a Single-Instance Application |
| 1-2 | Application Failover Using CAA |
| 1-3 | Accessing a Multi-Instance Application |
| 3-1 | Accessing a Multi-Instance Application Through a Cluster Alias |
| 9-1 | Model Database |
| 9-2 | Three Lock Queues |
| 9-3 | Conversion Deadlock |
| 9-4 | Multiple Resource Deadlock |
| 10-1 | Single-Rail Memory Channel Configuration |
| 10-2 | Failover Pair Memory Channel Configuration |
| 10-3 | Broadcast Address Space Mapping |
| 10-4 | Point-to-Point Address Space Mapping |
| 10-5 | Loopback Address Space Mapping |
| Tables |
| 1-1 | TruCluster Server Application Types |
| 1-2 | Single-Instance Application Architectural Differences |
| 1-3 | Multi-Instance Application Architectural Differences |
| 2-1 | Application Profile Attributes |
| 2-2 | Network Profile Attributes |
| 2-3 | Tape Profile Attributes |
| 2-4 | Media Changer Attributes |
| 4-1 | Application Migration Considerations |
| 5-1 | ASE Services and Their TruCluster Server Equivalents |
| 7-1 | CDFS Library Functions |
| 8-1 | Cluster Alias Functions |
| 8-2 | Relationship Among Cluster Alias Port Attributes |
| 9-1 | Distributed Lock Manager Functions |
| 9-2 | Lock Modes |
| 9-3 | Compatibility of Lock Modes |
| 9-4 | Using the DLM_DEQALL Flag in a dlm_unlock Function Call |
| 9-5 | Conversions Allowed When the DLM_QUECVT Flag Is Specified |
| 9-6 | Effect of Lock Conversion on Lock Value Block |
| Index |