...
- This documents expects that your cloud is deployed with the latest stein tag(at LEAST vS.6.2) of the ntnuopenstack repository.
- Your cloud is designed with our common openstack architecture where each openstack project have their own VM(s) for their services
- You have a recent mysql backup in case things go south.
- If you want to do a rolling upgrade, the following key should be set in hiera long enough in advance that all hosts have had an puppet-run to apply it:
nova::upgrade_level_compute: 'auto'stein'
- When the upgrade is finished - set this key to 'train'
- NOTE: There is a bug, which will cause live migrations (and possibly other things?) to break in train if this is set to auto..
The recommended order to upgrade the services are listed below:
...
- Select which glance-server to upgrade first.
- In the node-specific hiera for this host you should set:
glance::api::enabled: false
followed by a puppet-run. This would stop the glance-api service on the host.
- In the node-specific hiera for this host you should set:
- Run puppet on the first host with the train modules/tags
- Run
apt-get purge python-cinderclient && apt-get autoremove && apt-get dist-upgrade
- Run puppet again.
- Run
glance-manage db expand
- Run
glance-manage db migrate
- Remove the
glance::api::enable: false
from the node-specific hiera, and run puppet again. This would re-start the glance api-server on this host.- Test that this api-server works.
- Upgrade the rest of the glance hosts (ie; step 2-4 for each of the remaining glance hosts)
- Run
glance-manage db contract
on one of the glance-nodes.
Cinder
To upgrade cinder without any downtime, follow this procedure
...
- Run
nova-manage db online_data_migrations
on an API node. Ensure that it reports that nothing more needs to be done.- Make sure there is no errors. Particulary anything related to "virtual interface table". See https://bugs.launchpad.net/nova/+bug/1824435
- Convert all tables in the mysql-database to the row-format "DYNAMIC" if the databases was created before maria 10.2
Use the following code-snippet to create the relevant mysql-statements:
Code Block for table in `mysql --batch --skip-column-names --execute="SELECT CONCAT(TABLE_SCHEMA, '.', TABLE_NAME) FROM information_schema.TABLES WHERE ENGINE = 'InnoDB' AND ROW_FORMAT IN('Redundant', 'Compact') AND TABLE_NAME NOT IN('SYS_DATAFILES', 'SYS_FOREIGN', 'SYS_FOREIGN_COLS', 'SYS_TABLESPACES', 'SYS_VIRTUAL', 'SYS_ZIP_DICT', 'SYS_ZIP_DICT_COLS');"`; do echo "ALTER TABLE ${table} ROW_FORMAT=DYNAMIC;";done;
...
- Set
heat::api::enabled: false
andheat::engine::enabled: false
andheat::api_cfn::enabled: false
in hiera to stop all services - Run puppet with train modules/tags
- Run
apt-get update && apt-get dist-upgrade && apt-get autoremove
- Run
heat-manage db_sync
on one of the api-nodes. - Remove the hiera keys that disabled the services and re-run puppet
...
- Run puppet with the train modules/tags
- run
yum upgrade
- Run puppet again
- restart apache2httpd
Compute-nodes
When all APIs etc. are upgraded, it is time to do the same on the compute-nodes. Compute nodes are simple to upgrade:
- Fix apt-pin for libc-hack :S
- Run puppet with the train modules/tags
- Run
export DEBIAN_FRONTEND=noninteractive; apt-get purge python-cinderclient && apt -y dist-upgrade && apt-get autoremove
- Run puppet again
- Restart openstack services and openvswitch-services
- No downtime:
systemctl restart nova-compute.service neutron-openvswitch-agent.service
- At a later point: reboot
- No downtime:
GPU-nodes
- Run puppet with the train modules/tags
- Run
yum upgrade && yum autoremove
- Run puppet again
- Restart openstack services and openvswitch-services
...
- Remove old neutron-agents
- Delete the rabbit-queue for neutron-lbaas: Run this on a rabbit host:
rabbitmqadmin delete queue name=n-lbaasv2-plugin
- Run
nova-manage db online_data_migrations
on a nova API node. Ensure that it reports that nothing more needs to be done.