Skip to main content
Version: 2.0

Create a volume mirror

Pre-task:

  • Make sure the two cluster has same user name
  • Make sure the two cluster has same project name
  • cluster1 - IP: 10.32.20.241
  • cluster2 - IP: 10.32.20.242

cluster1: CLI > cluster > check

cluster1:cluster> check
Service Status Report
ClusterLink ok [ link(v) ]
ClusterSettings ok [ etcd(v) ]
HaCluster ok [ hacluster(v) ]
MsgQueue ok [ rabbitmq(v) ]
IaasDb ok [ mysql(v) ]
VirtualIp ok [ vip(v) haproxy_ha(v) ]
Storage ok [ ceph(v) ceph_mon(v) ceph_mgr(v) ceph_mds(v) ceph_osd(v) ceph_rgw(v) rbd_target(v) ]
ApiService ok [ haproxy(v) httpd(v) lmi(v) memcache(v) ]
SingleSignOn ok [ keycloak(v) ]
Compute ok [ nova(v) ]
Baremetal ok [ ironic(v) ]
Network ok [ neutron(v) ]
Image ok [ glance(v) ]
BlockStor ok [ cinder(v) ]
FileStor ok [ manila(v) ]
ObjectStor ok [ swift(v) ]
Orchestration ok [ heat(v) ]
LBaaS ok [ octavia(v) ]
DNSaaS ok [ designate(v) ]
K8SaaS ok [ k3s(v) rancher(v) ]
InstanceHa ok [ masakari(v) ]
DisasterRecovery ok [ freezer(v) ]
BusinessLogic ok [ mistral(v) murano(v) cloudkitty(v) ]
DataPipe ok [ zookeeper(v) kafka(v) ]
Metrics ok [ monasca(v) telegraf(v) grafana(v) ]
LogAnalytics ok [ filebeat(v) auditbeat(v) logstash(v) es(v) kibana(v) ]
Notifications ok [ influxdb(v) kapacitor(v) ]

cluster2: CLI > cluster > check

cluster2:cluster> check
Service Status Report
ClusterLink ok [ link(v) ]
ClusterSettings ok [ etcd(v) ]
HaCluster ok [ hacluster(v) ]
MsgQueue ok [ rabbitmq(v) ]
IaasDb ok [ mysql(v) ]
VirtualIp ok [ vip(v) haproxy_ha(v) ]
Storage ok [ ceph(v) ceph_mon(v) ceph_mgr(v) ceph_mds(v) ceph_osd(v) ceph_rgw(v) rbd_target(v) ]
ApiService ok [ haproxy(v) httpd(v) lmi(v) memcache(v) ]
SingleSignOn ok [ keycloak(v) ]
Compute ok [ nova(v) ]
Baremetal ok [ ironic(v) ]
Network ok [ neutron(v) ]
Image ok [ glance(v) ]
BlockStor ok [ cinder(v) ]
FileStor ok [ manila(v) ]
ObjectStor ok [ swift(v) ]
Orchestration ok [ heat(v) ]
LBaaS ok [ octavia(v) ]
DNSaaS ok [ designate(v) ]
K8SaaS ok [ k3s(v) rancher(v) ]
InstanceHa ok [ masakari(v) ]
DisasterRecovery ok [ freezer(v) ]
BusinessLogic ok [ mistral(v) murano(v) cloudkitty(v) ]
DataPipe ok [ zookeeper(v) kafka(v) ]
Metrics ok [ monasca(v) telegraf(v) grafana(v) ]
LogAnalytics ok [ filebeat(v) auditbeat(v) logstash(v) es(v) kibana(v) ]
Notifications ok [ influxdb(v) kapacitor(v) ]

Launch three VM on project admin of cluster1

/assets/volumes/vm-1.png

Enable storage mirroring

cluster1(primary)

CLI > storage > mirror > site

cluster1> storage mirror
cluster1:mirror> site
Select action:
1: Configure
2: Add Site
3: Delete Site
4: Update Site
Enter index: 1
Enable the site:
1: Enabled
2: Disabled
Enter index: 1
Enter site name (required): primary
Applying policy changes.
Policy changes were successfully applied.

cluster2(secondary)

CLI > storage > mirror > site

cluster2> storage mirror
cluster2:mirror> site
Select action:
1: Configure
2: Add Site
3: Delete Site
4: Update Site
Enter index: 1
Enable the site:
1: Enabled
2: Disabled
Enter index: 1
Enter site name (required): secondary
Applying policy changes.
Policy changes were successfully applied.

Config remote peer

cluster1(primary)

CLI > storage > mirror > site

cluster1:mirror> site
Select action:
1: Configure
2: Add Site
3: Delete Site
4: Update Site
Enter index: 2
Enter site name (required): secondary
Enter IP address (required): 10.32.20.242
Enter remote secret (required): admin
Applying policy changes.
Policy changes were successfully applied.
cluster1:mirror> list
enabled: yes
site name: primary

