升级 OpenStack

Red Hat Enterprise Linux OpenStack Platform 7

升级 Red Hat Enterprise Linux OpenStack Platform

OpenStack 文档团队

Red Hat Customer Content Services

摘要

本文档介绍了把 Red Hat Enterprise Linux OpenStack Platform 从版本 6(Juno)升级到版本 7(Kilo)的方法。这些方法假设您要进行升级的 OpenStack 部署是安装在 Red Hat Enterprise Linux 7 系统上的。

第 1 章 简介

本文档介绍了把 Red Hat Enterprise Linux OpenStack Platform 6 升级到 Red Hat Enterprise Linux OpenStack Platform 7 的方法。
如果您当前正在使用 RHEL OpenStack Platform 5(Icehouse),并希望把它升级到 RHEL OpenStack Platform 7(Kilo),您需要先把它升级到 RHEL OpenStack Platform 6(Juno)。https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux_OpenStack_Platform/6/ 中的 Upgrading 介绍了相关信息。
红帽只支持对运行在 Red Hat Enterprise Linux 7 系统上的 Red Hat Enterprise Linux OpenStack Platform 7 进行升级。第 1.1 节 “升级方法的比较” 对红帽支持的各种升级方法分别进行了介绍,升级方法比较 一节提供了每种升级方法的相关文档和链接。如需了解每个组件的详细信息,请参阅 Components Overviewhttps://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux_OpenStack_Platform/)。
对于同时升级所有服务单独升级每个服务这两种情况,本指南都介绍了在高可用性(HA)环境下和非高可用性(non-HA)环境下的升级方法,您需要确保 Pacemaker 服务被正确启用或禁用。
以下介绍的所有升级方法都可以把您的环境升级到可以正常工作的 RHEL OpenStack Platform 7(Kilo)版本。另外,我们推荐您使用并行云迁移的方法来进行进一步的升级,使得系统可以使用 RHEL OpenStack Platform 7 director。RHEL OpenStack Platform 7 的并行云迁移过程会把通过其它安装程序部署的 OpenStack 云环境升级到使用 RHEL OpenStack Platform 7 director 进行部署。

1.1. 升级方法的比较

红帽推荐使用以下方法升级到 Red Hat Enterprise Linux OpenStack Platform 7。下表分别对这些方法进行了介绍。

表 1.1. 升级方法

方法 描述 优点 缺点
同时升级所有服务
使用这种方法,您需要同时停止所有 OpenStack 服务,进行升级,然后在升级完成后再启动所有服务。
如需了解更多相关信息,请参阅 第 3 章 同时升级所有 OpenStack 服务
这个升级方法比较简单。因为所有服务都被停止,所以不需要进行编配(orchestration)。在这个升级过程中,尽管所有服务都被停止,但是如果不需要改变 Red Hat Enterprise Linux 的版本(如从 v7.0 变为 v7.1),虚拟机负载仍然可以运行。
在进行升级的过程中,所有服务都将无效。在一个大型环境中,这个升级过程可能会导致较长的停机时间(downtime)。您可以通过在实际升级前进行仔细的规划和测试,或在一个特定的停机时间段内进行升级来减少停机对您环境造成的影响。
对服务进行逐个升级,并实时升级 Compute
这种方法是“对服务进行逐个升级”方法的一个变异,它的不同之处在于对 Compute 服务的升级。Red Hat Enterprise Linux OpenStack Platform 7 具有一个功能,它允许您在运行经过升级的 compute 节点的同时运行老版本的 compute 节点。这个方法就是通过这个功能实现的。
使用这种方法可以最小化升级对 compute 服务造成的影响,您只需要几分钟来升级小的服务,然后在适当的时间段内把负载迁移到新升级的 Compute 主机上。使用这种方法,已经存在的负载仍然可以继续运行,而不需要等待数据库迁移操作的完成。
这种方法需要额外的硬件资源来运行 Red Hat Enterprise Linux OpenStack Platform 7(Kilo) Compute 节点。
对于所有方法:
  • 请确认在所有主机上都订阅了正确的频道。
  • 升级的过程会中断一些服务的正常运行。
  • 除非您重启了 Compute 节点或停止了一个实例,升级的过程不会对运行的实例产生影响。
  • 为了升级 OpenStack Networking,您需要在 /etc/nova/nova.conf 文件中设置正确的 libvirt_vif_driver,因为老的驱动已经不被支持。请在 Compute API 主机上运行以下命令:
    # openstack-config --set /etc/nova/nova.conf \
    DEFAULT libvirt_vif_driver nova.virt.libvirt.vif.LibvirtGenericVIFDriver

警告

