Возврат с неудавшейся модернизации

В модернизацию вовлечены сложные операции, и оно может потерпеть неудачу. В этом разделе содержится руководство по возврату к предыдущей редакции OpenStack. Хотя возврат протестирован только на Ubuntu, другие дистрибутивы следуют аналогичной процедуре.

В этом разделе мы рассмотрим только самый безотлагательный случай: вы снесли службы управления промышленной установкой в рамках подготовки к модернизации, завершили часть процесса обновления, обнаружили одну или несколько проблем не встречавшиихся во время тестирования, и теперь вы должны вернуться к первоначальной среде в "заведомо хорошее" состояние. Убедитесь, что вы не делали никаких изменений состояния после попытки процесса модернизации: нет новых экземпляров, сетей, томов хранения, и таму подобного.

Чтобы успешно выполнить возврат вашей среды, в данном контексте необходимо выполнить следующие шаги:

  1. Возврат файлов конфигурации.

  2. Возврат баз данных.

  3. Возврат пакетов.

В инструкциях по модернизации, предусмотренных в предыдущих разделах, предполагается, что вы создали соответствующие резервные копии баз данных и конфигурационных файлов. Прочитайте этот раздел очень внимательно и убедитесь, что у вас есть необходимые резервные копии для восстановления. Из-за распределенности возврат обновления является сложным процессом, имеющий расположенность к затратам гораздо больших усилий на тестирование модернизаций, чем простые понижения уровня. Испорченные понижения уровня часто отнимают значительно больше усилий для устранения неисправности и, следует надеяться, решают такие разрушенные модернизации. Только вы можете взвесить риски попытки протолкнуть неудачное обновление вперед в сравненис с возвратом его назад. Как правило, возврат рассматривается как самый последний вариант.

Следующие шаги, описанные для Ubuntu были испробованы, по крайней мере, в одной промышленной среде, но они могут не работать для всех сред.

 

Для выполнения возврата с Havana на Grizzly

  1. Остановите все OpenStack службы.

  2. Скопируйте содержимое резервной копии настроек каталогов /etc/<service>.grizzly, которые вы создали в процессе обновления назад в /etc/<service>:

  3. Восстановите базы данных из файла резервной копии grizzly-db-backup.sql, который вы создали с помощью команды mysqldump в процессе обновления::

    # mysql -u root -p < grizzly-db-backup.sql

    Если вы создали эту резервную копию в соответствии с указаниями с помощью флага --add-drop-database, вы можете переходить к следующему шагу. Если вы опустили этот флаг, MySQL возвращает все таблицы, которые существовали в Grizzly, но не удаляет все таблицы, созданные в ходе миграции базы данных на Havana. В этом случае, вы должны вручную определить, какие таблицы необходимо пропустить, и удалить их, чтобы предотвратить проблемы с вашей следующей attempt модернизации.

  4. Понижение уровня пакетов OpenStack.

    [Предостережение]Предостережение

    Понижение уровня пакетов на сегодняшний день является самой сложной стадией; она сильно зависит от распределености и общего управления системой.

    1. Определите какие пакеты 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
      
      [Замечание]Замечание

      В зависимости от типа сервера, содержание и порядок вашего списка пакетов могут отличаться от данного примера.

    2. Вы можете определить версии пакетов для возврата с помощью команды 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, где это применимо.

    3. Воспользуйтесь командой apt-get install для установки определенных вами версий для каждого пакета, указав <package-name>=<version>. Сценарий из предыдущего шага удобно создает для вас список пар package=version:

      # apt-get install `cat openstack-grizzly-versions`

      Данный шаг завершает процедуру возврата. Вы должны удалить ваш репозиторий Havana и выполнить apt-get update для предотвращения случайных модернизаций пока вы не определите что явилось проблемой, побудившей вас выполнить возврат вашей среды.