o2cb is the default cluster stack for the OCFS2 file system. It includes a node manager (o2nm) to keep track of the nodes in the cluster, a heartbeat agent (o2hb) to detect live nodes, a network agent (o2net) for intra-cluster node communication and a distributed lock manager (o2dlm) to keep track of lock resources. All these components are in-kernel. It also includes an in-memory file system, dlmfs, to allow userspace to access the in-kernel dlm.
This cluster stack has two configuration files, namely, /etc/ocfs2/cluster.conf and /etc/sysconfig/o2cb. Whereas the former keeps track of the cluster layout, the latter keeps track of the cluster timeouts. Both files are only read when the cluster is brought online. Values in use by the online cluster can be perused in the /sys/kernel/config/cluster directory structure.
The cluster layout is specified in /etc/ocfs2/cluster.conf. While it is easier to populate and propagate this configuration file using ocfs2console(8), one can also do it by manually as long as care is taken to format the file correctly.
While the console utility is intuitive to use, there are few points to keep in mind.
1. The node name needs to match the hostname. It does not need to include the domain name. For example, appserver.oracle.com can be appserver.
2. The IP address need not be the one associated with that hostname. As in, any valid IP address on that node can be used. O2CB will not attempt to match the node name (hostname) with the specified IP address.
For best performance, use of a private interconnect (lower latency) is recommended.
The cluster.conf file is in a stanza format with two types of stanzas, namely, cluster and node. A typical cluster.conf will have one cluster stanza and multiple node stanzas.
The cluster stanza has two parameters:
The node stanza has five parameters:
Users populating cluster.conf manually should follow the format strictly. As in, stanza header should start at the first column and end with a colon, stanza parameters should start after a tab, a blank line should demarcate each stanza and care taken to avoid stray whitespaces.
The O2CB cluster timeouts are specified in /etc/sysconfig/o2cb and can be configured using the o2cb init script.
These timeouts are used by the O2CB clusterstack to determine whether a node is dead or alive. While the use of default values is recommended, users can experiment with other values if the defaults are causing spurious fencing.
The cluster timeouts are:
O2CB_HEARTBEAT_THRESHOLD = (((timeout in seconds) / 2) + 1)
For e.g., to specify a 60 sec timeout, set it to 31. For 120 secs, set it to 61. The default for this timeout is 60 secs (O2CB_HEARTBEAT_THRESHOLD = 31).
cluster: node_count = 3 name = webcluster node: ip_port = 7777 ip_address = 192.168.0.107 number = 7 name = node7 cluster = webcluster node: ip_port = 7777 ip_address = 192.168.0.106 number = 6 name = node6 cluster = webcluster node: ip_port = 7777 ip_address = 192.168.0.110 number = 10 name = node10 cluster = webcluster