第 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 章 先决条件
本节介绍了在一个非高可用性(non-HA)环境中,在运行 Compute 服务的情况下,通过每次更新一个服务来升级您的云环境的方法。
  1. 升级前的准备任务:
    在所有主机上:
    1. 为 Red Hat Enterprise Linux OpenStack Platform 7 (Kilo) 安装 yum 仓库。
    2. 如果有更新的 openstack-selinux 软件包,对它进行升级。
      # yum upgrade openstack-selinux
      Copy to Clipboard Toggle word wrap
      这可以确保升级后的服务可以正确地运行在一个启用了 SELinux 的系统上。
  2. 升级每个服务:
    以下介绍了对每个服务进行升级的信息,其中服务的顺序与实际升级的顺序相同。
    1. 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
      Copy to Clipboard Toggle word wrap
    2. Object Storage (swift)
      在 Object Storage 主机上运行:
      # openstack-service stop swift
      # yum -d1 -y upgrade \*swift\*
      # openstack-db --service swift --update
      # openstack-service start swift
      Copy to Clipboard Toggle word wrap
    3. Image Service (glance)
      在 Image Service 主机上运行:
      # openstack-service stop glance
      # yum -d1 -y upgrade \*glance\*
      # openstack-db --service glance --update
      # openstack-service start glance
      Copy to Clipboard Toggle word wrap
    4. Block Storage (cinder)
      在 Block Storage 主机上运行:
      # openstack-service stop cinder
      # yum -d1 -y upgrade \*cinder\*
      # openstack-db --service cinder --update
      # openstack-service start cinder
      Copy to Clipboard Toggle word wrap
    5. Orchestration (heat)
      在 Orchestration 主机上运行:
      # openstack-service stop heat
      # yum -d1 -y upgrade \*heat\*
      # openstack-db --service heat --update
      # openstack-service start heat
      Copy to Clipboard Toggle word wrap
    6. Telemetry (ceilometer)
      1. 在运行 Telemetry 组件服务的所有节点上运行:
        # openstack-service stop ceilometer
        # yum -d1 -y upgrade \*ceilometer\*
        Copy to Clipboard Toggle word wrap
      2. 在控制器节点(数据库安装的地方)上运行:
        # ceilometer-dbsync
        Copy to Clipboard Toggle word wrap
        这个命令把 MySQL 配置为 Telemetry 服务的后端。
        如需获得 Telemetry 组件服务的列表,请访问 Launch the Telemetry API and Agents
      3. 当完成软件包更新后,在运行 Telemetry 组件服务的所有节点上运行以下命令来重启 Telemetry 服务:
        # openstack-service start ceilometer
        Copy to Clipboard Toggle word wrap
    7. Compute (nova)
      1. 如果要对 Compute 主机进行升级,您需要明确设置 API 版本的限制来确保您的 Juno 和 Kilo 环境间的兼容性。
        在启动 Kilo 控制器或 Compute 服务前,您需要把 nova.conf 文件中的 [upgrade_levels] 段落中的 compute 选项设置为 juno
        # crudini --set /etc/nova/nova.conf upgrade_levels compute juno
        Copy to Clipboard Toggle word wrap
        您需要在控制器和 Compute 主机上进行这个修改。
        当把所有的 Compute 主机升级到 OpenStack Kilo 后,需要取消这个操作。
      2. 在 Compute 主机上运行:
        # openstack-service stop nova
        # yum -d1 -y upgrade \*nova\*
        # openstack-db --service nova --update
        Copy to Clipboard Toggle word wrap
      3. 在全部升级到 Kilo 后(所有节点都运行 Kilo),您需要启动一个 flavor 信息的后台迁移过程。Kilo conductor 节点会在需要的时候自动进行这个操作,但是其它空闲的数据需要在后台进行迁移。以 nova 用户身份运行以下命令:
        # runuser -u nova -- nova-manage db migrate_flavor_data
        Copy to Clipboard Toggle word wrap
      4. 在把所有主机都升级到 Kilo 后,您需要把在前一步中设置的 API 限制删除。在所有节点上运行:
        # crudini --del /etc/nova/nova.conf upgrade_levels compute
        Copy to Clipboard Toggle word wrap
      5. 在所有的 Compute 主机和控制器上重启 Compute 服务:
        # openstack-service start nova
        Copy to Clipboard Toggle word wrap
    8. OpenStack Networking (neutron)
      1. 在 OpenStack Networking 主机上运行:
        # openstack-service stop neutron
        # yum -d1 -y upgrade \*neutron\*
        # openstack-db --service neutron --update
        Copy to Clipboard Toggle word wrap
      2. 在升级完 OpenStack Networking 服务后,您需要编辑 rootwrap dhcp.filter 配置文件。
        替换 /usr/share/neutron/rootwrap/dhcp.filters 文件中的 dnsmasq 的值。例如,进行以下替换:
        dnsmasq: EnvFilter, env, root, CONFIG_FILE=, NETWORK_ID=, dnsmasq
        Copy to Clipboard Toggle word wrap
        替换为:
        dnsmasq: CommandFilter, dnsmasq, root
        Copy to Clipboard Toggle word wrap
      3. 重启 OpenStack Networking 服务:
        # openstack-service start neutron
        Copy to Clipboard Toggle word wrap
    9. Dashboard (horizon)
      在 Dashboard 主机上运行:
      # yum -y upgrade \*horizon\* \*openstack-dashboard\*
      # yum -d1 -y upgrade \*horizon\*
      # openstack-db --service horizon --update
      # openstack-service start horizon
      Copy to Clipboard Toggle word wrap
  3. 升级后的任务:
    1. 在完成所有服务升级后,您需要在所有系统上执行一个完整的软件包升级。
      # yum upgrade
      Copy to Clipboard Toggle word wrap
      这将确保所有软件包都是最新的。您可能需要计划在今后的某个时间重启您的 OpenStack 主机,从而保证所有运行的进程都使用最新版本的代码。
    2. 检查生成的配置文件。更新的软件包会创建与 Red Hat Enterprise Linux OpenStack Platform 7 版本的服务相对应的 .rpmnew 文件。
      新版本的 OpenStack 服务可能不再支持特定的配置选项,您需要查看 OpenStack 日志中的不再支持的警告信息,并解决它们。否则,在今后进行的升级中可能会出现问题。如需了解更多与配置选项相关的信息,请参阅 Configuration ReferenceRed Hat Enterprise Linux OpenStack Platform Documentation Suite)。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat