Как выполнить модернизацию с Havana на Icehouse—Ubuntu

В данном разделе мы предполагаем, что вы начинаете с архитектурой, представленной в Руководстве по установке OpenStack и выполняете модернизацию для той же архитектуры Icehouse. Все узлы должны выполнять Ubuntu 12.04 LTS с ядром Linux 3.11, а также самые последние установленные и работающие пакеты Havana. В данном разделе в первую очередь обсуждаются службы ядра OpenStack, такие, как служба идентификации (keystone), служба образов (glance), вычислительные ресурсы (nova), сетевые ресурсы (neutron), блочные хранилища (cinder), а также инструментальную панель. Сетевая модернизация включает также преобразование от подключаемого модуля Open vSwitch (OVS) к подключаемому модулю 2 уровня (M2). Данный раздел не содержит описания процесса модернизации с Ubuntu 12.04 LTS на Ubuntu 14.04 LTS.

 Воздействие на пользователей

Процесс модернизации прерывает управление вашей средой, в том числе через инструментальную панель. Если вы правильно подготовитесь к данной модернизации, экземпляры владельцев нормально продолжат свою работу. Однако экземпляры могут испытывать периодические разъединения сети в процессе перестройки сетевой службой инфраструктуры виртуальной сети.

 Анализ модернизации

Перед выполнением модернизации всегда просматривайте замечания к редакции Icehouse для ознакомления с новой доступной функциональностью, которую, возможно, вы допустите, при этом устаревшие свойства вы должны отключить.

 Выполнение резервного копирования

Сохраните файлы настройки на всех узлах:

# for i in keystone glance nova cinder neutron openstack-dashboard; \
  do mkdir $i-havana; \
  done
