Как выполнить модернизацию с Havana на Icehouse—Red Hat Enterprise Linux и производные ОС

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

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

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

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

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

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

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

# 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:

# yum erase rdo-release-havana
# yum install http://repos.fedorapeople.org/repos/openstack/openstack-icehouse/ \
  rdo-release-icehouse-3.noarch.rpm
[Предостережение]Предостережение

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

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

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

    Согласно Замечаниям к редакции, редакция 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 следующим образом:

# yum upgrade
[Замечание]Замечание

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

# find /etc -name *.rpmnew

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

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

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

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

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

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

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

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

    # service openstack-keystone stop
    # keystone-manage token_flush
    # keystone-manage db_sync
    # service openstack-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:

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

    [DEFAULT]
    ...
    rpc_backend = qpid
    qpid_hostname = controller

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

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

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

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

    Замените ключ rpc_backend с nova.openstack.common.rpc.impl_qpid на qpid.

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

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

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

    # service openstack-nova-api stop
    # service openstack-nova-scheduler stop
    # service openstack-nova-conductor stop
    # service openstack-nova-cert stop
    # service openstack-nova-consoleauth stop
    # service openstack-nova-novncproxy stop
    # nova-manage db sync
    # service openstack-nova-api start
    # service openstack-nova-scheduler start
    # service openstack-nova-conductor start
    # service openstack-nova-cert start
    # service openstack-nova-consoleauth start
    # service openstack-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 при помощи аналогичных команд.

    Установите пакет подключаемого модуля ML2:

    # yum install openstack-neutron-ml2

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

    Измените символьную ссылку /etc/neutron/plugin.ini на ссылку /etc/neutron/plugins/ml2/ml2_conf.ini.

    Остановите службы, модернизируйте базу данных и выполните преобразование с 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 openstack-cinder-api stop
    # service openstack-cinder-volume stop
    # service openstack-cinder-scheduler stop
    # cinder-manage db sync
    # service openstack-cinder-api start
    # service openstack-cinder-volume start
    # service openstack-cinder-scheduler start
  • Инструментальная панель:

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

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

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

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

    # service httpd restart

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

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

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

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

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

# yum upgrade

Установите пакет подключаемого модуля ML2:

# yum install openstack-neutron-ml2

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

[DEFAULT]
core_plugin = ml2
service_plugins = router

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

Измените символьную ссылку /etc/neutron/plugin.ini на ссылку /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-openvswitch-agent restart

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

Модернизируйте пакеты на вычислительных узлах на редакцию Icehouse Upgrade packages on the compute nodes to Icehouse:

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

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

# yum upgrade

Установите пакет подключаемого модуля ML2:

# yum install openstack-neutron-ml2

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

[DEFAULT]
core_plugin = ml2
service_plugins = router

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

Измените символьную ссылку /etc/neutron/plugin.ini на /etc/neutron/plugins/ml2/ml2_conf.ini.

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

# service neutron-ovs-cleanup restart

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

# service neutron-openvswitch-agent restart

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

# service openstack-nova-compute restart

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

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

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

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

# yum upgrade

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

# service openstack-cinder-volume restart