Parallel Cloud Migration for Red Hat Enterprise Linux OpenStack Platform 6 (Juno)
1. Parallel Cloud Migration
-
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. Pre-Upgrade Tasks on RHEL 6 Environment
-
Application data All OpenStack application data (MySQL database storage, Block Storage volumes, images) must be stored either on dedicated local devices or on filesystems or volumes provided by a remote server.Ensure that this data is not erased or overwritten as part of the RHEL 7 installation.If the data cannot be preserved across the upgrade, ensure that you back it up first. A simple solution is to mount an NFS share from another system and copy the appropriate directories:
#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/Note
Here and in the rest of the article, BACKUP refers to the location where your backup directory is mounted. -
Configuration files Ensure that you have complete backups of your OpenStack configuration files. This includes everything in
/etc, as well as any stored credentials (for Identity, MySQL, etc) located in/rootor other local user home directories.For more information on the new, updated and deprecated configuration options for each service , see Configuration Reference available from: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux_OpenStack_Platform/. -
Hostnames and addresses In order to simplify the upgrade process, these instructions require that you configure your new RHEL 7 hosts at the same IP address and hostname as the RHEL 6 hosts you are replacing. Your options are:
-
You can give you RHEL 6 hosts a new IP address so that the original address is available for your replacement RHEL 7 hosts. This ensures that you will continue to have any access to the configuration files and other data hosted on your existing controllers, but it does require that you have the additional hardware available to set up new hosts while preserving your old ones.
-
You can perform the RHEL 7 installation on your RHEL 6 hosts. While this does not require additional hardware, you will need to ensure that you have backups of all your configuration files and other data.
-
-
If you are using the Cinder LVM backend Detach any Block Storage volumes prior to starting the upgrade process. RHEL7 introduces the LIO iSCSI backend, which replaces the TGT backend used in RHEL6, and this change means that the iSCSI target configuration will not be preserved across the upgrade.
Note
If you are installing with an automated answer file using the Red Hat Enterprise Linux OpenStack Installer, taking a volume offline is not enough. You have to ensure that the mapping protects the local Block Storage LVMs.
3. Configure Content Delivery Network (CDN) Channels
Note
-
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
Note
#subscription-manager repos \--enable=rhel-7-server-rh-common-rpms
3.1. Content Delivery Network (CDN) Channels
#subscription-manager repos --enable=[reponame]
#subscription-manager repos --disable=[reponame]
The following tables outline the channels for Red Hat Enterprise Linux 7.
Table 1. Required Channels
| Channel | Repository Name |
|---|---|
| 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
|
Table 2. Optional Channels
| Channel | Repository Name |
|---|---|
| Red Hat Enterprise Linux 7 Server - Optional |
rhel-7-server-optional-rpms
|
The following tables outline the channels for the Red Hat Enterprise Linux OpenStack Platform installer.
Table 3. Required Channels
| Channel | Repository Name |
|---|---|
| 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
|
The following table outlines the channels you must disable to ensure Red Hat Enterprise Linux OpenStack Platform 6 functions correctly.
Table 4. Disable Channels
| Channel | Repository Name |
|---|---|
| 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. Upgrade the Controller Node
Procedure 1. Upgrading the Controller Node
-
Deploy RHEL 7 controller nodes
-
Deploy RHEL 7 onto a new set of servers, and restore your basic system configuration (interface definitions, storage attachments, etc) by installing some prerequisite packages:
#yum install -y \openstack-selinux \openvswitch -
Activate the openvswitch service:
#systemctl enable openvswitch#systemctl start openvswitch -
If you are using the LVM backend for Block Storage service, you will also need to install and activate the targetcli package for managing the LIO suybsystem:
#yum -y install targetcli#systemctl enable target#systemctl start target -
Activate the LVM volume groups that contain your Block Storage volumes:
#vgchange -ay
-
-
Restore the Network Configuration
-
Ensure that you restore the
/etc/sysconfig/network-scriptsfiles required by your OpenStack Networking configuration, such asifcfg-br-ex:#cp BACKUP/etc/sysconfig/network-scripts/ifcfg-br-ex \/etc/sysconfig/network-scripts/ifcfg-br-ex -
Activate the interfaces:
#ifup br-ex
-
-
Restore iptables Rules
-
Ensure that any local firewall configuration that was defined on your RHEL6 controller node is imported into the RHEL7 controller node by copying your RHEL 6
/etc/sysconfig/iptablesinto/etc/sysconfig/iptableson your RHEL 7 host. -
Install the
iptables-servicespackage:#yum install -y iptables-services -
Stop the
iptablesservice:#systemctl stop iptables -
Restore your
iptablesconfiguration from backup:#cp BACKUP/etc/sysconfig/iptables /etc/sysconfig/iptables -
Activate the
iptablesservice:#systemctl enable iptables#systemctl start iptables
-
-
Install
rabbitmq-server-
Install the
rabbitmq-serverpackage:#yum install -y rabbitmq-server -
Migrate any
rabbitmqconfiguration files from your RHEL6 controllers into/etc/rabbitmqon your RHEL7 controller:#rsync -a BACKUP/etc/rabbitmq/ /etc/rabbitmq -
Activate the
rabbitmq-serverservice:#systemctl enable rabbitmq-server#systemctl start rabbitmq-server
-
-
Install
mariadb-server-
Install the
mariadb-serverpackage:#yum install -y mariadb-server -
Either re-mount your
/var/lib/mysqldirectory (and modify/etc/fstabappropriately), or restore the contents of/var/lib/mysqlfrom your backups:#rsync -a BACKUP/var/lib/mysql/ /var/lib/mysql/ -
Restore the
/root/.my.conffile from your backups, if it exists:#cp BACKUP/root/.my.cnf /root/.my.cnf -
Ensure correct ownership of files in
/var/lib/mysql:#chown -R mysql:mysql /var/lib/mysql#fixfiles restore /var/lib/mysql/ -
Activate the
mariadbservice:#systemctl enable mariadb#systemctl start mariadb -
Perform any necessary database updates:
#mysql_upgradeVerify that you are able to connect to the database server with themysqlcommand line client. A successful connection looks like this:#mysqlWelcome 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)]>
-
-
Install Identity service
-
Install the
openstack-keystonepackage:#yum install -y openstack-keystone -
Copy the Identity service configuration files from your RHEL6 controller into
/etc/keystoneon your RHEL7 controller:#rsync -a BACKUP/etc/keystone/ /etc/keystone/ -
Upgrade the Identity service database schema:
#sudo -u keystone keystone-manage db_sync -
Activate the Identity service:
#systemctl enable openstack-keystone#systemctl start openstack-keystone -
Load your Identity service administrative credentials and verify that Identity is operating correctly:
#. /root/keystonerc_admin#keystone endpoint-list
Note
The steps to follow assume that your Identity service credentials have been loaded into your environment. -
-
Install Block Storage service
-
Install the
openstack-cinderpackage:#yum install -y openstack-cinder -
Copy the Block Storage configuration files from your RHEL6 controller into
/etc/cinderon your RHEL7 controller:#rsync -a BACKUP/etc/cinder/ /etc/cinder/Note
If you are using the LVM backend, you will need to updatecinder.confto use the new LIO driver. Edit the/etc/cinder/cinder.confas follows:[DEFAULT]
iscsi_helper=lioadm -
Upgrade the Block Storage database schema:
#sudo -u cinder cinder-manage db sync -
Activate the Block Storage services:
#systemctl enable openstack-cinder-{api,volume,scheduler}#systemctl start openstack-cinder-{api,volume,scheduler} -
Verify that the Block Storage API is responding correctly and that your volumes are available:
#cinder list
-
-
Install Image service
-
Install the
openstack-glancepackage:#yum install -y openstack-glance -
Copy the Image service configuration files from your RHEL6 controller into
/etc/glanceon your RHEL7 controller:#rsync -a BACKUP/etc/glance/ /etc/glance/ -
Upgrade the Image service database schema:
#sudo -u glance glance-manage db sync -
Ensure the correct ownership on the Image service log and data directories:
#chown -R glance:glance /var/lib/glance#fixfiles restore /var/lib/glance -
Activate the Image services:
#systemctl enable openstack-glance-{api,registry}#systemctl start openstack-glance-{api,registry} -
Verify that the Image service is responding correctly:
#glance image-list
-
-
Install OpenStack Networking
-
Install the
openstack-neutronpackage as well as packages for any OpenStack Networking plugins you are using (such asopenstack-neutron-ml2andopenstack-neutron-openvswitch):#yum install -y openstack-neutron{,-ml2,-openvswitch} -
Copy the OpenStack Networking configuration files from your RHEL6 controller into
/etc/neutronon the RHEL7 controller:#rsync -a BACKUP/etc/neutron/ /etc/neutron/Note
Correct the permissions on these files, because the OpenStack Networking UID and GID on your system may be different.#find /etc/neutron \! -group root -exec chgrp neutron {} \; -
Upgrade the OpenStack Networking database schema:
#neutron-db-manage --config-file /etc/neutron/neutron.conf \--config-file /etc/neutron/plugin.ini \upgrade head -
Activate the OpenStack Networking service:
#systemctl enable neutron-{dhcp-agent,l3-agent,metadata-agent,openvswitch-agent,server}#systemctl start neutron-{dhcp-agent,l3-agent,metadata-agent,openvswitch-agent,server}You may need to activate additional Neutron agents to support things like LBaaS and VPNaaS. -
Verify that OpenStack Networking agents have started and are reporting properly:
#neutron agent-listThe output of this command should show the list of openvswitch agents on your compute hosts:+--------------------------------------+--------------------+------------------+-------+----------------+---------------------------+ | 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 | +--------------------------------------+--------------------+------------------+-------+----------------+---------------------------+
These listings should show:-)in thealivecolumn.
-
-
Install Compute
-
Install the
openstack-novapackage:#yum install -y openstack-nova -
Copy the Compute configuration files from your RHEL6 controller into
/etc/novaon your RHEL7 controller:#rsync -a BACKUP/etc/nova/ /etc/nova/ -
Modify
nova.confto cap the Compute API at an Icehouse-compatible version by adding the following to the upgrade-levels section of the config file:[upgrade-levels]
compute = 3.23.1conductor = 3.23.1Note
This is necessary in order for your Juno controller to inter-operate with your Icehouse compute nodes. -
Upgrade the Compute database schema:
#sudo -u nova nova-manage db sync -
Activate Compute services on your controller:
#systemctl enable openstack-nova-{api,cert,conductor,consoleauth,novncproxy,scheduler}#systemctl start openstack-nova-{api,cert,conductor,consoleauth,novncproxy,scheduler} -
Verify that your Compute services have started correctly:
#nova service-listYou should see both the services on your controller as well as thenova-computeservices running on your compute nodes:+----+------------------+------------------+----------+---------+-------+----------------------------+-----------------+ | 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 | - | +----+------------------+------------------+----------+---------+-------+----------------------------+-----------------+
Thenova-computeservices should show up in theStatecolumn.
-
-
Install Dashboard
-
Install the
openstack-dashboardpackage:#yum install -y openstack-dashboard -
Copy the Dashboard configuration files from your RHEL6 controller to
/etc/openstack-dashboardon your RHEL7 controller:#rsync -a BACKUP/etc/openstack-dashboard/ \/etc/openstack-dashboard/Note
Enable thehttpd_can_network_connectSELinux boolean:setsebool httpd_can_network_connect=true -
Activate the Apache service:
#systemctl enable httpd#systemctl start httpd
-
5. Upgrade the Compute Nodes
Procedure 2. Upgrading the Compute Nodes
-
Migrate Compute Instances
-
Migrate any running instances onto other compute nodes prior to reinstalling a compute node with RHEL7.If your environment supports live migration, you can use the
nova live-migrationcommand (as a user with administrative credentials):#nova live-migration SERVER_UUIDThis will move the instance to another available compute node.If your environment does not support live migration, you can use thenova migratecommand:#nova migrate SERVER_UUIDThis will pause the virtual server and resume it on another available compute host. -
Servers will be in the
CONFIRM_RESIZEstate. For each server, run theresize-confirmcommand:#nova resize-confirm SERVER_UUIDNote
For thenova migratecommand to work, thenovauser on the source host must be able to connect usingsshto thenovauser on the remote host.For more information on migrating instances, see https://access.redhat.com/articles/1265613.
-
-
Deploy a RHEL7 Compute Node
-
Install some prerequisite packages:
#yum install -y openstack-selinux\openvswitch\ -
Activate the
openvswitchandlibvirtdservices:#systemctl enable openvswitch#systemctl start openvswitch
-
-
Install Virtualization Support
-
Install the
libvirtandqemu-kvmpackages:#yum install -y libvirt qemu-kvm -
Restore your
libvirtdconfiguration from backups:#cp BACKUP/etc/libvirt/libvirtd.conf \/etc/libvirtd.conf -
Activate the
libvirtdservice:#systemctl enable libvirtd#systemctl start libvirtd
-
-
Restore iptables Rules
-
Ensure that any local firewall configuration that was defined on your RHEL6 compute node is imported into the RHEL7 compute node.
-
Install the
iptables-servicespackage:#yum install -y iptables -services -
Stop the
iptablesservice:#systemctl stop iptables -
Restore your
iptablesconfiguration from backups:#cp BACKUP/etc/sysconfig/iptables /etc/sysconfig/iptables -
Activate the
iptablesservice:#systemctl enable iptables#systemctl start iptables
-
-
Install OpenStack Networking
-
Install the OpenStack Networking OpenVswitch agent:
#yum install -y openstack-neutron-openvswitch -
Restore your OpenStack Networking configuration from your backups:
#rsync -a BACKUP/etc/neutron/ /etc/neutron/ -
Activate the OpenStack Networking services on the host:
#systemctl enable neutron-openvswitch-agent neutron-ovs-cleanup#systemctl start neutron-openvswitch-agent -
On your controller, use the
neutron agent-listcommand to verify that the agent on your compute node is reporting correctly.
-
-
Install Compute
-
Install the
openstack-nova-computepackage:#yum install -y openstack-nova-compute -
Restore your Compute configuration from your backups:
#rsync -a BACKUP/etc/nova -
Edit the
nova.confto cap the compute API at an Icehouse compatible version:[upgrade levels]
compute = 3.23.1Note
This is necessary in order for your Juno controller to inter-operate with your Icehouse compute nodes. -
Activate the Compute services on the compute host:
#systemctl enable openstack-nova-compute#systemctl start openstack-nova-compute -
On your controller, use the
nova service-listcommand to verify that thenova-computeservice on your compute host is reporting correctly:#nova service-list
-
6. Remove API Version Restrictions
upgrade-levels restrictions applied to your controllers and compute hosts during the upgrade process and restart all Nova services:
#openstack-service restart nova
Comments