如果您遇到问题,且无法完成 Red Hat OpenStack Platform (RHOSP) control plane 服务的使用,您可以回滚 control plane。
重要
如果您以任何方式更改 data plane 节点,则不要尝试回滚。只有在更改 control plane 时,您只能回滚 control plane 的采用。
在 control plane 采用过程中,RHOSP control plane 上的服务会停止但不被删除。在采用过程中,RHOSP control plane 上的数据库不会被编辑。control plane 上的 Red Hat OpenStack Services (RHOSO) control plane 接收原始 control plane 数据库的副本。回滚过程假定 data plane 尚未由采用过程修改,它仍然连接到 RHOSP control plane。
回滚过程由以下步骤组成:
恢复 RHOSP control plane 的功能。
删除部分或完全部署的 RHOSO control plane。
流程
要将源云恢复到工作状态,请启动之前在采用过程中停止的 RHOSP control plane 服务:
ServicesToStart=("tripleo_horizon.service"
"tripleo_keystone.service"
"tripleo_barbican_api.service"
"tripleo_barbican_worker.service"
"tripleo_barbican_keystone_listener.service"
"tripleo_cinder_api.service"
"tripleo_cinder_api_cron.service"
"tripleo_cinder_scheduler.service"
"tripleo_cinder_volume.service"
"tripleo_cinder_backup.service"
"tripleo_glance_api.service"
"tripleo_manila_api.service"
"tripleo_manila_api_cron.service"
"tripleo_manila_scheduler.service"
"tripleo_neutron_api.service"
"tripleo_placement_api.service"
"tripleo_nova_api_cron.service"
"tripleo_nova_api.service"
"tripleo_nova_conductor.service"
"tripleo_nova_metadata.service"
"tripleo_nova_scheduler.service"
"tripleo_nova_vnc_proxy.service"
"tripleo_aodh_api.service"
"tripleo_aodh_api_cron.service"
"tripleo_aodh_evaluator.service"
"tripleo_aodh_listener.service"
"tripleo_aodh_notifier.service"
"tripleo_ceilometer_agent_central.service"
"tripleo_ceilometer_agent_compute.service"
"tripleo_ceilometer_agent_ipmi.service"
"tripleo_ceilometer_agent_notification.service"
"tripleo_ovn_cluster_north_db_server.service"
"tripleo_ovn_cluster_south_db_server.service"
"tripleo_ovn_cluster_northd.service"
"tripleo_octavia_api.service"
"tripleo_octavia_health_manager.service"
"tripleo_octavia_rsyslog.service"
"tripleo_octavia_driver_agent.service"
"tripleo_octavia_housekeeping.service"
"tripleo_octavia_worker.service")
PacemakerResourcesToStart=("galera-bundle"
"haproxy-bundle"
"rabbitmq-bundle"
"openstack-cinder-volume"
"openstack-cinder-backup"
"openstack-manila-share")
echo "Starting systemd OpenStack services"
for service in ${ServicesToStart[*]}; do
for i in {1..3}; do
SSH_CMD=CONTROLLER${i}_SSH
if [ ! -z "${!SSH_CMD}" ]; then
if ${!SSH_CMD} sudo systemctl is-enabled $service &> /dev/null; then
echo "Starting the $service in controller $i"
${!SSH_CMD} sudo systemctl start $service
fi
fi
done
done
echo "Checking systemd OpenStack services"
for service in ${ServicesToStart[*]}; do
for i in {1..3}; do
SSH_CMD=CONTROLLER${i}_SSH
if [ ! -z "${!SSH_CMD}" ]; then
if ${!SSH_CMD} sudo systemctl is-enabled $service &> /dev/null; then
if ! ${!SSH_CMD} systemctl show $service | grep ActiveState=active >/dev/null; then
echo "ERROR: Service $service is not running on controller $i"
else
echo "OK: Service $service is running in controller $i"
fi
fi
fi
done
done
echo "Starting pacemaker OpenStack services"
for i in {1..3}; do
SSH_CMD=CONTROLLER${i}_SSH
if [ ! -z "${!SSH_CMD}" ]; then
echo "Using controller $i to run pacemaker commands"
for resource in ${PacemakerResourcesToStart[*]}; do
if ${!SSH_CMD} sudo pcs resource config $resource &>/dev/null; then
echo "Starting $resource"
${!SSH_CMD} sudo pcs resource enable $resource
else
echo "Service $resource not present"
fi
done
break
fi
done
echo "Checking pacemaker OpenStack services"
for i in {1..3}; do
SSH_CMD=CONTROLLER${i}_SSH
if [ ! -z "${!SSH_CMD}" ]; then
echo "Using controller $i to run pacemaker commands"
for resource in ${PacemakerResourcesToStop[*]}; do
if ${!SSH_CMD} sudo pcs resource config $resource &>/dev/null; then
if ${!SSH_CMD} sudo pcs resource status $resource | grep Started >/dev/null; then
echo "OK: Service $resource is started"
else
echo "ERROR: Service $resource is stopped"
fi
fi
done
break
fi
done
ServicesToStart=("tripleo_horizon.service"
"tripleo_keystone.service"
"tripleo_barbican_api.service"
"tripleo_barbican_worker.service"
"tripleo_barbican_keystone_listener.service"
"tripleo_cinder_api.service"
"tripleo_cinder_api_cron.service"
"tripleo_cinder_scheduler.service"
"tripleo_cinder_volume.service"
"tripleo_cinder_backup.service"
"tripleo_glance_api.service"
"tripleo_manila_api.service"
"tripleo_manila_api_cron.service"
"tripleo_manila_scheduler.service"
"tripleo_neutron_api.service"
"tripleo_placement_api.service"
"tripleo_nova_api_cron.service"
"tripleo_nova_api.service"
"tripleo_nova_conductor.service"
"tripleo_nova_metadata.service"
"tripleo_nova_scheduler.service"
"tripleo_nova_vnc_proxy.service"
"tripleo_aodh_api.service"
"tripleo_aodh_api_cron.service"
"tripleo_aodh_evaluator.service"
"tripleo_aodh_listener.service"
"tripleo_aodh_notifier.service"
"tripleo_ceilometer_agent_central.service"
"tripleo_ceilometer_agent_compute.service"
"tripleo_ceilometer_agent_ipmi.service"
"tripleo_ceilometer_agent_notification.service"
"tripleo_ovn_cluster_north_db_server.service"
"tripleo_ovn_cluster_south_db_server.service"
"tripleo_ovn_cluster_northd.service"
"tripleo_octavia_api.service"
"tripleo_octavia_health_manager.service"
"tripleo_octavia_rsyslog.service"
"tripleo_octavia_driver_agent.service"
"tripleo_octavia_housekeeping.service"
"tripleo_octavia_worker.service")
PacemakerResourcesToStart=("galera-bundle"
"haproxy-bundle"
"rabbitmq-bundle"
"openstack-cinder-volume"
"openstack-cinder-backup"
"openstack-manila-share")
echo "Starting systemd OpenStack services"
for service in ${ServicesToStart[*]}; do
for i in {1..3}; do
SSH_CMD=CONTROLLER${i}_SSH
if [ ! -z "${!SSH_CMD}" ]; then
if ${!SSH_CMD} sudo systemctl is-enabled $service &> /dev/null; then
echo "Starting the $service in controller $i"
${!SSH_CMD} sudo systemctl start $service
fi
fi
done
done
echo "Checking systemd OpenStack services"
for service in ${ServicesToStart[*]}; do
for i in {1..3}; do
SSH_CMD=CONTROLLER${i}_SSH
if [ ! -z "${!SSH_CMD}" ]; then
if ${!SSH_CMD} sudo systemctl is-enabled $service &> /dev/null; then
if ! ${!SSH_CMD} systemctl show $service | grep ActiveState=active >/dev/null; then
echo "ERROR: Service $service is not running on controller $i"
else
echo "OK: Service $service is running in controller $i"
fi
fi
fi
done
done
echo "Starting pacemaker OpenStack services"
for i in {1..3}; do
SSH_CMD=CONTROLLER${i}_SSH
if [ ! -z "${!SSH_CMD}" ]; then
echo "Using controller $i to run pacemaker commands"
for resource in ${PacemakerResourcesToStart[*]}; do
if ${!SSH_CMD} sudo pcs resource config $resource &>/dev/null; then
echo "Starting $resource"
${!SSH_CMD} sudo pcs resource enable $resource
else
echo "Service $resource not present"
fi
done
break
fi
done
echo "Checking pacemaker OpenStack services"
for i in {1..3}; do
SSH_CMD=CONTROLLER${i}_SSH
if [ ! -z "${!SSH_CMD}" ]; then
echo "Using controller $i to run pacemaker commands"
for resource in ${PacemakerResourcesToStop[*]}; do
if ${!SSH_CMD} sudo pcs resource config $resource &>/dev/null; then
if ${!SSH_CMD} sudo pcs resource status $resource | grep Started >/dev/null; then
echo "OK: Service $resource is started"
else
echo "ERROR: Service $resource is stopped"
fi
fi
done
break
fi
done
Copy to ClipboardCopied!Toggle word wrapToggle overflow
$ oc delete --ignore-not-found=true --wait=false openstackcontrolplane/openstack
$ oc patch openstackcontrolplane openstack --type=merge --patch '
metadata:
finalizers: []
' || true
while oc get pod | grep rabbitmq-server-0; do
sleep 2
done
while oc get pod | grep openstack-galera-0; do
sleep 2
done
$ oc delete --ignore-not-found=true --wait=false pod mariadb-copy-data
$ oc delete --ignore-not-found=true --wait=false pvc mariadb-data
$ oc delete --ignore-not-found=true --wait=false pod ovn-copy-data
$ oc delete --ignore-not-found=true secret osp-secret
Copy to ClipboardCopied!Toggle word wrapToggle overflow
后续步骤
恢复 RHOSP control plane 服务后,其内部状态可能会改变。在重试采用过程前,请验证所有 control plane 资源是否已移除,并且没有影响以下采用过程尝试的保留。您不能在另一个采用尝试中使用之前创建的数据库内容副本。您必须生成原始源数据库内容最新状态的新副本。有关生成数据库新副本的更多信息,请参阅将 数据库迁移到 control plane。