What is Redundant Ring Protocol
Redundant Ring Protocol (RRP) is a communication protocol where corosync can use two separate networks to establish connections between cluster nodes. When one network fails, communication can continue over the second network. RRP is not a replacement for network channel bonding; instead, bonded interfaces can be used to connect to the two rings for further redundancy.
Where bonded interfaces protect against hardware failures (NIC, network cable, switch), RRP adds protection against larger infrastructure collapses, such as a BGP storm taking out an entire network.
Redundant Ring Protocol support limitations
In Red Hat Enterprise Linux 7 there are a number of support limitations when using RRP:
- RRP supports multicast and udpu transports. broadcast is not supported.
- RRP is only supported on Ethernet networks. IP over lnfiniBand (IPolB) is not supported.
- RRP only supports a maximum of two rings, the clusternode name and the alt name.
- RRP is supported on bonded network interfaces, but teaming using teamd on Red Hat Enterprise Linux 7 is not supported. Supported bonding modes on Red Hat Enterprise Linux 7 are 0 (balance-rr), 1 (active-backup), and 2 (balance-xor).
- Services using DLM are not supported. This includes clvmd, cmirror, GFS2, and rgmanager.
Redundant ring configuration options
RRP has one main configuration option, rrp_mode. rrp_mode can be set to one of the following three settings:
- none: No RRP is used. This is the default when using only one ring, and cannot be used with two rings.
- active: Active replication offers slightly lower latencies, combined with a slower total throughput.
- passive: Passive replication may double the total speed of the totem protocol, at the cost of increased latency.
Creating a new cluster with RRP
When creating a new cluster, RRP can be activated by specifying two host names per node, separated by a comma: the nodename, and the altname. When a cluster is created in this way, RRP will be activated automatically. A mode can be chose by adding the –rrpmode active|passive option.
# pcs cluster setup --start --enable \ > --name rrpcluster \ > nodelfqdn,node1alt \ > node2fqdn,node2alt \ > node3fqdn,node3alt \ > --rrpmode active
Updating an existing cluster to use RRP
Updating an existing cluster to use RRP will require the entire cluster to be stopped. Use the following procedure to update an existing cluster:
1. Stop the entire cluster.
# pcs cluster stop --all
2. Update /etc/corosync/corosync.conf on one node with the following:
- In the totem section, add a line for rrp_mode: active or rrp_mode: passive.
- For each node block inside the nodelist block, add a line for ring1_addr:altnamefqdn.
3. Sync the updated corosync.conf to all other cluster nodes from the node where it was updated.
# pcs cluster sync
4. Start the cluster.
# pcs cluster start --all