Translated message

A translation of this page exists in English.

把云并行迁移到 Red Hat Enterprise Linux OpenStack Platform 6 (Juno)

已更新 -


1. 并行云迁移

除了正常的升级外,您也可以考虑部署一个完全独立的 Red Hat Enterprise Linux OpenStack Platform 6 环境,然后根据您的具体情况逐步把资源从旧的环境中迁移到新的环境。许多用户可能会认为这个方法太过复杂,但是和其它的升级方法相比,这个方法对正常的系统运行影响最小,您可以根据具体情况考虑使用这个方法。
有关详情请查看:
  • Deploying OpenStack: Learning Environments (Manual Set Up) (manual installation for instructional purposes)
  • Deploying OpenStack: Proof-of-Concept Environments (Packstack) (Packstack procedures for an all-in-one installation)
  • Deploying OpenStack: Enterprise Environments (Red Hat Enterprise Linux OpenStack Platform Installer) guides


2. 升级前需要在 RHEL 6 环境中进行的准备

本节列出了把 RHEL 6 上的 Icehouse 升级到部署在 RHEL 7 上的 Juno 的先决条件和要求。
  • 应用程序数据   所有 OpenStack 应用程序数据(MySQL 数据库存储、Block Storage 卷、镜像)都需要保存在一个专门的本地设备中;或保存在由一个远程服务器提供的文件系统或卷中。
    请确定这些数据不会在进行 RHEL 7 安装时被覆盖。
    如果这些数据无法在升级的过程中被保留,请首先对它们进行一个备份。一个简单的方法是从另外一个系统上挂载一个 NFS 共享,把应用程序数据复制到其中:
    # mkdir -p BACKUP/var/lib/{glance,nova,mysql}/
    # rsync -a /var/lib/mysql/ BACKUP/var/lib/mysql/
    # rsync -a /var/lib/glance/ BACKUP/var/lib/glance/
    # rsync -a /var/lib/nova/ BACKUP/var/lib/nova/

    备注

    在本文档中,BACKUP 代表挂载的备份目录。
  • 配置文件   您需要完全备份 OpenStack 配置文件,包括 /etc 目录中的所有内容、/root 以及其它本地用户的家目录中的验证信息(如 Identity、MySQL 等的验证信息)。
    如需了解更多与每个服务的配置选项相关的信息,请参阅 Configuration Referencehttps://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux_OpenStack_Platform/)。
  • 主机名和地址   为了简化升级的过程,这里所介绍的内容需要您的新 RHEL 7 主机的 IP 地址和主机名与 RHEL 6 主机的相同。您可以:
    • 为 RHEL 6 主机分配新的 IP 地址,从而可以把原来的 IP 地址分配给 RHEL 7 主机。这可以确保继续访问您的 controller 中的配置文件和其它数据,但是您需要额外的硬件来设置新主机。
    • 您可以在 RHEL 6 主机上直接安装 RHEL 7。这将不需要额外的硬件,但您需要确保已经备份了所有配置文件和其它数据。
  • 如果您使用 Cinder LVM 后端   在进行升级操作前断开所有 Block Storage 卷。RHEL7 包括了新的 LIO iSCSI 后端来替换 RHEL 6 中的 TGT 后端,这意味着 iSCSI 目标配置不会在升级的过程中被保留。

    备注

    如果您通过 Red Hat Enterprise Linux OpenStack Installer 使用自动的应答文件(answer file)进行安装,把卷设置为离线状态可能并不足以保证数据不会丢失,您需要确保相关的映射对本地 Block Storage LVM 进行了保护。


3. 配置 Configure Content Delivery Network(CDN)频道

本节包括了部署 Red Hat Enterprise Linux OpenStack Platform 6 所需的频道和软件仓库信息。

备注

