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