红帽不支持:
  • 把 Beta 版的 Red Hat Enterprise Linux OpenStack Platform 升级到正式支持的版本(如 6 或 7)。
  • 在 Red Hat Enterprise Linux OpenStack Platform 7 中把 Compute Networking(nova-networking)升级到 OpenStack Networking(neutron)。红帽只支持把 OpenStack Networking(neutron)从 Red Hat Enterprise Linux OpenStack Platform 6 升级到 Red Hat Enterprise Linux OpenStack Platform 7。

第 2 章 先决条件

本节介绍了部署 Red Hat Enterprise Linux OpenStack Platform 7 所需的频道和存储库。

警告

在安装 Red Hat Enterprise Linux OpenStack Platform 7 前,您需要确保无法访问到老的 Red Hat OpenStack 存储库。例如,取消订阅或禁用以下存储库:
  • Red Hat Enterprise Linux OpenStack Platform 4 (Havana) -- rhel-6-server-openstack-4.0-rpms
  • Red Hat Enterprise Linux OpenStack Platform 5 (Icehouse) -- rhel-7-server-openstack-5.0-rpms
  • Red Hat Enterprise Linux OpenStack Platform 6 (Juno) -- rhel-7-server-openstack-6.0-rpms
Packstack 会使用 Subscription Manager 把系统注册到红帽网络(RHN)。如果您以前使用 RHN Classic 对系统进行了注册,并订阅了 Red Hat OpenStack 频道,则可能会遇到一些问题。

注意

如需创建需要使用 cloud-init 的自定义 Red Hat Enterprise Linux 虚拟客户机镜像,我们推荐您使用 Red Hat Common for RHEL Server 频道。
对于 Red Hat Enterprise Linux 7,运行:
# subscription-manager repos --enable=rhel-7-server-rh-common-rpms

2.1. 配置 Content Delivery Network (CDN) 频道

您可以通过 Content Delivery Network (CDN) 安装 Red Hat Enterprise Linux OpenStack Platform 7。请配置 subscription-manager 来使用正确的频道。
运行以下命令来启用一个 CDN 频道:
# subscription-manager repos --enable=[reponame]
运行以下命令来禁用一个 CDN 频道:
# subscription-manager repos --disable=[reponame]
Red Hat Enterprise Linux 7

下表介绍了 Red Hat Enterprise Linux 7 的频道。

表 2.1. 所需频道

频道 仓库名称
Red Hat Enterprise Linux 7 Server (RPMS) rhel-7-server-rpms
Red Hat OpenStack 7.0 for Server 7 (RPMS) rhel-7-server-openstack-7.0-rpms
Red Hat Enterprise Linux 7 Server - RH Common (RPMs) rhel-7-server-rh-common-rpms

表 2.2. 可选频道

频道 仓库名称
Red Hat Enterprise Linux 7 Server - Optional rhel-7-server-optional-rpms
Red Hat Enterprise Linux OpenStack Platform Director

下表介绍了 Red Hat Enterprise Linux OpenStack Platform Director 所需的频道。

表 2.3. 所需频道

频道 仓库名称
Red Hat Enterprise Linux OpenStack Platform Director 7.0 (RPMs) rhel-7-server-openstack-7.0-director-rpms
Red Hat Enterprise Linux 7 Server (RPMS) rhel-7-server-rpms
Red Hat Software Collections RPMs for Red Hat Enterprise Linux 7 Server rhel-server-rhscl-7-rpms
Images on CDN (Optional) rhel-7-server-openstack-7.0-files
Red Hat Enterprise Linux OpenStack Platform 7.0 Operational Tools rhel-7-server-openstack-7.0-optools-rpms
禁用频道

下表包括了为了使 Red Hat Enterprise Linux OpenStack Platform 7 可以正常运行需要被禁用的频道。

表 2.4. 禁用频道

频道 仓库名称
Red Hat CloudForms Management Engine "cf-me-*"
Red Hat CloudForms Tools for RHEL 6 "rhel-6-server-cf-*"
Red Hat Enterprise Virtualization "rhel-6-server-rhev*"
Red Hat Enterprise Linux 6 Server - Extended Update Support "*-eus-rpms"

第 3 章 同时升级所有 OpenStack 服务

这个 OpenStack 升级的方法包括同时禁用所有 OpenStack 服务,进行升级操作,然后在升级完成后启用所有服务。这是所有升级到 Red Hat Enterprise Linux OpenStack Platform 7 的方法中最简单的一个方法。
因为所有服务都被停止,所以不需要进行编配(orchestration)。如果不需要改变 Red Hat Enterprise Linux 的版本(如从 v7.0 变为 v7.1),虚拟机负载仍然可以运行。
在一个大型环境中,这个升级过程可能会导致较长的停机时间(downtime)。您可以通过在实际升级前进行仔细的规划和测试,或在一个特定的停机时间段内进行升级来减少停机对您环境造成的影响。