在安装 Red Hat Enterprise Linux OpenStack Platform 6 前,请确认您的系统无法访问老的 Red Hat OpenStack 仓库。例如,对于 CDN,取消订阅或禁用以下仓库:
  • Red Hat OpenStack 1.0 (Essex) -- rhel-server-ost-6-preview-rpms
  • Red Hat OpenStack 2.1 (Folsom) -- rhel-server-ost-6-folsom-rpms
  • Red Hat Enterprise Linux OpenStack Platform 3 (Grizzly) -- rhel-server-ost-6-3-rpms
  • Red Hat Enterprise Linux OpenStack Platform 4 Beta (Havana) -- rhel-6-server-openstack-beta-rpms
  • 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 客户端系统镜像需要 cloud-init,推荐使用 Red Hat Common for RHEL Server 频道。
对于 Red Hat Enterprise Linux 7,运行:
# subscription-manager repos \
--enable=rhel-7-server-rh-common-rpms


3.1. Content Delivery Network (CDN) 频道

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

下表包括了 Red Hat Enterprise Linux 7 的频道。



表 1.  所需的频道

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


表 2.  可选频道

频道 软件仓库名
Red Hat Enterprise Linux 7 Server - Optional rhel-7-server-optional-rpms
Red Hat Enterprise Linux OpenStack Platform Installer

下表包括了 Red Hat Enterprise Linux OpenStack Platform installer 的频道。



表 3.  所需频道

频道 软件仓库名
Foreman-RHEL-7 rhel-7-server-openstack-6.0-installer-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-6.0-files
禁用频道

为了使 Red Hat Enterprise Linux OpenStack Platform 6 可以正常工作,请禁用下表中的频道。



表 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"


4. 升级 Controller 节点


升级的第一步是把 controller 节点从 Icehouse 升级到 Juno。


