In-service Upgrade and HA

When we use the ConfD High Availability functionality, it is critical that all nodes in the HA cluster agree on the data model used. For this reason we can not do in-service upgrade on a ConfD instance that is part of a HA cluster. If ConfD is a HA slave, or a HA master with connected slaves, maapi_init_upgrade() will fail with confd_errno CONFD_ERR_HA_WITH_UPGRADE. Conversely, when an in-service up-grade is in progress, calling confd_ha_beslave() will also result in this error, and connections from slaves will be rejected.

To do the in-service upgrade on a HA cluster, we must thus use “rolling upgrade”:

  1. Disconnect one of the slaves from the cluster by calling confd_ha_benone().
  2. Upgrade the disconnected slave as described above.
  3. Tell the upgraded slave to become master by calling confd_ha_bemaster().
  4. Upgrade the remaining nodes in the cluster one by one, telling each to connect as slave to the upgraded master by calling confd_ha_beslave() when the upgrade is done.

    Alternatively, since the HA configuration should be able to handle that a node is stopped and restarted without service interruption, we may simply use the upgrade method described in the CDB chapter in the ConfD User Guide for the “rolling upgrade”.