В модернизацию вовлечены сложные операции, и оно может потерпеть неудачу. В этом разделе содержится руководство по возврату к предыдущей редакции OpenStack. Хотя возврат протестирован только на Ubuntu, другие дистрибутивы следуют аналогичной процедуре.
В этом разделе мы рассмотрим только самый безотлагательный случай: вы снесли службы управления промышленной установкой в рамках подготовки к модернизации, завершили часть процесса обновления, обнаружили одну или несколько проблем не встречавшиихся во время тестирования, и теперь вы должны вернуться к первоначальной среде в "заведомо хорошее" состояние. Убедитесь, что вы не делали никаких изменений состояния после попытки процесса модернизации: нет новых экземпляров, сетей, томов хранения, и таму подобного.
Чтобы успешно выполнить возврат вашей среды, в данном контексте необходимо выполнить следующие шаги:
-
Возврат файлов конфигурации.
-
Возврат баз данных.
-
Возврат пакетов.
В инструкциях по модернизации, предусмотренных в предыдущих разделах, предполагается, что вы создали соответствующие резервные копии баз данных и конфигурационных файлов. Прочитайте этот раздел очень внимательно и убедитесь, что у вас есть необходимые резервные копии для восстановления. Из-за распределенности возврат обновления является сложным процессом, имеющий расположенность к затратам гораздо больших усилий на тестирование модернизаций, чем простые понижения уровня. Испорченные понижения уровня часто отнимают значительно больше усилий для устранения неисправности и, следует надеяться, решают такие разрушенные модернизации. Только вы можете взвесить риски попытки протолкнуть неудачное обновление вперед в сравненис с возвратом его назад. Как правило, возврат рассматривается как самый последний вариант.
Следующие шаги, описанные для Ubuntu были испробованы, по крайней мере, в одной промышленной среде, но они могут не работать для всех сред.
Для выполнения возврата с Havana на Grizzly
-
Остановите все OpenStack службы.
-
Скопируйте содержимое резервной копии настроек каталогов
/etc/<service>.grizzly
, которые вы создали в процессе обновления назад в/etc/<service>
: -
Восстановите базы данных из файла резервной копии
grizzly-db-backup.sql
, который вы создали с помощью команды mysqldump в процессе обновления::# mysql -u root -p < grizzly-db-backup.sql
Если вы создали эту резервную копию в соответствии с указаниями с помощью флага
--add-drop-database
, вы можете переходить к следующему шагу. Если вы опустили этот флаг, MySQL возвращает все таблицы, которые существовали в Grizzly, но не удаляет все таблицы, созданные в ходе миграции базы данных на Havana. В этом случае, вы должны вручную определить, какие таблицы необходимо пропустить, и удалить их, чтобы предотвратить проблемы с вашей следующей attempt модернизации. -
Понижение уровня пакетов OpenStack.
Предостережение Понижение уровня пакетов на сегодняшний день является самой сложной стадией; она сильно зависит от распределености и общего управления системой.
-
Определите какие пакеты OpenStack установлены в вашей системе. Используйте команду dpkg --get-selections. Фильтруйте на наличие пакетов OpenStack, фильтруйте снова, пропуская пакеты, явно помеченные в состояние
deinstall
, и сохраните конечный результат в файл. Например, следующая команда охватывает контроллер узла с keystone, glance, nova, neutron и cinder:# dpkg --get-selections | grep -e keystone -e glance -e nova -e neutron \ -e cinder | grep -v deinstall | tee openstack-selections cinder-api install cinder-common install cinder-scheduler install cinder-volume install glance install glance-api install glance-common install glance-registry install neutron-common install neutron-dhcp-agent install neutron-l3-agent install neutron-lbaas-agent install neutron-metadata-agent install neutron-plugin-openvswitch install neutron-plugin-openvswitch-agent install neutron-server install nova-api install nova-cert install nova-common install nova-conductor install nova-consoleauth install nova-novncproxy install nova-objectstore install nova-scheduler install python-cinder install python-cinderclient install python-glance install python-glanceclient install python-keystone install python-keystoneclient install python-neutron install python-neutronclient install python-nova install python-novaclient install
Замечание В зависимости от типа сервера, содержание и порядок вашего списка пакетов могут отличаться от данного примера.
-
Вы можете определить версии пакетов для возврата с помощью команды apt-cache policy. Если вы удалили репозитории Grizzly, необходимо сначала повторно установить их и запустить apt-get update:
# apt-cache policy nova-common nova-common: Installed: 1:2013.2-0ubuntu1~cloud0 Candidate: 1:2013.2-0ubuntu1~cloud0 Version table: *** 1:2013.2-0ubuntu1~cloud0 0 500 http://ubuntu-cloud.archive.canonical.com/ubuntu/ precise-updates/havana/main amd64 Packages 100 /var/lib/dpkg/status 1:2013.1.4-0ubuntu1~cloud0 0 500 http://ubuntu-cloud.archive.canonical.com/ubuntu/ precise-updates/grizzly/main amd64 Packages 2012.1.3+stable-20130423-e52e6912-0ubuntu1.2 0 500 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages 500 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 Packages 2012.1-0ubuntu2 0 500 http://us.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages
Это сообщает нам установленную версию пакета, новейшие версии кандидата, а также все версии в репозитории, который содержит каждую из этих версий. В данном случае найдите подходящую version—
1:2013.1.4-0ubuntu1~cloud0
Grizzly. Процесс ручного сбора по этому списку пакетов довольно утомителен и расположен к наличию ошибок. Вы должны рассмотреть вопрос об использовании следующего сценария для помощи в данном процессе:# for i in `cut -f 1 openstack-selections | sed 's/neutron/quantum/;'`; do echo -n $i ;apt-cache policy $i | grep -B 1 grizzly | grep -v Packages | awk '{print "="$1}';done | tr '\n' ' ' | tee openstack-grizzly-versions cinder-api=1:2013.1.4-0ubuntu1~cloud0 cinder-common=1:2013.1.4-0ubuntu1~cloud0 cinder-scheduler=1:2013.1.4-0ubuntu1~cloud0 cinder-volume=1:2013.1.4-0ubuntu1~cloud0 glance=1:2013.1.4-0ubuntu1~cloud0 glance-api=1:2013.1.4-0ubuntu1~cloud0 glance-common=1:2013.1.4-0ubuntu1~cloud0 glance-registry=1:2013.1.4-0ubuntu1~cloud0 quantum-common=1:2013.1.4-0ubuntu1~cloud0 quantum-dhcp-agent=1:2013.1.4-0ubuntu1~cloud0 quantum-l3-agent=1:2013.1.4-0ubuntu1~cloud0 quantum-lbaas-agent=1:2013.1.4-0ubuntu1~cloud0 quantum-metadata-agent=1:2013.1.4-0ubuntu1~cloud0 quantum-plugin-openvswitch=1:2013.1.4-0ubuntu1~cloud0 quantum-plugin-openvswitch-agent=1:2013.1.4-0ubuntu1~cloud0 quantum-server=1:2013.1.4-0ubuntu1~cloud0 nova-api=1:2013.1.4-0ubuntu1~cloud0 nova-cert=1:2013.1.4-0ubuntu1~cloud0 nova-common=1:2013.1.4-0ubuntu1~cloud0 nova-conductor=1:2013.1.4-0ubuntu1~cloud0 nova-consoleauth=1:2013.1.4-0ubuntu1~cloud0 nova-novncproxy=1:2013.1.4-0ubuntu1~cloud0 nova-objectstore=1:2013.1.4-0ubuntu1~cloud0 nova-scheduler=1:2013.1.4-0ubuntu1~cloud0 python-cinder=1:2013.1.4-0ubuntu1~cloud0 python-cinderclient=1:1.0.3-0ubuntu1~cloud0 python-glance=1:2013.1.4-0ubuntu1~cloud0 python-glanceclient=1:0.9.0-0ubuntu1.2~cloud0 python-quantum=1:2013.1.4-0ubuntu1~cloud0 python-quantumclient=1:2.2.0-0ubuntu1~cloud0 python-nova=1:2013.1.4-0ubuntu1~cloud0 python-novaclient=1:2.13.0-0ubuntu1~cloud0
Замечание Если вы решите продолжить этот шаг вручную, не забудьте изменить
neutron
наquantum
, где это применимо. -
Воспользуйтесь командой apt-get install для установки определенных вами версий для каждого пакета, указав
<package-name>=<version>
. Сценарий из предыдущего шага удобно создает для вас список парpackage=version
:# apt-get install `cat openstack-grizzly-versions`
Данный шаг завершает процедуру возврата. Вы должны удалить ваш репозиторий Havana и выполнить apt-get update для предотвращения случайных модернизаций пока вы не определите что явилось проблемой, побудившей вас выполнить возврат вашей среды.
-