步骤 1. 升级 Controller 节点

  1. 部署 RHEL 7 controller 节点

    1. 在一组新服务器上部署 RHEL 7,安装相应的软件包来恢复基本系统配置(接口定义、存储关联等):
      # yum install -y \
      openstack-selinux \
      openvswitch
    2. 激活 openvswitch 服务:
      # systemctl enable openvswitch
      # systemctl start openvswitch
      
    3. 如果您现在使用 LVM 作为 Block Storage 服务的后端,则还需要安装并激活用于管理 LIO 子系统的 targetcli 软件包:
      # yum -y install targetcli
      # systemctl enable target
      # systemctl start target
      
    4. 激活包括您的 Block Storage 卷的 LVM 卷组:
      # vgchange -ay
  2. 恢复网络配置

    1. 恢复 OpenStack Networking 所需要的 /etc/sysconfig/network-scripts 中的文件,如 ifcfg-br-ex
      # cp BACKUP/etc/sysconfig/network-scripts/ifcfg-br-ex \
      /etc/sysconfig/network-scripts/ifcfg-br-ex
    2. 激活该接口:
      # ifup br-ex
  3. 恢复 iptables 规则设置

    1. 把您在 RHEL6 controller 节点中定义的所有本地防火墙配置导入到 RHEL7 controller 节点中。您需要把 RHEL 6 主机中的 /etc/sysconfig/iptables 复制到 RHEL 7 主机的 /etc/sysconfig/iptables
    2. 安装 iptables-services 软件包:
      # yum install -y iptables-services
    3. 停止 iptables 服务:
      # systemctl stop iptables
    4. 从备份中恢复您的 iptables 设置:
      # cp BACKUP/etc/sysconfig/iptables /etc/sysconfig/iptables
    5. 激活 iptables 服务:
      # systemctl enable iptables
      # systemctl start iptables
      
  4. 安装 rabbitmq-server

    1. 安装 rabbitmq-server 软件包:
      # yum install -y rabbitmq-server
    2. 从您的 RHEL 6 controller 上把 rabbitmq 配置文件迁移到 RHEL7 controller 中的 /etc/rabbitmq
      # rsync -a BACKUP/etc/rabbitmq/ /etc/rabbitmq
    3. 激活 rabbitmq-server 服务:
      # systemctl enable rabbitmq-server
      # systemctl start rabbitmq-server
  5. 安装 mariadb-server

    1. 安装 mariadb-server 软件包:
      # yum install -y mariadb-server
    2. 重新挂载 /var/lib/mysql 目录(并相应修改 /etc/fstab),或从备份中恢复 /var/lib/mysql 的内容:
      # rsync -a BACKUP/var/lib/mysql/ /var/lib/mysql/
    3. 如果存在,从您的备份中恢复 /root/.my.conf 文件:
      # cp BACKUP/root/.my.cnf /root/.my.cnf
    4. /var/lib/mysql 中的文件设置正确的所有者权限:
      # chown -R mysql:mysql /var/lib/mysql
      # fixfiles restore /var/lib/mysql/
      
    5. 激活 mariadb 服务:
      # systemctl enable mariadb
      # systemctl start mariadb
      
    6. 执行所需的数据库更新:
      # mysql_upgrade
      确认可以通过 mysql 命令行客户端访问到数据库服务器。如果可以正常访问,它的输出应该和以下类似:
      # mysql
      Welcome to the MariaDB monitor.  Commands end with ; or \g.
      Your MariaDB connection id is 419
      Server version: 5.5.40-MariaDB MariaDB Server
      
      Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.
      
      Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
      
      MariaDB [(none)]> 
      
  6. 安装 Identity 服务

    1. 安装 openstack-keystone 软件包:
      # yum install -y openstack-keystone
    2. 把 Identity 服务配置文件从 RHEL6 controller 复制到 RHEL7 controller 的 /etc/keystone 中:
      # rsync -a BACKUP/etc/keystone/ /etc/keystone/
    3. 升级 Identity 服务数据库 schema:
      # sudo -u keystone keystone-manage db_sync
    4. 激活 Identity 服务:
      # systemctl enable openstack-keystone
      # systemctl start openstack-keystone
    5. 加载 Identity 服务的管理身份认证并检查 Identity 是否在正常运行:
      # . /root/keystonerc_admin
      # keystone endpoint-list

    备注

    以下步骤假设您的 Identity 服务身份验证信息已经被加载到环境中。
  7. 安装 Block Storage 服务

    1. 安装 openstack-cinder 软件包:
      # yum install -y openstack-cinder
    2. 把 Block Storage 配置文件从 RHEL6 controller 复制到 RHEL7 controller 的 /etc/cinder 中:
      # rsync -a BACKUP/etc/cinder/ /etc/cinder/

      备注

      如果您现在使用 LVM 后端,则需要更新 cinder.conf 文件来使用新的 LIO 驱动。请编辑 /etc/cinder/cinder.conf 的以下内容:
      [DEFAULT]
      iscsi_helper=lioadm
    3. 升级 Block Storage 数据库 schema:
      # sudo -u cinder cinder-manage db sync
    4. 激活 Block Storage 服务:
      # systemctl enable openstack-cinder-{api,volume,scheduler}
      # systemctl start openstack-cinder-{api,volume,scheduler}
      
    5. 确认 Block Storage API 可以正常工作,卷可以被使用:
      # cinder list
  8. 安装 Image 服务

    1. 安装 openstack-glance 软件包:
      # yum install -y openstack-glance
    2. 把 Image 服务配置文件从 RHEL6 controller 复制到 RHEL7 controller 的 /etc/glance 中:
      # rsync -a BACKUP/etc/glance/ /etc/glance/
    3. 升级 Image 服务数据库 schema:
      # sudo -u glance glance-manage db sync
    4. 使 Image 服务的日志和数据目录有正确的所有者权限设置:
      # chown -R glance:glance /var/lib/glance
      # fixfiles restore /var/lib/glance
    5. 激活 Image 服务:
      # systemctl enable openstack-glance-{api,registry}
      # systemctl start openstack-glance-{api,registry}
      
    6. 检查 Image 服务可以正常运行:
      # glance image-list
  9. 安装 OpenStack Networking

    1. 安装 openstack-neutron 软件包,以及所有需要使用的 OpenStack Networking 插件(如 openstack-neutron-ml2openstack-neutron-openvswitch):
      # yum install -y openstack-neutron{,-ml2,-openvswitch}
    2. 把 OpenStack Networking 服务配置文件从 RHEL6 controller 复制到 RHEL7 controller 的 /etc/neutron 中:
      # rsync -a BACKUP/etc/neutron/ /etc/neutron/

      备注

      因为系统中的 OpenStack Networking UID 和 GID 可能会有所不同,修改这些文件的权限设置。
      # find /etc/neutron \! -group root -exec chgrp neutron {} \;
    3. 升级 OpenStack Networking 数据库 schema:
      # neutron-db-manage --config-file /etc/neutron/neutron.conf \
      --config-file /etc/neutron/plugin.ini \
      upgrade head
    4. 激活 OpenStack Networking 服务:
      # systemctl enable neutron-{dhcp-agent,l3-agent,metadata-agent,openvswitch-agent,server}
      # systemctl start neutron-{dhcp-agent,l3-agent,metadata-agent,openvswitch-agent,server}
      您可能还需要激活额外的 Neutron 代理来支持 LBaaS 和 VPNaaS 等服务。
    5. 检查 OpenStack Networking 代理已被启动,并可以正常运行:
      # neutron agent-list
      这个命令的输出应该包括 coompute 主机上的 openvswitch 代理列表:
      +--------------------------------------+--------------------+------------------+-------+----------------+---------------------------+
      | id                                   | agent_type         | host             | alive | admin_state_up | binary                    |
      +--------------------------------------+--------------------+------------------+-------+----------------+---------------------------+
      .
      .
      .
      | 15736a0a-acc2-4227-b0e3-3bb720351870 | Open vSwitch agent | compute-1.local  | :-)   | True           | neutron-openvswitch-agent |
      | f87cc391-5263-4808-bf80-8b7d3caf8716 | Open vSwitch agent | compute-0.local  | :-)   | True           | neutron-openvswitch-agent |
      +--------------------------------------+--------------------+------------------+-------+----------------+---------------------------+
      
      这些列表应该在 alive 栏中显示 :-)
  10. 安装 Compute

    1. 安装 openstack-nova 软件包:
      # yum install -y openstack-nova
    2. 把 Compute 配置文件从您的 RHEL6 controller 复制到您的 RHEL7 controller 的 /etc/nova 中:
      # rsync -a BACKUP/etc/nova/ /etc/nova/
    3. 修改 nova.conf 文件中的 upgrade-levels 一段的内容来把 Compute API 限制在一个和 Icehouse 兼容的版本中:
      [upgrade-levels]
      compute = 3.23.1
      conductor = 3.23.1

      备注

      Juno controller 和 Icehouse compute 节点一起进行操作时需要这个设置。
    4. 升级 Compute 数据库 schema:
      # sudo -u nova nova-manage db sync
    5. 在您的 controller 上激活 Compute 服务:
      # systemctl enable openstack-nova-{api,cert,conductor,consoleauth,novncproxy,scheduler}
      # systemctl start openstack-nova-{api,cert,conductor,consoleauth,novncproxy,scheduler}
      
    6. 验证您的 Compute 服务已被正常启动:
      # nova service-list
      您应该看到在 controller 中的服务,以及在 compute 节点上运行的 nova-compute 服务:
      +----+------------------+------------------+----------+---------+-------+----------------------------+-----------------+
      | Id | Binary           | Host             | Zone     | Status  | State | Updated_at                 | Disabled Reason |
      +----+------------------+------------------+----------+---------+-------+----------------------------+-----------------+
      .
      .
      .
      | 5  | nova-compute     | compute-0.local  | nova     | enabled | up    | 2015-01-16T14:23:48.000000 | -               |
      | 6  | nova-compute     | compute-1.local  | nova     | enabled | up    | 2015-01-16T14:23:43.000000 | -               |
      +----+------------------+------------------+----------+---------+-------+----------------------------+-----------------+
      
      nova-compute 服务应该在 State 栏中显示。
  11. 安装 Dashboard

    1. 安装 openstack-dashboard 软件包:
      # yum install -y openstack-dashboard
    2. 把 Dashboard 配置文件从您的 RHEL6 controller 复制到您的 RHEL7 controller 的 /etc/openstack-dashboard 中:
      # rsync -a BACKUP/etc/openstack-dashboard/ \
      /etc/openstack-dashboard/

      备注

      启用 httpd_can_network_connect SELinux 设置:
      setsebool httpd_can_network_connect=true
    3. 激活 Apache 服务:
      # systemctl enable httpd
      # systemctl start httpd
      