peers:
enabled peer name ip address
---------------------------------------------------------------
[x] secondary 10.32.20.242

rules:
enabled volume
---------------------------------------------------------------

cluster2(secondary)

CLI > storage > mirror > site

cluster2:mirror> site
Select action:
1: Configure
2: Add Site
3: Delete Site
4: Update Site
Enter index: 2
Enter site name (required): primary
Enter IP address (required): 10.32.20.241
Enter remote secret (required): admin
Applying policy changes.
Policy changes were successfully applied.
cluster2:mirror> list
enabled: yes
site name: secondary

peers:
enabled peer name ip address
---------------------------------------------------------------
[x] primary 10.32.20.241

rules:
enabled volume
---------------------------------------------------------------

Select instance volume on cluster1 for sync-ing to all remote peers

cluster1:mirror> rule
Select action:
1: Add
2: Delete
3: Update
Enter index: 1
Select domain:
1: default
Enter index: 1
Select tenant:
1: admin
Enter index: 1
Select volume:
1: volume: 2f0ee00a-00ca-4ab3-826d-3c143fee1f1e, status: in-use, size: 1GB, attach: /dev/sda on cirros-a-2
2: volume: 06ac175a-bc8d-480c-b8e0-200d1567b80a, status: in-use, size: 1GB, attach: /dev/sda on cirros-a-3
3: volume: ba0867af-caef-4441-b24a-58b8a55360e4, status: in-use, size: 1GB, attach: /dev/sda on cirros-a-1
Enter index: 1
Apply the changes?
Enter 'YES' to confirm: YES
Applying policy changes.
Policy changes were successfully applied.

Watch sync status until done on cluster1(primary)

CLI > storage > mirror > status

cluster1:mirror> status
updated: 16:52:11
primary-site: OK
volume primary synced state
-----------------------------------------------------------------------------
volume-2f0ee00a-00ca-4ab3-826d-3c143fee1f1e yes n/a up+stopped

cluster1:mirror> list
enabled: yes
site name: primary

peers:
enabled peer name ip address
---------------------------------------------------------------
[x] secondary 10.32.20.242

rules:
enabled volume
---------------------------------------------------------------
[x] 2f0ee00a-00ca-4ab3-826d-3c143fee1f1e

Watch sync status until done on cluster2(secondary)

CLI > storage > mirror > status

cluster2:mirror> status
updated: 16:52:17
secondary-site: WARNING
volume primary synced state
-----------------------------------------------------------------------------
volume-2f0ee00a-00ca-4ab3-826d-3c143fee1f1e no no up+syncing

cluster2:mirror> status
updated: 16:52:28
secondary-site: OK
volume primary synced state
-----------------------------------------------------------------------------
volume-2f0ee00a-00ca-4ab3-826d-3c143fee1f1e no no up+replaying

Verify a new volume entry is automatically created on cluster2

/assets/volumes/vm-2.png

Make some changes on the mirroring volume on cirros-a-2 of cluster1

/assets/volumes/vm-3.png

Check cluster2(secondary) status for making sure the data has been synced

cluster2:mirror> status
updated: 16:56:33
secondary-site: OK
volume primary synced state
-----------------------------------------------------------------------------
volume-2f0ee00a-00ca-4ab3-826d-3c143fee1f1e no yes up+replaying

Demote images on cluster1(primary)

CLI > storage > mirror > demote

cluster1:mirror> demote
1: normal
2: force
Enter index: 1
Image demoted to non-primary

Promote images on cluster2(secondary)

CLI > storage > mirror > promote

cluster2:mirror> promote
1: normal
2: force
Enter index: 1
Image promoted to primary

Check mirroring status on cluster1(primary)

CLI > storage > mirror > status

cluster1:mirror> status
updated: 16:57:46
primary-site: WARNING
volume primary synced state
-----------------------------------------------------------------------------
volume-2f0ee00a-00ca-4ab3-826d-3c143fee1f1e no no up+unknown

cluster1:mirror> status
updated: 16:58:09
primary-site: OK
volume primary synced state
-----------------------------------------------------------------------------
volume-2f0ee00a-00ca-4ab3-826d-3c143fee1f1e no no up+replaying

Check mirroring status on cluster2(secondary)

CLI > storage > mirror > status

cluster2:mirror> status
updated: 16:57:48
secondary-site: WARNING
volume primary synced state
-----------------------------------------------------------------------------
volume-2f0ee00a-00ca-4ab3-826d-3c143fee1f1e yes n/a up+unknown

cluster2:mirror> status
updated: 16:58:05
secondary-site: OK
volume primary synced state
-----------------------------------------------------------------------------
volume-2f0ee00a-00ca-4ab3-826d-3c143fee1f1e yes n/a up+stopped

Call up a VM attached to the mirrored image on cluster2(secondary)

/assets/volumes/vm-4.png

Call up a VM attached to the mirrored image on cluster2(secondary)

/assets/volumes/vm-5.png