Hello, 

This spec[1] was to expose quiesce/unquiesce API, which had been approved in 
Mitaka, but code not merged in time. 

The major consideration for this spec is to enable application level 
consistency snapshot, so that the backup of the snapshot in the remote site 
could be recovered correctly in case of disaster recovery. Currently there is 
only single VM level consistency snapshot( through create image from VM ), but 
it's not enough.

First, the disaster recovery is mainly the action in the infrastructure level 
in case of catastrophic failures (flood, earthquake, propagating software 
fault), the cloud service provider recover the infrastructure and the 
applications without the help from each application owner: you can not just 
recover the OpenStack, then send notification to all applications' owners, to 
ask them to restore their applications by their own. As the cloud service 
provider, they should be responsible for the infrastructure and application 
recovery in case of disaster.

The second, this requirement is not to make OpenStack bend over NFV, although 
this requirement was asked from OPNFV at first, it's general requirement to 
have application level consistency snapshot. For example, just using OpenStack 
itself as the application running in the cloud, we can deploy different DB for 
different service, i.e. Nova has its own mysql server nova-db-VM, Neutron has 
its own mysql server neutron-db-VM. In fact, I have seen in some production to 
divide the db for Nova/Cinder/Neutron to different DB server for scalability 
purpose. We know that there are interaction between Nova and Neutron when 
booting a new VM, during the VM booting period, some data will be in the memory 
cache of the nova-db-VM/neutron-db-VM, if we just create snapshot of the 
volumes of nova-db-VM/neutron-db-VM in Cinder, the data which has not been 
flushed to the disk will not be in the snapshot of the volumes. We cann't make 
sure when these data in the memory cache will be flushed, then there is
  random possibility that the data in the snapshot is not consistent as what 
happened as in the virtual machines of nova-db-VM/neutron-db-VM.In this case, 
Nova/Neutron may boot in the disaster recovery site successfully, but some port 
information may be crushed for not flushed into the neutron-db-VM when doing 
snapshot, and in the severe situation, even the VM may not be able to recover 
successfully to run. Although there is one project called Dragon[2], Dragon 
can't guarantee the consistency of the application snapshot too through 
OpenStack API.

The third, for those applications which can decide the data and checkpoint 
should be replicated to disaster recovery site, this is the third option 
discussed and described in our analysis: 
https://git.opnfv.org/cgit/multisite/tree/docs/requirements/multisite-vnf-gr-requirement.rst.
 But unfortunately in Cinder, after the volume replication V2.1 is developed, 
the tenant granularity volume replication is still being discussed, and still 
not on single volume level. And just like what have mentioned in the first 
point, both application level and infrastructure level are needed, for you 
can't only expect that asking each application owners to do recovery after 
disaster recovery of a site's OpenStack: applications usually can deal with the 
data generated by it, but for the configuration change's protection, it's out 
of scope of application. There are several options for disaster recovery, but 
doesn't mean one option can fit all.

There are several -1 for this re-proposed spec which had been approved in 
Mitaka, so the explanation is sent in the mail-list for discussion. If someone 
can provide other way to guarantee application level snapshot for disaster 
recovery purpose, it's also welcome.

[1] Re-Propose Expose quiesce/unquiesce API:  
https://review.openstack.org/#/c/295595/
[2] Dragon: 
https://github.com/os-cloud-storage/openstack-workload-disaster-recovery

Best Regards
Chaoyi Huang ( Joe Huang )
__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: [email protected]?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to