到这一步,您应该已经具有了一个可以正常工作的 OpenStack 环境,其中的 controller 运行 Juno,compute 节点使用 Icehouse。


5. 升级 Compute 节点


现在您可以开始配置 Compute 节点。


步骤 2. 升级 Compute 节点

  1. 迁移 Compute 实例

    1. 在使用 RHEL7 重新安装一个 compute 节点前,把所有运行的实例迁移到其它 compute 节点上。
      如果您的环境支持实时迁移(live migration),您可以使用 nova live-migration 命令(用户需要具有管理权限):
      # nova live-migration SERVER_UUID
      这个命令会把实例移到另外一台可用的 compute 节点上。
      如果您的环境不支持实时迁移,您可以使用 nova migrate 命令:
      # nova migrate SERVER_UUID
      这个命令会暂停虚拟服务器,并在另外一台可用的 compute 主机上恢复它。
    2. 服务器会处于 CONFIRM_RESIZE 状态。对于每个服务器,运行 resize-confirm 命令:
      # nova resize-confirm SERVER_UUID

      备注

      为了使 nova migrate 命令可以工作,在源主机上的 nova 用户需要可以使用 ssh 连接到远程主机的 nova 用户上。
      如需了解更多与迁移实例相关的信息,请参阅 https://access.redhat.com/articles/1265613
  2. 部署 RHEL7 Compute 节点

    1. 安装需要的软件包:
      # yum install -y openstack-selinux \
      openvswitch \
    2. 激活 openvswitchlibvirtd 服务:
      # systemctl enable openvswitch
      # systemctl start openvswitch
  3. 安装 Virtualization 支持

    1. 安装 libvirtqemu-kvm 软件包:
      # yum install -y libvirt qemu-kvm
    2. 从备份中恢复 libvirtd 配置:
      # cp BACKUP/etc/libvirt/libvirtd.conf \
      /etc/libvirtd.conf
    3. 激活 libvirtd 服务:
      # systemctl enable libvirtd
      # systemctl start libvirtd
  4. 恢复 iptables 规则设置

    1. 把在 RHEL6 compute 节点中定义的所有本地防火墙配置导入到 RHEL7 compute 节点中。
    2. 安装 iptables-services 软件包:
      # yum install -y iptables -services
    3. 停止 iptables 服务:
      # systemctl stop iptables
    4. 从备份中恢复 iptables 配置:
      # cp BACKUP/etc/sysconfig/iptables /etc/sysconfig/iptables
    5. 激活 iptables 服务:
      # systemctl enable iptables
      # systemctl start iptables
      
  5. 安装 OpenStack Networking

    1. 安装 OpenStack Networking OpenVswitch 代理:
      # yum install -y openstack-neutron-openvswitch
    2. 从备份中恢复 OpenStack Networking 配置:
      # rsync -a BACKUP/etc/neutron/ /etc/neutron/
    3. 在主机上激活 OpenStack Networking 服务:
      # systemctl enable neutron-openvswitch-agent neutron-ovs-cleanup
      # systemctl start neutron-openvswitch-agent
      
    4. 在 controller 上使用 neutron agent-list 命令验证 compute 节点上的代理可以正常工作。
  6. 安装 Compute

    1. 安装 openstack-nova-compute 软件包:
      # yum install -y openstack-nova-compute
    2. 从备份中恢复 Compute 配置:
      # rsync -a BACKUP/etc/nova
    3. 编辑 nova.conf 文件把 compute API 限制在一个 Icehouse 兼容版本内:
      [upgrade levels]
      compute = 3.23.1

      备注

      Juno controller 和 Icehouse compute 节点一起进行操作时需要这个设置。
    4. 在 compute 主机上激活 Compute 服务:
      # systemctl enable openstack-nova-compute
      # systemctl start openstack-nova-compute
    5. 在 controller 上使用 nova service-list 命令验证 compute 节点上的 nova-compute 服务可以正常工作:
      # nova service-list


6. 删除 API 版本限制


当您完成所有 compute 主机升级后,删除升级过程中在 contorller 和 compute 主机上设置的所有 upgrade_levels 限制。然后重启 Nova 服务:
# openstack-service restart nova

Comments