Yes, heartbeat is running on OpenBSD, and there is also a port for it in the OpenBSD ports CVS tree. As the port was imported after the OpenBSD 4.2 release it is only available for OpenBSD-current installations. The actual heartbeat version of the port is 2.1.3.
The latest version of the port is 2.1.3. The port is tested to compile and run on i386, sparc and sparc64. Nevertheless, I also tested the port on OpenBSD 4.2 and 4.1, and needed only minor tweaks to the versions in the various *DEPENDS variables in the ports Makefile.
The Heartbeat port is divided into SUBPACKAGES. To the main package containing the main heartbeat stuff, there are a -gui and a -snmp subpackage.
This section will explain the main differences between Heartbeat on Linux and OpenBSD.
The heartbeat configuration is placed in and below: /etc/ha.cf.
The script to start heartbeat is placed in /etc/ha.d/init.d/heartbeat.sh
variable state files These files are kept below /var/lib/heartbeat
rest The rest of the files installed with the package are kept below /usr/local in the usual locations. Libraries and resource scripts are below /usr/local/lib, on any architecture.
The heartbeat user and group are called _heartbeat, following the OpenBSD user naming scheme, instead of using the hacluster:haclient combination. The standard user and group id is 596.
Due to the fact that OpenBSD doesn't use the SystemV style system startup, there aren't LSB scripts available. So far, three additional resource scripts, for the OpenBSD apache, and for openvpn, and for Asterisk/Callweaver are added to the port. Further the pgsql and mysql resource scripts are patched to provide sane default values for OpenBSD.
To be able to setup a multicast based cluster you have to make sure you enable multicast_host in /etc/rc.conf or better in /etc/rc.conf.local. Make sure every node in your cluster has multicast enabled, then this works well.
Setup of a cluster with communication based on broadcast does not work on OpenBSD. More on the reason about that can be found here: "Broadcast directive".
The test cluster is a funny mixture of the following hardware:
The version numbers of the port follow the official release version numbers. I try to update the port for interim releases too. Interim version have the added interim version number. Own additions/enhancements are maintained in the ports patchlevel p0.