注意

本章中所使用的命名规则与其它所有 Red Hat Enterprise Linux OpenStack Platform 文档中的规则相同。如果您还不熟悉它们,请在进行升级前参阅 Architecture Guide Red Hat Enterprise Linux OpenStack Platform Documentation Suite)。
在对 OpenStack 进行升级前,请订阅所需的频道。如需更多相关信息,请参阅 第 2 章 先决条件

3.1. 同时升级所有 OpenStack 服务

以下介绍了通过同时更新所有组件来把您的云环境从 Juno 升级到 Kilo 的方法。其中的一些步骤包括了高可用性(HA)环境和非高可用性(non-HA)环境的选项。如果您的云环境需要具有高可用性的功能,则需要使用 Pacemaker 命令来启动或停止您的云环境。
在所有主机上执行以下操作:

过程 3.1. 在一个主机上升级 OpenStack 组件

  1. 为 Red Hat Enterprise Linux OpenStack Platform 7 (Kilo) 安装 yum 仓库。
  2. 确定 openstack-utils 软件包已被安装:
    # yum install openstack-utils
  3. 在所有节点上停止所有 OpenStack 服务。这一步取决于您的环境类型。
    • 在一个非高可用性(non-HA)环境中:
      登录到节点并运行以下命令来在一个节点上停止所有 OpenStack 服务:
      # openstack-service stop
    • 在一个高可用性(HA)环境中:
      1. 登录到节点并运行以下命令来在一个节点上停止所有 OpenStack 服务:
        # openstack-service stop
      2. 在集群中设置 stop_all_services 属性来禁用所有被 Pacemaker 管理的资源。在 Pacemaker 集群的一个成员上运行以下命令:
        # pcs property set stop_all_resources=true
        您需要等待,直到 pcs status 显示所有资源已停止。
  4. 对所有软件包进行一个完整的升级,然后在 Identity 服务上删除过期的令牌(这可以减少数据库同步所需的时间):
    # yum upgrade
  5. 对每个服务进行所需的配置更新。
    1. Identity 服务
      在 RHEL OpenStack Platform 7 (Kilo) 发行版本中,令牌持久化后端(token persistence backend)的位置已改变。您需要更新 keystone.conf 文件的 [token] 项中的 driver 选项。把所有 keystone.token.backends 替换为 keystone.token.persistence.backends
      # sed -i 's/keystone.token.backends/keystone.token.persistence.backends/g' \
      /etc/keystone/keystone.conf
      软件包更新可能会包括新的 systemd 单元文件,请确保 systemd 可以知道这些更新的文件。
      # service systemd restart
    2. OpenStack Networking 服务
      在升级完 OpenStack Networking 服务后,您需要编辑 rootwrap dhcp.filter 配置文件。
      替换 /usr/share/neutron/rootwrap/dhcp.filters 文件中的 dnsmasq 的值。例如,进行以下替换:
      dnsmasq: EnvFilter, env, root, CONFIG_FILE=, NETWORK_ID=, dnsmasq
      替换为:
      dnsmasq: CommandFilter, dnsmasq, root
  6. 为所有使用数据库的服务升级它们的数据库 schema。登录到提供服务的节点并运行:
    # openstack-db --service SERVICENAME --update
    使用服务的项目名替换其中的 SERVICENAME。例如,要升级 Identity 服务的数据库 schema,运行:
    # openstack-db --service keystone --update

    表 3.1. 使用数据库的 OpenStack 服务的项目名

    服务 项目名
    Identity keystone
    Block Storage cinder
    Image Service glance
    Compute nova
    Networking neutron
    Orchestration heat
    在把 Juno 升级到 Kilo 时,一些特定服务会需要进行额外的数据库操作,这些操作没有包括在 openstack-db 命令中:
    1. Identity 服务
      以前的安装程序可能没有被配置为需要删除过期的 Keystone 令牌,所以您的令牌表中可能包括大量已经过期的令牌。这可能会大大增加数据库 schema 升级的时间。
      在进行 Keystone 数据库升级前,您可以运行以下命令:
      # keystone-manage token_flush
      这会从数据库中删除过期的令牌。您可以使用 cron 来定期运行这个命令(如每天运行一次)。
    2. Compute
      在全部升级到 Kilo 后(所有节点都运行 Kilo),您需要启动一个 flavor 信息的后台迁移过程。Kilo conductor 节点会在需要的时候自动进行这个操作,但是其它空闲的数据需要在后台进行迁移。以 nova 用户身份运行以下命令:
      # runuser -u nova -- nova-manage db migrate_flavor_data
  7. 检查生成的配置文件。更新的软件包会创建与 Red Hat Enterprise Linux OpenStack Platform 7 版本的服务相对应的 .rpmnew 文件。
    新版本的 OpenStack 服务可能不再支持特定的配置选项,您需要查看 OpenStack 日志中的不再支持的警告信息,并解决它们。否则,在今后进行的升级中可能会出现问题。如需了解更多与配置选项相关的信息,请参阅 Configuration ReferenceRed Hat Enterprise Linux OpenStack Platform Documentation Suite)。
  8. 如果您升级的软件包需要系统重启(例如,一个新内核作为升级的一部分被安装),请在还没有启动相应 OpenStack 服务时重启相关的主机。
    • 在一个非高可用性(non-HA)环境中:
      在每个节点上运行以下命令重启 OpenStack 服务:
      # openstack-service start
    • 在一个 HA 环境中:
      1. 通过设置 stop_all_resources 属性来允许 Pacemaker 重启您的资源。在 Pacemaker 集群的一个成员上运行:
        # pcs property set stop_all_resources=false
        您需要等待,直到 pcs status 显示所有资源已启动(这可能会需要几分钟)。
      2. 在 Compute 节点上重启 OpenStack 服务。在每个 Compute 节点上运行:
        # openstack-service start

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

