diff --git a/devstack/lib/cephadm b/devstack/lib/cephadm index aeca9292..c61cd990 100755 --- a/devstack/lib/cephadm +++ b/devstack/lib/cephadm @@ -472,6 +472,26 @@ function configure_rgw_ceph_section { done } +# Deploy rbd-mirror on the current site +# +# Note: +# +# One-way Replication +# - When data is mirrored from a primary cluster to a secondary cluster, +# the rbd-mirror daemon runs only on the secondary cluster. +# +# Two-way Replication +# - When data is mirrored from a primary cluster to a secondary cluster, +# but data can be promoted/demoted (switching the role of primary and +# secondary cluster), the rbd-mirror daemon runs on both clusters. + +function rbd_mirror { + + $SUDO "$CEPHADM" shell --fsid "$FSID" --config "$CEPH_CONFIG" \ + --keyring $CEPH_KEYRING -- ceph orch apply rbd-mirror \ + "--placement=$HOSTNAME count:1" +} + # Install ceph: add RGW function rgw { configure_ceph_embedded_rgw @@ -517,6 +537,10 @@ function enable_services { echo "[CEPHADM] Deploying RGW on node $HOSTNAME" rgw ;; + rbdmirror|RBDMIRROR) + echo "[CEPHADM] Deploying RBD-MIRROR on node $HOSTNAME" + rbd_mirror + ;; esac done } @@ -734,6 +758,8 @@ function configure_ceph { [ "$ENABLE_CEPH_RGW" == "True" ] && SERVICES+=('rgw') + [ "$ENABLE_CEPH_RBD_MIRROR" == "True" ] && SERVICES+=('rbdmirror') + enable_services if [[ "$REMOTE_CEPH" = "False" ]]; then add_pools diff --git a/devstack/override-defaults b/devstack/override-defaults index 9ec4d0e4..5c6340e9 100644 --- a/devstack/override-defaults +++ b/devstack/override-defaults @@ -7,6 +7,7 @@ ENABLE_CEPH_MANILA=$(trueorfalse True ENABLE_CEPH_MANILA) ENABLE_CEPH_NOVA=$(trueorfalse True ENABLE_CEPH_NOVA) # Do not enable RGW by default as RGW is not tested in upstream CI. ENABLE_CEPH_RGW=$(trueorfalse False ENABLE_CEPH_RGW) +ENABLE_CEPH_RBD_MIRROR=$(trueorfalse False ENABLE_CEPH_RBD_MIRROR) CINDER_DRIVER=${CINDER_DRIVER:-ceph} CINDER_ENABLED_BACKENDS=${CINDER_ENABLED_BACKENDS:-ceph}