ここ数日、Packstackで構築したOpenStackをOcataからPikeにアップグレードする方法を調べていました。 昔と比べると、そんなに苦労することなくアップグレードできることが確認できました。情報を共有したいと思い、こちらのブログに書かせていただきました。
ちなみに手動インストールで構築した場合でも、CentOS 7でOVSを使ってインストールした環境であれば、同様にアップグレードできると思います。バージョンアップグレードの参考になれば幸いです。
前提条件
今回の環境構築の前提条件は次の通りです。
- OpenStack Ocata
- NeutronはOVSを利用
- OpenStackを標準インストールしたCentOS 7.4上に構築
- OpenStack OcataバージョンをPikeバージョンにアップグレードする
アップグレードの流れ
OpenStackバージョンのアップグレードの流れは基本的には
- 新しいOpenStackリリースリポジトリーの有効化
- 新しいOpenStackパッケージの「インストール」
- なんちゃらマネージ db sync なんちゃら の実行
- 関連サービスの再起動
で良いようです。インストールするパッケージや実行するdb syncのコマンドはインストールガイドを確認します。
OpenStack Docs: Install OpenStack services
アップグレードの前に
OpenStackは疎結合なシステムです。従って、コンポーネントごとに別のOpenStackバージョンを使うことも可能です。
実際のアップグレード作業に入る前に、次のサイトの情報を確認し、OpenStackのアップグレードについて理解を深めてください。
OpenStack Pikeリポジトリーの追加
CentOS 7ではOpenStackパッケージをRDOのリポジトリーか、CentOS Cloud SIGが提供するリポジトリーのパッケージを利用することができます。CentOS Cloud SIGが提供するパッケージを使いますので次のように実行します。
# yum install centos-release-openstack-pike
Keystoneのアップグレード
新しいパッケージをインストールします。
# yum install openstack-keystone httpd mod_wsgi
Keystoneのdb_syncを実行します。
# su -s /bin/sh -c "keystone-manage db_sync" keystone
現在のKeystoneはHTTPバックエンドで動いているため、Apacheを再起動します。
# systemctl restart httpd.service
正常に起動しない場合はKeystoneのログを確認します。
Glanceのアップグレード
新しいパッケージをインストールします。
# yum install openstack-glance
Glanceのdb_syncを実行します。変換が行われます。
# su -s /bin/sh -c "glance-manage db_sync" glance /usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py:1328: OsloDBDeprecationWarning: EngineFacade is deprecated; please use oslo_db.sqlalchemy.enginefacade expire_on_commit=expire_on_commit, _conf=conf) INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Running upgrade ocata01 -> pike01, drop glare artifacts tables INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. Upgraded database to: pike01, current revision(s): pike01
関連のサービスを再起動します。
# systemctl restart openstack-glance-api.service openstack-glance-registry.service
正常に起動しない場合はGlanceのログを確認します。
Novaのアップグレード
Packstackで作ったOcata環境はnova-manage.logをroot権限で読み書きしてしまいます。このままだとPikeでは不具合があるため、次のように実行して権限を書き換えてください。
# chown nova.nova /var/log/nova/nova-manage.log
本件に関しては次のバグを参照してください。
新しいパッケージをインストールします。
# yum install openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler openstack-nova-placement-api
Novaのnova-manageコマンドを各種実行します。
# su -s /bin/sh -c "nova-manage api_db sync" nova # su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova # su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova # su -s /bin/sh -c "nova-manage db sync" nova
関連のサービスを再起動します。
# systemctl restart openstack-nova-api.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
正常に起動しない場合はNovaのログを確認します。
Nova-Computeのアップグレード
新しいパッケージをインストールします。
# yum install openstack-nova-compute
関連のサービスを再起動します。
# systemctl restart libvirtd.service openstack-nova-compute.service
正常に起動しない場合はNova-Computeのログを確認します。
Neutron のインストール前に
公式のインストール手順書はLinux Bridgeを利用しています。 PackstackはOpenvSwitchを使うため、linuxbridgeをopenvswitchに置き換える必要があります。
Neutron (controller)側の設定
コントローラー側に必要なNeutronパッケージをインストールします。
# yum install openstack-neutron openstack-neutron-ml2 \ openstack-neutron-openvswitch ebtables
neutron-db-manageを実施してNeutronデータベースを上書きします。
# su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \ --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. Running upgrade for neutron ... INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Running upgrade a9c43481023c -> 804a3c76314c, Add data_plane_status to Port INFO [alembic.runtime.migration] Running upgrade 804a3c76314c -> 2b42d90729da, qos add direction to bw_limit_rule table INFO [alembic.runtime.migration] Running upgrade 2b42d90729da -> 62c781cb6192, add is default to qos policies INFO [alembic.runtime.migration] Running upgrade 62c781cb6192 -> c8c222d42aa9, logging api INFO [alembic.runtime.migration] Running upgrade c8c222d42aa9 -> 349b6fd605a6, Add dns_domain to portdnses INFO [alembic.runtime.migration] Running upgrade 349b6fd605a6 -> 7d32f979895f, add mtu for networks OK
nova-apiサービスを再起動します。
# systemctl restart openstack-nova-api.service
Neutronの関連サービスを再起動します。
# systemctl restart neutron-server.service \ neutron-openvswitch-agent.service neutron-dhcp-agent.service \ neutron-metadata-agent.service
Neutron L3サービスを再起動します。
# systemctl restart neutron-l3-agent.service
ステータスを確認します。
# systemctl status neutron-server.service \ neutron-openvswitch-agent.service neutron-dhcp-agent.service \ neutron-metadata-agent.service neutron-l3-agent.service
Neutron (compute)側の設定
次にコンピュート側のOVSエージェントプラグイン側のアップグレードをします。
関連するパッケージをインストールします。
# yum install openstack-neutron-openvswitch ebtables ipset
関連サービスを再起動します。
# systemctl restart openstack-nova-compute.service # systemctl restart neutron-openvswitch-agent.service
CentOS 7+CentOS Cloud SIG版で構成するOpenStackのOcataバージョンからPikeバージョンへの最低限のアップグレードは以上で完成です。
その他のパッケージの更新
現在はRabbitMQ、MariaDB、OVS、openstack-dashboard、python-memcachedなどが古いバージョンの状態です。 弊社環境では全てアップグレードして関連サービスを再起動するだけでアップグレードがうまくできましたが、少しずつコンポーネント単位でアップグレードするにはYUMプラグインのversionlockを使うと便利です。
まず、次のようにコマンドを実行して、アップグレードの影響がありそうなパッケージをバージョンロックします。
# yum versionlock add openvswitch openstack-dashboard python-django-horizon python-memcached # yum update
まずはDashboardを更新してみましょう。 yum versionlock delete
コマンドでバージョンロックしたパッケージをロック解除できます。
# yum versionlock delete openstack-dashboard python-django-horizon python-memcached # yum update # systemctl restart httpd.service memcached.service
最後にOVSを更新します。この手順で問題なく更新できましたが、正直言うと無理にアップグレードしないでも良いのかなと思っています。OVSサービスを再起動すると、ovs-vsctl status
の結果が新しいバージョンに更新されます。
# yum versionlock delete openvswitch # yum update # systemctl restart openvswitch
無事にアップグレードが成功することを祈っています。