1. A f O S
?
Licensed under Creative Commons Attribution license.
Get more templates at slidescarnival.com
2. What will we discuss today?
● Rolling upgrade overview
● Sensitive points
● Rolling upgrade in some OpenStack projects
2
Image source: https://getsilo.com/rsa2016/
3. O/
Dai, Dang Van
OpenStack Active Contributor
Linux, OpenStack, Docker and Ansible
@daikk115(Twitter) - @daidv(IRC)
daidv@vn.fujitsu.com
F f !
3
5. What is rolling upgrade?
◇ Allow distributed system running well while upgrade
parts of system one by one.
Image source:
http://www.dba-oracle.com/t_rolling_upgrades.htm
https://pubs.vmware.com/vfabric5/index.jsp?topic=/com.vmware.vfabric.gemfire.6.6/getting_started/rolling_upgrade.html
https://www.quora.com/What-is-meant-by-a-rolling-upgrade-in-software-development
5
6. Rolling upgrade in OpenStack
◇ Upgrade with minimal downtime on control plane
◇ Data plane is fine during upgrade process
◇ Assert:supports-rolling-upgrade tag
Read more: Rolling Upgrade [Part1]
https://blog.vietstack.vn/rolling-upgrade-part-1/
6
11. Online schema migration
11
◇ Database change during upgrade.
◇ Allow both of new and old versions working together with the same database.
Image source:
http://dbperfection.com/migration-from-sql-server-to-oracle-using-sql-developer/
12. Online schema migration
Read more:
Rolling upgrade [part2]
12
Trigger-base Trigger-less
Use trigger Versioned object model
Stick on database Implement in codebase
It’s hard for testing Easy to test
Deleable column/table from
N -> N+1
Not deleable column/table from
N-> N+1
Using by KeyStone, Glance, etc. Using by Nova, Neutron, Cinder, etc.
13. Rolling upgrade in some
OpenStack projects
● KeyStone
● Glance
● Nova
● Neutron
● Cinder
3
Detail commands:
https://github.com/daikk115/openstack_upgrade_test/tree/master/upgrade_script
13
26. Nova
Pre-upgrade
◇ Create nova_cell0 database
◇ Make an DevStack Ocata ENV
◇ Upgrade Nova database from the ENV
◇ Add support multi nova-compute versions (controllers/computes)
■ [upgrade_levels]compute=auto in nova.conf
Source: https://docs.openstack.org/nova/ocata/upgrade.html
26
27. Nova
Upgrade services except nova-compute
Stop all Nova
services on
Controllers
Upgrade
source code
Start all
Nova
services on
Controllers
Notes: Start nova-conductor first and nova-api last
27
28. Nova
◇ Upgrade nova-compute one by one
◇ Complete all online data migrations using:
nova-manage db online_data_migrations --limit <number>
28
29. Neutron
Notes
◇ Upgrade neutron-server as we did with Keystone/Glance
◇ After that, node by node:
■ upgrade L2 agents
■ Then, upgrade all other agents(L3, DHCP, metadata...)
Source: https://docs.openstack.org/neutron/ocata/devref/upgrade.html
29
40. Cinder
Notes
◇ Our public cloud is using A/A with cinder-volumes but the community’s
recommendation is A/P.
◇ We didn’t use Pacemaker, we manually stop/start cinder-volume for
upgrade testing.
◇ Be careful with backend compatible.
Source: https://docs.openstack.org/ha-guide/storage-ha-block.html
40
41. Cinder
Pre-upgrade
◇ Make an DevStack Ocata ENV
◇ Upgrade Cinder database from the ENV
Source: https://docs.openstack.org/cinder/ocata/upgrade.html
41