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.
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