Configuring Corosync

Posted on Tue 04 December 2012 in hints-and-kinks • 2 min read

You now need configure Corosync. The following example configuration file assumes that your cluster nodes have two network interfaces, using the 192.168.122.0/24 and 192.168.133.0/24 networks. You will need to adjust this to your own network configuration.

Set the contents of /etc/corosync/corosync.conf as follows:

compatibility: whitetank

totem {
        version: 2
        secauth: on
        threads: 0
        rrp_mode: active
        token: 10000
        interface {
                ringnumber: 0
                bindnetaddr: 192.168.122.0
                mcastaddr: 239.255.42.0
                mcastport: 5405
                ttl: 1
        }
        interface {
                ringnumber: 1
                bindnetaddr: 192.168.133.0
                mcastaddr: 239.255.42.1
                mcastport: 5405
                ttl: 1
        }
}

logging {
        fileline: off
        to_stderr: no
        to_logfile: no
        to_syslog: yes
        debug: off
        timestamp: on
        logger_subsys {
                subsys: AMF
                debug: off
        }
}

Also, create an authkey file for node authentication:

dd if=/dev/urandom of=/etc/corosync/authkey bs=128 count=1
chmod 0400 /etc/corosync/authkey

And create /etc/corosync/service.d/pacemaker with the following content:

service {
    name: pacemaker
    ver; 1
}

Finally, distribute the configuration across your cluster:

for n in bob charlie; do
  rsync -av /etc/corosync/* $n:/etc/corosync
done

And start Corosync on all cluster nodes:

service corosync start

Once Corosync has started on all nodes, you should be able to check its status with the corosync-cfgtool and corosync-objctl commands:

# corosync-cfgtool -s
Printing ring status.
Local node ID 1870309568
RING ID 0
    id  = 192.168.122.111
    status  = ring 0 active with no faults
RING ID 1
    id  = 192.168.133.111
    status  = ring 1 active with no faults

Both rings should be in the active with no faults state.

# corosync-objctl runtime.totem.pg.mrp.srp.members
runtime.totem.pg.mrp.srp.1870309568.ip=r(0) ip(192.168.122.111) r(1) ip(192.168.133.111) 
runtime.totem.pg.mrp.srp.1870309568.join_count=1
runtime.totem.pg.mrp.srp.1870309568.status=joined
runtime.totem.pg.mrp.srp.1887086784.ip=r(0) ip(192.168.122.112) r(1) ip(192.168.133.112) 
runtime.totem.pg.mrp.srp.1887086784.join_count=1
runtime.totem.pg.mrp.srp.1887086784.status=joined
runtime.totem.pg.mrp.srp.1903864000.ip=r(0) ip(192.168.122.113) r(1) ip(192.168.133.113) 
runtime.totem.pg.mrp.srp.1903864000.join_count=1
runtime.totem.pg.mrp.srp.1903864000.status=joined

All three nodes members should be in the membership with both of their interfaces, and their status should be joined.


This article originally appeared on the hastexo.com website (now defunct).