When configuring a WebCenter Content (WCC) cluster, one of the things which makes it unique from some other WebLogic Server applications is its requirement for a shared file system. This is actually not any different then 10g and previous versions of UCM when it ran directly on a JVM. And while it is simple enough to say it needs a shared file system, there are some crucial details in how those directories are configured. And if they aren't followed, you may result in some unwanted behavior. This blog post will go into the details on how exactly the file systems should be split and what options are required.
Beyond documents being stored on the file system and/or database and metadata being stored in the database along with other structured data, there is other information being read and written to on the file system. Information such as user profile preferences, workflow item state information, metadata profiles, and other details are stored in files. In addition, for certain processes within WCC, each of the nodes needs to know what the other nodes are doing so they don’t step on each other. WCC keeps track of this through the use of lock files on the file system. Because of this, each node of the WCC must have access to the same file system just as they have access to the same database.
WCC uses its own locking mechanism using files, so it also needs to have access to those files without file attribute caching and without locking being done by the client (node). If one of the nodes accesses a certain status file and it happens to be cached, that node might attempt to run a process which another node is already working on. Or if a particular file is locked by one of the node clients, this could interfere with access by another node. Unfortunately, when disabling file attribute caching on the file share, this can impact performance. So it is important to only disable caching and locking on the particular folders which require it.
When configuring WebCenter Content after deploying the domain, it asks for 3 different directories: Content Server Instance Folder, Native File Repository Location, and Weblayout Folder. And starting in PS5, it now asks for the User Profile Folder.
Even if you plan on storing the content in the database, you still need to establish a Native File (Vault) and Weblayout directories. These will be used for handling temporary files, cached files, and files used to deliver the UI.
For these directories, the only folder which needs to have the file attribute caching and locking disabled is the ‘Content Server Instance Folder’. So when establishing this share through NFS or a clustered file system, be sure to specify those options. For instance, if creating the share through NFS, use the ‘noac’ and ‘nolock’ options for the mount options. For the other directories, caching and locking should be enabled to provide best performance to those locations.
These directory path configurations are contained within the <domain dir>\ucm\cs\bin\intradoc.cfg file:
#Server System PropertiesIDC_Id=UCM_server1
#Server Directory Variables
IdcHomeDir=/u01/fmw/Oracle_ECM1/ucm/idc/
FmwDomainConfigDir=/u01/fmw/user_projects/domains/base_domain/config/fmwconfig/
AppServerJavaHome=/u01/jdk/jdk1.6.0_22/jre/
AppServerJavaUse64Bit=true
IntradocDir=/mnt/share_no_cache/base_domain/ucm/cs/
VaultDir=/mnt/share_with_cache/ucm/cs/vault/
WeblayoutDir=/mnt/share_with_cache/ucm/cs/weblayout/
#Server Classpath variables
#Additional Variables
#NOTE: UserProfilesDir is only available in PS5 – 11.1.1.6.0UserProfilesDir=/mnt/share_with_cache/ucm/cs/data/users/profiles/
In addition to these folder configurations, it’s also recommended to move node-specific folders to local disk to avoid unnecessary traffic to the shared directory. So on each node, go to <domain dir>\ucm\cs\bin\intradoc.cfg and add these additional configuration entries:
VaultTempDir=<domain dir>/ucm/<cs>/vault/~temp/
TraceDirectory=<domain dir>/servers/<UCM_serverN>/logs/EventDirectory=<domain dir>/servers/<UCM_serverN>/logs/event/
And of course, don’t forget the cluster-specific configuration values to add as well. These can be added through Admin Server -> General Configuration -> Additional Configuration Variables or directly in the <IntradocDir>/config/config.cfg file:
ArchiverDoLocks=true
DisableSharedCacheChecking=true
ServiceAllowRetry=true (use only with Oracle RAC Database)PublishLockTimeout=300000 (time can vary depending on publishing time and number of nodes)
For additional information and details on clustering configuration, I highly recommend reviewing document [1209496.1] on the support site. In addition, there is a great step-by-step guide on setting up a WebCenter Content cluster [1359930.1].