第 4 章 在运行 Compute 时,通过单独更新每个服务来升级 OpenStack
在这个过程中,所有服务都被单独升级,每个服务的升级过程都包括一个软件包升级和数据库 schema 更新。
实时升级 Compute 可以最小化升级对 compute 服务造成的影响,您只需要几分钟来升级小的服务,然后在适当的时间段内把负载迁移到新升级的 Compute 主机上。使用这种方法,已经存在的负载仍然可以继续运行,而不需要等待数据库迁移操作的完成。
注意
这个方法可能需要额外的硬件资源来运行 Red Hat Enterprise Linux OpenStack Platform 7 Compute 节点。
注意
本章中所使用的命名规则与其它所有 Red Hat Enterprise Linux OpenStack Platform 文档中的规则相同。如果您还不熟悉它们,请在进行升级前参阅 Architecture Guide( Red Hat Enterprise Linux OpenStack Platform Documentation Suite)。
在对 OpenStack 进行升级前,请订阅所需的频道。如需更多相关信息,请参阅 第 2 章 先决条件
4.1. 在一个非高可用性环境中,在运行 Compute 时,通过单独更新每个服务来升级 OpenStack 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
本节介绍了在一个非高可用性(non-HA)环境中,在运行 Compute 服务的情况下,通过每次更新一个服务来升级您的云环境的方法。
- 升级前的准备任务:在所有主机上:
- 为 Red Hat Enterprise Linux OpenStack Platform 7 (Kilo) 安装 yum 仓库。
- 如果有更新的
openstack-selinux
软件包,对它进行升级。yum upgrade openstack-selinux
# yum upgrade openstack-selinux
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这可以确保升级后的服务可以正确地运行在一个启用了 SELinux 的系统上。
- 升级每个服务:以下介绍了对每个服务进行升级的信息,其中服务的顺序与实际升级的顺序相同。
- Identity (keystone)以前的安装程序可能没有被配置为需要删除过期的 Keystone 令牌,所以您的令牌表中可能包括大量已经过期的令牌。这可能会大大增加数据库 schema 升级的时间。在进行 Identity 数据库升级前,可以运行
keystone-manage
命令。这会从数据库中删除过期的令牌。您可以使用cron
来定期运行这个命令(如每天运行一次)。在 Identity 主机上运行:openstack-service stop keystone yum -d1 -y upgrade \*keystone\* keystone-manage token_flush openstack-db --service keystone --update openstack-service start keystone
# openstack-service stop keystone # yum -d1 -y upgrade \*keystone\* # keystone-manage token_flush # openstack-db --service keystone --update # openstack-service start keystone
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Object Storage (swift)在 Object Storage 主机上运行:
openstack-service stop swift yum -d1 -y upgrade \*swift\* openstack-db --service swift --update openstack-service start swift
# openstack-service stop swift # yum -d1 -y upgrade \*swift\* # openstack-db --service swift --update # openstack-service start swift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Image Service (glance)在 Image Service 主机上运行:
openstack-service stop glance yum -d1 -y upgrade \*glance\* openstack-db --service glance --update openstack-service start glance
# openstack-service stop glance # yum -d1 -y upgrade \*glance\* # openstack-db --service glance --update # openstack-service start glance
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Block Storage (cinder)在 Block Storage 主机上运行:
openstack-service stop cinder yum -d1 -y upgrade \*cinder\* openstack-db --service cinder --update openstack-service start cinder
# openstack-service stop cinder # yum -d1 -y upgrade \*cinder\* # openstack-db --service cinder --update # openstack-service start cinder
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Orchestration (heat)在 Orchestration 主机上运行:
openstack-service stop heat yum -d1 -y upgrade \*heat\* openstack-db --service heat --update openstack-service start heat
# openstack-service stop heat # yum -d1 -y upgrade \*heat\* # openstack-db --service heat --update # openstack-service start heat
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Telemetry (ceilometer)
- 在运行 Telemetry 组件服务的所有节点上运行:
openstack-service stop ceilometer yum -d1 -y upgrade \*ceilometer\*
# openstack-service stop ceilometer # yum -d1 -y upgrade \*ceilometer\*
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在控制器节点(数据库安装的地方)上运行:
ceilometer-dbsync
# ceilometer-dbsync
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个命令把 MySQL 配置为 Telemetry 服务的后端。如需获得 Telemetry 组件服务的列表,请访问 Launch the Telemetry API and Agents。 - 当完成软件包更新后,在运行 Telemetry 组件服务的所有节点上运行以下命令来重启 Telemetry 服务:
openstack-service start ceilometer
# openstack-service start ceilometer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- Compute (nova)
- 如果要对 Compute 主机进行升级,您需要明确设置 API 版本的限制来确保您的 Juno 和 Kilo 环境间的兼容性。在启动 Kilo 控制器或 Compute 服务前,您需要把
nova.conf
文件中的[upgrade_levels]
段落中的compute
选项设置为juno
:crudini --set /etc/nova/nova.conf upgrade_levels compute juno
# crudini --set /etc/nova/nova.conf upgrade_levels compute juno
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您需要在控制器和 Compute 主机上进行这个修改。当把所有的 Compute 主机升级到 OpenStack Kilo 后,需要取消这个操作。 - 在 Compute 主机上运行:
openstack-service stop nova yum -d1 -y upgrade \*nova\* openstack-db --service nova --update
# openstack-service stop nova # yum -d1 -y upgrade \*nova\* # openstack-db --service nova --update
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在全部升级到 Kilo 后(所有节点都运行 Kilo),您需要启动一个 flavor 信息的后台迁移过程。Kilo conductor 节点会在需要的时候自动进行这个操作,但是其它空闲的数据需要在后台进行迁移。以
nova
用户身份运行以下命令:runuser -u nova -- nova-manage db migrate_flavor_data
# runuser -u nova -- nova-manage db migrate_flavor_data
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在把所有主机都升级到 Kilo 后,您需要把在前一步中设置的 API 限制删除。在所有节点上运行:
crudini --del /etc/nova/nova.conf upgrade_levels compute
# crudini --del /etc/nova/nova.conf upgrade_levels compute
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在所有的 Compute 主机和控制器上重启 Compute 服务:
openstack-service start nova
# openstack-service start nova
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- OpenStack Networking (neutron)
- 在 OpenStack Networking 主机上运行:
openstack-service stop neutron yum -d1 -y upgrade \*neutron\* openstack-db --service neutron --update
# openstack-service stop neutron # yum -d1 -y upgrade \*neutron\* # openstack-db --service neutron --update
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在升级完 OpenStack Networking 服务后,您需要编辑
rootwrap dhcp.filter
配置文件。替换/usr/share/neutron/rootwrap/dhcp.filters
文件中的dnsmasq
的值。例如,进行以下替换:dnsmasq: EnvFilter, env, root, CONFIG_FILE=, NETWORK_ID=, dnsmasq
dnsmasq: EnvFilter, env, root, CONFIG_FILE=, NETWORK_ID=, dnsmasq
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 替换为:dnsmasq: CommandFilter, dnsmasq, root
dnsmasq: CommandFilter, dnsmasq, root
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 重启 OpenStack Networking 服务:
openstack-service start neutron
# openstack-service start neutron
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- Dashboard (horizon)在 Dashboard 主机上运行:
yum -y upgrade \*horizon\* \*openstack-dashboard\* yum -d1 -y upgrade \*horizon\* openstack-db --service horizon --update openstack-service start horizon
# yum -y upgrade \*horizon\* \*openstack-dashboard\* # yum -d1 -y upgrade \*horizon\* # openstack-db --service horizon --update # openstack-service start horizon
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 升级后的任务:
- 在完成所有服务升级后,您需要在所有系统上执行一个完整的软件包升级。
yum upgrade
# yum upgrade
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这将确保所有软件包都是最新的。您可能需要计划在今后的某个时间重启您的 OpenStack 主机,从而保证所有运行的进程都使用最新版本的代码。 - 检查生成的配置文件。更新的软件包会创建与 Red Hat Enterprise Linux OpenStack Platform 7 版本的服务相对应的
.rpmnew
文件。新版本的 OpenStack 服务可能不再支持特定的配置选项,您需要查看 OpenStack 日志中的不再支持的警告信息,并解决它们。否则,在今后进行的升级中可能会出现问题。如需了解更多与配置选项相关的信息,请参阅 Configuration Reference(Red Hat Enterprise Linux OpenStack Platform Documentation Suite)。