# for i in keystone glance nova cinder neutron openstack-dashboard; \
  do cp -r /etc/$i/* $i-havana/; \
  done
[Замечание]Замечание

Вы можете изменить данный пример сценария на каждом узле для обработки различных служб.

Выполните резервное копирование всех баз данных на контроллере:

# mysqldump -u root -p --opt --add-drop-database --all-databases > havana-db-backup.sql
[Замечание]Замечание

Хотя это не является обязательным, вы должны рассмотреть возможность модернизации настроек вашего сервера MySQL, как это описано в разделе установки контроллера MySQL Руководства по установке OpenStack.

 Управление репозиториями

Удалите репозиторий для пакетов Havana на всех узлах и добавьте репозиторий для пакетов Icehouse:

# apt-add-repository -r cloud-archive:havana
# apt-add-repository cloud-archive:icehouse
[Предостережение]Предостережение

Запретите все автоматические обновления пакетов.

 Замечания по модернизации

  • Запретите инъекцию файла Compute:

    Согласно Замечаниям к редакции Icehouse, редакция Icehouse по умолчанию запрещает инъекцию файлов.

    Если вы планируете выполнение развертывания Icehouse в несколько этапов, на всех остальных узлах, остающихся с редакцией Havana вам необходимо запретить инъекцию файлов.

    Измените файл /etc/nova/nova-compute.conf:

    [libvirt]
    ...
    libvirt_inject_partition = -2
  • Преобразование от подключаемого модуля OVS к подключаемому модулю ML2:

    Вы должны преобразовать настройки для вашей среды, содержащиеся в файлах /etc/neutron/neutron.conf и /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini с OVS к ML2. Например, Руководство по установке OpenStack содержит настройку подключаемого модуля ML2 с применением туннелей GRE.

    Сохраните пакеты подключаемыого модуля OVS и файлов настройки пока вы не проверите модернизацию.

 Модернизация узла контроллера

Модернизируйте пакеты на узле контроллера до Icehouse следующим образом:

# apt-get update
# apt-get dist-upgrade
[Замечание]Замечание

В зависимости от особенностей настройки, выполнение dist-upgrade должно перезапускать дополнительные для вашей среды OpenStack службы. Например, если вы используете Open-iSCSI для томов блочных хранилищ, и модернизация содержит новый пакет open-scsi, администратор пакетов перезапускает службы Open-iSCSI, что может привести к отсоединению томов от ваших пользователей.

Администратор пакетов выдает вам приглашение для модернизации различных файлов настройки. Откажитесь от данных изменений. Администратор пакетов добавит .dpkg-dist к новым версиям существующих файлов настройки. Вы должны проанализировать принятые соглашения, связанные с более новыми файлами настройки и объедините их с существующими файлами настройки после завершения процесса модернизации. Вы можете найти более новые версии существующих файлов настройки следующей командой:

# find /etc -name *.dpkg-dist

 Модернизация каждой службы

Для выполнения процедуры модернизации для каждой службы обычно требуется, чтобы вы остановили ее, выполнили команду синхронизации базы данных и запустили службу для применения новых настроек. Для данной процедуры вы должны иметь привилегии администратора. Некоторые службы требуют дополнительные этапы.

  • Идентификация OpenStack:

    Модернизируйте файл настройки для совместимости с Icehouse.

    Измените файл /etc/keystone/keystone.conf:

    Добавьте раздел [database].

    Переместите ключ connection из раздела [sql] в раздел [database].

    Остановите службы, модернизируйте базу данных и повторно стартуйте службы.

    # service keystone stop
    # keystone-manage token_flush
    # keystone-manage db_sync
    # service keystone start
  • Служба образов OpenStack:

    Перед модернизацией базы данных службы образов вы должны преобразовать набор символов для каждой таблицы на UTF-8.

    Воспользуйтесь клиентом MySQL для выполнения следующих команд:

    # mysql -u root -p
    mysql> SET foreign_key_checks = 0;
    mysql> ALTER TABLE glance.image_locations CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE glance.image_members CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE glance.image_properties CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE glance.image_tags CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE glance.images CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE glance.migrate_version CONVERT TO CHARACTER SET 'utf8';
    mysql> SET foreign_key_checks = 1;
    mysql> exit
    [Замечание]Замечание

    Ваша среда может также содержать другие или дополнительные таблицы, которые вы тоже должны преобразовать в UTF-8 при помощи аналогичных команд.

    Модернизируйте конфигурацию для совместимости с Icehouse.

    Измените файлы /etc/glance/glance-api.conf и /etc/glance/glance-registry.conf:

    Добавьте раздел [database].

    Переименуйте ключ sql_connection в connection и переместите его в раздел [database].

    Измените файл /etc/glance/glance-api.conf:

    Добавьте ключи посредника сообщений RabbitMQ в раздел [DEFAULT].

    Замените RABBIT_PASS паролем, который вы выбрали для учетной записи guest в RabbitMQ.

    [DEFAULT]
    ...
    rpc_backend = rabbit
    rabbit_host = controller
    rabbit_password = RABBIT_PASS

    Остановите службы, модернизируйте базу данных и повторно запустите службы:

    # service glance-api stop
    # service glance-registry stop
    # glance-manage db_sync
    # service glance-api start
    # service glance-registry start
  • Вычислительная среда OpenStack:

    Модернизируйте конфигурацию для совместимости с Icehouse.

    Отредактируйте файл /etc/nova/nova.conf:

    Замените ключ rpc_backend с nova.rpc.impl_kombu на rabbit.

    Измените файл /etc/nova/api-paste.ini:

    Закомментируйте или удалите все ключи в разделе [filter:authtoken] ниже оператора paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory.

    Остановите службы, модернизируйте базу данных и повторно запустите службы.

    # service nova-api stop
    # service nova-scheduler stop
    # service nova-conductor stop
    # service nova-cert stop
    # service nova-consoleauth stop
    # service nova-novncproxy stop
    # nova-manage db sync
    # service nova-api start
    # service nova-scheduler start
    # service nova-conductor start
    # service nova-cert start
    # service nova-consoleauth start
    # service nova-novncproxy start
  • Сетевая среда OpenStack:

    Перед модернизацией базы данных Networking, вы должны преобразовать набор символов для всех таблиц на UTF-8.

    Для выполнения следующих команд воспользуйтесь клиентом MySQL:

    # mysql -u root -p
    mysql> USE neutron;
    mysql> SET foreign_key_checks = 0;
    mysql> ALTER TABLE agents CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE alembic_version CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE allowedaddresspairs CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE dnsnameservers CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE externalnetworks CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE extradhcpopts CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE floatingips CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE ipallocationpools CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE ipallocations CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE ipavailabilityranges CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE networkdhcpagentbindings CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE networks CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE ovs_network_bindings CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE ovs_tunnel_allocations CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE ovs_tunnel_endpoints CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE ovs_vlan_allocations CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE portbindingports CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE ports CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE quotas CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE routerl3agentbindings CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE routerroutes CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE routers CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE securitygroupportbindings CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE securitygrouprules CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE securitygroups CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE servicedefinitions CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE servicetypes CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE subnetroutes CONVERT TO CHARACTER SET 'utf8';
    mysql> ALTER TABLE subnets CONVERT TO CHARACTER SET 'utf8';
    mysql> SET foreign_key_checks = 1;
    mysql> exit
    [Замечание]Замечание

    Ваша среда может также содержать другие или дополнительные таблицы, которые вы тоже должны преобразовать в UTF-8 при помощи аналогичных команд.

    Наполните файл /etc/neutron/plugins/ml2/ml2_conf.ini эквивалентными настройками для вашей среды. Не изменяйте файл /etc/neutron/neutron.conf пока не выполните все этапы преобразования.

    Остановите службы, модернизируйте базу данных и выполните преобразования с OVS на ML2.

    Замените NEUTRON_DBPASS на пароль, который вы выбрали для базы данных.

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

    Настоятельно рекомендуем вам выполнить резервное копирование базы данных перед выполнением следующих команд, поскольку сценарий преобразования не может выполнять откат.

    # service neutron-server stop
    # neutron-db-manage --config-file /etc/neutron/neutron.conf \
      --config-file /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini stamp havana
    # neutron-db-manage --config-file /etc/neutron/neutron.conf \
      --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade icehouse
    # python -m neutron.db.migration.migrate_to_ml2 openvswitch \
      mysql://neutron:NEUTRON_DBPASS@controller/neutron

    Измените файл /etc/neutron/neutron.conf для использования подключаемого модуля ML2 и разрешения уведомлений сетевых изменений:

    Замените SERVICE_TENANT_ID на идентификатор владельца данной службы (id) для службы идентификации, а NOVA_PASS на выбранный вами для пользователя nova пароль в службе идентификации.

    [DEFAULT]
    ...
    core_plugin = ml2
    service_plugins = router
    ...
    notify_nova_on_port_status_changes = True
    notify_nova_on_port_data_changes = True
    nova_url = http://controller:8774/v2
    nova_admin_username = nova
    nova_admin_tenant_id = SERVICE_TENANT_ID
    nova_admin_password = NOVA_PASS
    nova_admin_auth_url = http://controller:35357/v2.0
    

    Запустите сетевые службы.

    # service neutron-server start
  • Блочное хранилище OpenStack:

    Остановите службы, модернизируйте базу данных и повторно запустите службы.

    # service cinder-api stop
    # service cinder-volume stop
    # service cinder-scheduler stop
    # cinder-manage db sync
    # service cinder-api start
    # service cinder-volume start
    # service cinder-scheduler start
  • Инструментальная панель:

    Модернизируйте настройки для совместимости с редакцией Icehouse.

    Отредактируйте файл /etc/openstack-dashboard/local_settings.py:

    Замените ключ OPENSTACK_KEYSTONE_DEFAULT_ROLE c "Member" на "_member_".

    Перезапустите службы инструментальной панели.

    # service apache2 restart

Модернизация узла контроллера завершена. Теперь вы можете модернизировать оставшиеся узлы.

 Модернизация сетевого узла

Модернизируйте пакеты на сетевом узле на редакцию Icehouse:

[Замечание]Замечание

Убедитесь что вы удалили репозиторий для пакетов Havana и добавили репозиторий для пакетов Icehouse.

# apt-get update
# apt-get dist-upgrade

Измените файл /etc/neutron/neutron.conf для использования подключаемого модуля ML2:

[DEFAULT]
core_plugin = ml2
service_plugins = router

Наполните файл /etc/neutron/plugins/ml2/ml2_conf.ini эквивалентной конфигурацией для вашей среды.

Очистите активную конфигурацию OVS:

# service neutron-ovs-cleanup restart

Перезапустите сетевые службы:

# service neutron-dhcp-agent restart
# service neutron-l3-agent restart
# service neutron-metadata-agent restart
# service neutron-plugin-openvswitch-agent restart

 Модернизация вычислительных узлов

Модернизируйте пакеты на вычислительных узлах на редакцию Icehouse:

[Замечание]Замечание

Убедитесь что вы удалили репозиторий для пакетов Havana и добавили репозиторий для пакетов Icehouse.

# apt-get update
# apt-get dist-upgrade

Edit the /etc/neutron/neutron.conf file to use the ML2 plug-in:

[DEFAULT]
core_plugin = ml2
service_plugins = router

Populate the /etc/neutron/plugins/ml2/ml2_conf.ini file with the equivalent configuration for your environment.

Очистите активную конфигурацию OVS:

# service neutron-ovs-cleanup restart

Перезапустите сетевые службы:

# service neutron-plugin-openvswitch-agent restart

Повторно стартуйте службы вычислительной среды:

# service nova-compute restart

 Модернизация узлов хранения

Модернизируйте пакеты на узлах хранения на редакцию Icehouse:

[Замечание]Замечание

Убедитесь что вы удалили репозиторий для пакетов Havana и добавили репозиторий для пакетов Icehouse.

# apt-get update
# apt-get dist-upgrade

Перезапустите службы блочного хранилища.

# service cinder-volume restart