4.2. 在一个高可用性环境中,在运行 Compute 时,通过单独更新每个服务来升级 OpenStack

本节介绍了在一个高可用性(HA)环境中,在运行 Compute 服务的情况下,通过每次更新一个服务来升级您的云环境的方法。
  1. 升级前的准备任务:
    在所有主机上:
    1. 如果 Staypuft 配置运行 Puppet,您需要禁用它:
      # systemctl stop puppet
      # systemctl disable puppet
      这会确保 Staypuft 配置的 puppet 不会更改在升级过程中做的修改。
    2. 为 Red Hat Enterprise Linux OpenStack Platform 7 (Kilo) 安装 yum 仓库。
    3. 手工升级所有的 python 软件包。
      # yum upgrade python*
    4. 如果有更新的 openstack-selinux 软件包,对它进行升级。
      # yum upgrade openstack-selinux
      这可以确保升级后的服务可以正确地运行在一个启用了 SELinux 的系统上。
  2. 升级服务:
    升级所有服务。以下是一个在控制器上可以采用的服务升级顺序:
    升级 MariaDB:
    在每个运行 MariaDB 的主机上进行以下操作。请在一个主机上完成整个操作后再在另外的主机上进行操作。
    1. 在本地节点上停止运行服务:
      # pcs resource ban galera-master $(crm_node -n)
    2. 您需要等待,直到 pcs status 显示服务已不在本地节点上运行。这个过程可能会需要几分钟的时间。本地节点将首先转换为从模式(slave mode):
      Master/Slave Set: galera-master [galera]
      Masters: [ pcmk-mac525400aeb753 pcmk-mac525400bab8ae ]
      Slaves: [ pcmk-mac5254004bd62f ]
      本地节点最终会变为停止状态:
      Master/Slave Set: galera-master [galera]
      Masters: [ pcmk-mac525400aeb753 pcmk-mac525400bab8ae ]
      Stopped: [ pcmk-mac5254004bd62f ]
    3. 更新相关的软件包。
      # yum upgrade '*mariadb*' '*galera*'
    4. 允许 Pacemaker 在本地节点上调度 galera 资源:
      # pcs resource clear galera-master
    5. 您需要等待,直到 pcs status 显示 galera 资源已在本地节点上作为一个 master 被运行。pcs status 的输出显示应该包括和以下类似的内容:
      Master/Slave Set: galera-master [galera]
      Masters: [ pcmk-mac5254004bd62f pcmk-mac525400aeb753
      pcmk-mac525400bab8ae ]
    更新 MongoDB:
    1. 从 Pacemaker 的控制中删除 mongod 资源:
      # pcs resource unmanage mongod-clone
    2. 在所有控制器上停止服务。在每个控制器上运行:
      # systemctl stop mongod
    3. 更新相关的软件包:
      #  yum upgrade 'mongodb*' 'python-pymongo*'
    4. 重新加载 systemd 来使更新的单元文件生效:
      # systemctl daemon-reload
    5. 在每个控制器上运行以下命令来重启 mongod 服务:
      # systemctl start mongod
    6. 为 Pacemaker 控制清理资源:
      # pcs resource cleanup mongod-clone
    7. 把资源还给 Pacemaker 控制:
      # pcs resource manage mongod-clone
    8. 您需要等待,直到 pcs status 显示以上资源已运行。
    更新 Identity 服务 (keystone):
    1. 从 Pacemaker 的控制中删除 Identity 服务:
      # pcs resource unmanage keystone-clone
    2. 在每个控制器上运行以下命令停止 Identity 服务:
      # systemctl stop openstack-keystone
    3. 更新相关的软件包:
      # yum upgrade 'openstack-keystone*' 'python-keystone*'
    4. 重新加载 systemd 来使更新的单元文件生效:
      # systemctl daemon-reload
    5. 在 RHEL OpenStack Platform 7 (Kilo) 发行版本中,令牌持久化后端(token persistence backend)的位置已改变。您需要更新 keystone.conf 文件的 [token] 项中的 driver 选项。把所有 keystone.token.backends 替换为 keystone.token.persistence.backends
      # sed -i 's/keystone.token.backends/keystone.token.persistence.backends/g' \
      /etc/keystone/keystone.conf
      软件包更新可能会包括新的 systemd 单元文件,请确保 systemd 可以知道这些更新的文件。
      # service systemd restart
    6. 以前的安装程序可能没有被配置为需要删除过期的 Keystone 令牌,所以您的令牌表中可能包括大量已经过期的令牌。这可能会大大增加数据库 schema 升级的时间。
      在进行 Identity 数据库升级前,可以运行 keystone-manage 命令。
      这会从数据库中删除过期的令牌。您可以使用 cron 来定期运行这个命令(如每天运行一次)。
      # keystone-manage token_flush
    7. 更新 Identity 服务数据库的 schema:
      # openstack-db --service keystone --update
    8. 在每个控制器上运行以下命令重启服务:
      # systemctl start openstack-keystone
    9. 使用 Pacemaker 清理 Identity 服务:
      # pcs resource cleanup keystone-clone
    10. 把资源还给 Pacemaker 控制:
      # pcs resource manage keystone-clone
    11. 您需要等待,直到 pcs status 显示以上资源已运行。
    升级 Image 服务 (glance):
    1. 在 Pacemaker 中停止 Image 服务资源:
      # pcs resource disable glance-registry-clone
      # pcs resource disable glance-api-clone
    2. 您需要等待,直到 pcs status 显示这两个服务已经停止运行。
    3. 更新相关的软件包:
      # yum upgrade 'openstack-glance*' 'python-glance*'
    4. 重新加载 systemd 来使更新的单元文件生效:
      # systemctl daemon-reload
    5. 更新 Image 服务数据库的 schema:
      # openstack-db --service glance --update
    6. 使用 Pacemaker 清理 Image 服务:
      # pcs resource cleanup glance-api-clone
      # pcs resource cleanup glance-registry-clone
    7. 在 Pacemaker 中重启 Image 服务资源:
      # pcs resource enable glance-api-clone
      # pcs resource enable glance-registry-clone
    8. 您需要等待,直到 pcs status 显示以上资源已运行。
    升级 Block Storage 服务 (cinder):
    1. 在 Pacemaker 中停止所有 Block Storage 服务资源:
      # pcs resource disable cinder-api-clone
      # pcs resource disable cinder-scheduler-clone
      # pcs resource disable cinder-volume
    2. 您需要等待,直到 pcs status 显示以上服务已经停止运行。
    3. 更新相关的软件包:
      # yum upgrade 'openstack-cinder*' 'python-cinder*'
    4. 重新加载 systemd 来使更新的单元文件生效:
      # systemctl daemon-reload
    5. 更新 Block Storage 服务数据库的 schema:
      # openstack-db --service cinder --update
    6. 使用 Pacemaker 清理 Block Storage 服务:
      # pcs resource cleanup cinder-volume
      # pcs resource cleanup cinder-scheduler-clone
      # pcs resource cleanup cinder-api-clone
    7. 在 Pacemaker 中重启所有 Block Storage 服务资源:
      # pcs resource enable cinder-volume
      # pcs resource enable cinder-scheduler-clone
      # pcs resource enable cinder-api-clone
    8. 您需要等待,直到 pcs status 显示以上资源已运行。
    升级 Orchestration (heat):
    1. 在 Pacemaker 中停止 Orchestration 资源:
      # pcs resource disable heat-api-clone
      # pcs resource disable heat-api-cfn-clone
      # pcs resource disable heat-api-cloudwatch-clone
      # pcs resource disable heat
    2. 您需要等待,直到 pcs status 显示以上服务已经停止运行。
    3. 更新相关的软件包:
      # yum upgrade 'openstack-heat*' 'python-heat*'
    4. 重新加载 systemd 来使更新的单元文件生效:
      # systemctl daemon-reload
    5. 更新 Orchestration 数据库 schema:
      # openstack-db --service heat --update
    6. 使用 Pacemaker 清理 Orchestration 服务:
      # pcs resource cleanup heat
      # pcs resource cleanup heat-api-cloudwatch-clone
      # pcs resource cleanup heat-api-cfn-clone
      # pcs resource cleanup heat-api-clone
    7. 在 Pacemaker 中重启 Orchestration 资源:
      # pcs resource enable heat
      # pcs resource enable heat-api-cloudwatch-clone
      # pcs resource enable heat-api-cfn-clone
      # pcs resource enable heat-api-clone
    8. 您需要等待,直到 pcs status 显示以上资源已运行。
    升级 Telemetry (ceilometer):
    1. 在 Pacemaker 中停止所有 Telemetry 资源:
      # pcs resource disable openstack-ceilometer-central
      # pcs resource disable openstack-ceilometer-api-clone
      # pcs resource disable openstack-ceilometer-alarm-evaluator-clone
      # pcs resource disable openstack-ceilometer-collector-clone
      # pcs resource disable openstack-ceilometer-notification-clone
      # pcs resource disable openstack-ceilometer-alarm-notifier-clone
      # pcs resource disable ceilometer-delay-clone
    2. 您需要等待,直到 pcs status 显示以上服务已经停止运行。
    3. 更新相关的软件包:
      # yum upgrade 'openstack-ceilometer*' 'python-ceilometer*'
    4. 重新加载 systemd 来使更新的单元文件生效:
      # systemctl daemon-reload
    5. 如果 Telemetry 使用 MySQL 后端,则需要更新 Telemetry 数据库 schema。
      # openstack-db --service ceilometer --update

      注意

      如果使用 MongoDB 后端,则不需要这一步。
    6. 使用 Pacemaker 清理 Telemetry 服务:
      # pcs resource cleanup ceilometer-delay-clone
      # pcs resource cleanup openstack-ceilometer-alarm-notifier-clone
      # pcs resource cleanup openstack-ceilometer-notification-clone
      # pcs resource cleanup openstack-ceilometer-collector-clone
      # pcs resource cleanup openstack-ceilometer-alarm-evaluator-clone
      # pcs resource cleanup openstack-ceilometer-api-clone
      # pcs resource cleanup openstack-ceilometer-central
    7. 在 Pacemaker 中重启所有 Telemetry 资源:
      # pcs resource enable ceilometer-delay-clone
      # pcs resource enable openstack-ceilometer-alarm-notifier-clone
      # pcs resource enable openstack-ceilometer-notification-clone
      # pcs resource enable openstack-ceilometer-collector-clone
      # pcs resource enable openstack-ceilometer-alarm-evaluator-clone
      # pcs resource enable openstack-ceilometer-api-clone
      # pcs resource enable openstack-ceilometer-central
    8. 您需要等待,直到 pcs status 显示以上资源已运行。
    升级 Compute (nova):
    1. 在 Pacemaker 中停止所有 Compute 资源:
      # pcs resource disable openstack-nova-novncproxy-clone
      # pcs resource disable openstack-nova-consoleauth-clone
      # pcs resource disable openstack-nova-conductor-clone
      # pcs resource disable openstack-nova-api-clone
      # pcs resource disable openstack-nova-scheduler-clone
    2. 您需要等待,直到 pcs status 显示以上服务已经停止运行。
    3. 更新相关的软件包:
      # yum upgrade 'openstack-nova*' 'python-nova*'
    4. 重新加载 systemd 来使更新的单元文件生效:
      # systemctl daemon-reload
    5. 更新 Compute 数据库 schema:
      # openstack-db --service nova --update
      在全部升级到 Kilo 后(所有节点都运行 Kilo),您需要启动一个 flavor 信息的后台迁移过程。Kilo conductor 节点会在需要的时候自动进行这个操作,但是其它空闲的数据需要在后台进行迁移。以 nova 用户身份运行以下命令:
      # runuser -u nova -- nova-manage db migrate_flavor_data
    6. 如果要对 Compute 主机进行升级,您需要明确设置 API 版本的限制来确保您的 Juno 和 Kilo 环境间的兼容性。
      在启动 Kilo 控制器或 Compute 服务前,您需要把 nova.conf 文件中的 [upgrade_levels] 段落中的 compute 选项设置为 juno
      # crudini --set /etc/nova/nova.conf upgrade_levels compute juno
      您需要首先在一个控制器上运行 pcs resource unmanage 命令来取消管理 Compute 资源:
      # pcs resource unmanage openstack-nova-novncproxy-clone
      # pcs resource unmanage openstack-nova-consoleauth-clone
      # pcs resource unmanage openstack-nova-conductor-clone
      # pcs resource unmanage openstack-nova-api-clone
      # pcs resource unmanage openstack-nova-scheduler-clone
      在所有控制器上重启所有服务:
      # openstack-service restart nova
      当把所有的 Compute 主机升级到 OpenStack Kilo 后,需要把控制返回给 Pacemaker。
      # pcs resource manage openstack-nova-scheduler-clone
      # pcs resource manage openstack-nova-api-clone
      # pcs resource manage openstack-nova-conductor-clone
      # pcs resource manage openstack-nova-consoleauth-clone
      # pcs resource manage openstack-nova-novncproxy-clone
    7. 在 Pacemaker 中清理所有 Compute 资源:
      # pcs resource cleanup openstack-nova-scheduler-clone
      # pcs resource cleanup openstack-nova-api-clone
      # pcs resource cleanup openstack-nova-conductor-clone
      # pcs resource cleanup openstack-nova-consoleauth-clone
      # pcs resource cleanup openstack-nova-novncproxy-clone
    8. 在 Pacemaker 中重启所有 Compute 资源:
      # pcs resource enable openstack-nova-scheduler-clone
      # pcs resource enable openstack-nova-api-clone
      # pcs resource enable openstack-nova-conductor-clone
      # pcs resource enable openstack-nova-consoleauth-clone
      # pcs resource enable openstack-nova-novncproxy-clone
    9. 您需要等待,直到 pcs status 显示以上资源已运行。
    升级 OpenStack Networking (neutron):
    1. 运行以下命令防止 Pacemaker 触发 OpenStack Networking 清理(cleanup)脚本:
      # pcs resource unmanage neutron-ovs-cleanup-clone
      # pcs resource unmanage neutron-netns-cleanup-clone
    2. 在 Pacemaker 中停止 OpenStack Networking 服务资源:
      # pcs resource disable neutron-server-clone
      # pcs resource disable neutron-openvswitch-agent-clone
      # pcs resource disable neutron-dhcp-agent-clone
      # pcs resource disable neutron-l3-agent-clone
      # pcs resource disable neutron-metadata-agent-clone
    3. 升级相关的软件包
      # yum upgrade 'openstack-neutron*' 'python-neutron*'
    4. 为在 neutron.conf 文件中启用的高级 Openstack Networking 服务安装软件包,例如 openstack-neutron-vpnaasopenstack-neutron-fwaasopenstack-neutron-lbaas
      # yum install openstack-neutron-vpnaas
      # yum install openstack-neutron-fwaas
      # yum install openstack-neutron-lbaas
      安装这些软件包会创建相关的配置文件。
    5. 对于 neutron.conf 文件中的 VPNaaS 和 LBaaS 服务的项,把 service_provider 项复制到相关的 neutron-*aas.conf 文件中(位于 /etc/neutron),并在 neutron.conf 文件中注释掉这些项。
      对于 FWaaS 服务项,service_provider 参数需要保留在 neutron.conf 文件中。
    6. 在每个运行 LBaaS 代理的节点上安装 openstack-neutron-lbaas 软件包。
      # yum install openstack-neutron-lbaas
    7. 重新加载 systemd 来使更新的单元文件生效:
      # systemctl daemon-reload
    8. 更新 OpenStack Networking 数据库的 schema:
      # openstack-db --service neutron --update
    9. 在升级完 OpenStack Networking 服务后,您需要编辑 rootwrap dhcp.filter 配置文件。
      替换 /usr/share/neutron/rootwrap/dhcp.filters 文件中的 dnsmasq 的值。例如,进行以下替换:
      dnsmasq: EnvFilter, env, root, CONFIG_FILE=, NETWORK_ID=, dnsmasq
      dnsmasq: CommandFilter, dnsmasq, root
    10. 在 Pacemaker 中清理 OpenStack Networking 资源:
      # pcs resource cleanup neutron-metadata-agent-clone
      # pcs resource cleanup neutron-l3-agent-clone
      # pcs resource cleanup neutron-dhcp-agent-clone
      # pcs resource cleanup neutron-openvswitch-agent-clone
      # pcs resource cleanup neutron-server-clone
    11. 在 Pacemaker 中重启 OpenStack Networking 资源:
      # pcs resource enable neutron-metadata-agent-clone
      # pcs resource enable neutron-l3-agent-clone
      # pcs resource enable neutron-dhcp-agent-clone
      # pcs resource enable neutron-openvswitch-agent-clone
      # pcs resource enable neutron-server-clone
    12. 把清理代理(cleanup agent)还给 Pacemaker 控制:
      # pcs resource manage neutron-ovs-cleanup-clone
      # pcs resource manage neutron-netns-cleanup-clone
    13. 您需要等待,直到 pcs status 显示以上资源已运行。
    升级 Dashboard (horizon):
    1. 在 Pacemaker 中停止 Dashboard 资源:
      # pcs resource disable horizon-clone
    2. 您需要等待,直到 pcs status 显示这个服务已经停止运行。
    3. 更新相关的软件包:
      # yum upgrade httpd 'openstack-dashboard*' 'python-django*'
    4. 重新加载 systemd 来使更新的单元文件生效:
      # systemctl daemon-reload
    5. 修改 Dashboard 的配置:
      修改 Apache 的配置:
      openstack-dashboard 软件包会安装 /etc/httpd/conf.d/openstack-dashboard.conf 文件,但是 Staypuft 安装程序会使用 /etc/httpd/conf.d/15-horizon_vhost.conf 文件替换它。在升级完 horizon 后,将会有以下配置文件:
      • 15-horizon_vhost.conf
      • openstack-dashboard.conf
      • openstack-dashboard.conf.rpmnew
      确保您进行了以下修改:
      • 删除 openstack-dashboard.conf.rpmnew 文件:
        # rm openstack-dashboard.conf.rpmnew
      • 修改 15-horizon_vhost.conf 文件,替换
        Alias /static "/usr/share/openstack-dashboard/static"
        Alias /dashboard/static "/usr/share/openstack-dashboard/static"
      修改 Dashboard 配置:
      openstack-dashboard 软件包会安装 /etc/openstack-dashboard/local_settings 文件。在升级后,您会找到以下配置文件:
      • /etc/openstack-dashboard/local_settings
      • /etc/openstack-dashboard/local_settings.rpmnew
      确保您进行了以下修改:
      • 备份已存在的 local_settings 文件:
        # cp local_settings local_settings.old
      • local_settings.rpmnew 文件重命名为 local_settings
        # mv local_settings.rpmnew local_settings
      • 使用 local_settings.old 文件中的相关值替换以下配置选项:
        • ALLOWED_HOSTS
        • SECRET_KEY
        • CACHES
        • OPENSTACK_KEYSTONE_URL
      • 在所有控制器上重启 web 服务器来使改变生效:
        # service httpd restart
    6. 在 Pacemaker 中清理 Dashboard 资源:
      #  pcs resource cleanup horizon-clone
    7. 在 Pacemaker 中重启 Dashboard 资源:
      #  pcs resource enable horizon-clone
    8. 您需要等待,直到 pcs status 显示以上资源已运行。
    升级 Compute 主机 (nova):
    在每个 Compute 主机上:
    1. 停止所有 OpenStack 服务:
      # openstack-service stop
    2. 升级所有软件包:
      # yum upgrade
    3. 如果要对 Compute 主机进行升级,您需要明确设置 API 版本的限制来确保您的 Juno 和 Kilo 环境间的兼容性。
      在启动 Kilo 控制器或 Compute 服务前,您需要把 nova.conf 文件中的 [upgrade_levels] 段落中的 compute 选项设置为 juno
      # crudini --set /etc/nova/nova.conf upgrade_levels compute juno
      您需要在控制器和 Compute 主机上进行这个修改。
    4. 启动所有 OpenStack 服务:
      # openstack-service start
    5. 在把所有主机都升级到 Kilo 后,您需要把在前一步中设置的 API 限制删除。在所有节点上运行:
      # crudini --del /etc/nova/nova.conf upgrade_levels compute
    升级后的任务:
    1. 在完成所有服务升级后,您需要在所有系统上执行一个完整的软件包升级。
      # yum upgrade
      这将确保所有软件包都是最新的。您可能需要计划在今后的某个时间重启您的 OpenStack 主机,从而保证所有运行的进程都使用最新版本的代码。
    2. 检查生成的配置文件。更新的软件包会创建与 Red Hat Enterprise Linux OpenStack Platform 7 版本的服务相对应的 .rpmnew 文件。
      新版本的 OpenStack 服务可能不再支持特定的配置选项,您需要查看 OpenStack 日志中的不再支持的警告信息,并解决它们。否则,在今后进行的升级中可能会出现问题。如需了解更多与配置选项相关的信息,请参阅 Configuration ReferenceRed Hat Enterprise Linux OpenStack Platform Documentation Suite)。

法律通告

Copyright © 2015 Red Hat, Inc.
This document is licensed by Red Hat under the Creative Commons Attribution-ShareAlike 3.0 Unported License. If you distribute this document, or a modified version of it, you must provide attribution to Red Hat, Inc. and provide a link to the original. If the document is modified, all Red Hat trademarks must be removed.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.