From 22d8b40113b0d2d28bb14924b076f5d383096b2e Mon Sep 17 00:00:00 2001 From: zhiyuan_cai Date: Wed, 20 Sep 2017 11:22:38 +0800 Subject: [PATCH] Update plugin.sh and document for cellv2 integration 1. What is the problem After the Pike release, systemd becomes the only runner for services, also more services adopt the mod_wsgi way to start their API server. As a result, our plugin.sh script and document for cellv2 integration don't work now. 2. What is the solution for the problem Update plugin.sh and document to adapt the changes. 3. What features need to be implemented to the Tricircle to realize the solution N/A Change-Id: I34843e1f765e8b0e64f68f0d89fe9e63106b60e4 --- devstack/plugin.sh | 29 +++++++------ doc/source/install/installation-cell.rst | 52 +++++++++++------------- 2 files changed, 38 insertions(+), 43 deletions(-) diff --git a/devstack/plugin.sh b/devstack/plugin.sh index 0d34c414..b8e2d506 100644 --- a/devstack/plugin.sh +++ b/devstack/plugin.sh @@ -63,7 +63,7 @@ function init_common_tricircle_conf { } function init_local_nova_conf { - iniset $NOVA_CONF glance api_servers http://$KEYSTONE_SERVICE_HOST:9292 + iniset $NOVA_CONF glance api_servers http://$KEYSTONE_SERVICE_HOST/image iniset $NOVA_CONF placement os_region_name $CENTRAL_REGION_NAME } @@ -228,28 +228,27 @@ function start_central_nova_server { local central_region=$2 local central_neutron_port=$3 - # reconfigure central neutron server to use our own central plugin echo "Configuring Nova API for Tricircle to work with cell V2" - cp $NOVA_CONF $NOVA_CONF.0 - iniset $NOVA_CONF.0 neutron region_name $central_region - iniset $NOVA_CONF.0 neutron url "$Q_PROTOCOL://$SERVICE_HOST:$central_neutron_port" + iniset $NOVA_CONF neutron region_name $central_region + iniset $NOVA_CONF neutron url "$Q_PROTOCOL://$SERVICE_HOST:$central_neutron_port" + + # Here we create new endpoints for central region instead of updating the + # endpoints in local region because at the end of devstack, the script tries + # to query the nova api in local region to check whether the nova-compute + # service is running. If we update the endpoint region from local region to + # central region, the check will fail and thus devstack fails + nova_url=$(openstack endpoint list --service compute --interface public --region $local_region -c URL -f value) + get_or_create_endpoint "compute" "$central_region" "$nova_url" + nova_legacy_url=$(openstack endpoint list --service compute_legacy --interface public --region $local_region -c URL -f value) + get_or_create_endpoint "compute_legacy" "$central_region" "$nova_legacy_url" - nova_endpoint_id=$(openstack endpoint list --service compute --interface public --region $local_region -c ID -f value) - openstack endpoint set --region $central_region $nova_endpoint_id - nova_legacy_endpoint_id=$(openstack endpoint list --service compute_legacy --interface public --region $local_region -c ID -f value) - openstack endpoint set --region $central_region $nova_legacy_endpoint_id image_endpoint_id=$(openstack endpoint list --service image --interface public --region $local_region -c ID -f value) openstack endpoint set --region $central_region $image_endpoint_id place_endpoint_id=$(openstack endpoint list --service placement --interface public --region $local_region -c ID -f value) openstack endpoint set --region $central_region $place_endpoint_id - stop_process n-api - # remove previous failure flag file since we are going to restart service - rm -f "$SERVICE_DIR/$SCREEN_NAME"/n-api.failure - sleep 20 - run_process n-api "$NOVA_BIN_DIR/nova-api --config-file $NOVA_CONF.0" - + restart_service devstack@n-api restart_apache_server } diff --git a/doc/source/install/installation-cell.rst b/doc/source/install/installation-cell.rst index 84880dbd..9016c0a9 100644 --- a/doc/source/install/installation-cell.rst +++ b/doc/source/install/installation-cell.rst @@ -23,7 +23,12 @@ Setup friendly). End user can access CentralRegion endpoint of Nova and Neutron to experience the integration of Nova cell v2 and Tricircle. -- 2 Enter the screen section in node2, stop n-api and n-sch. +- 2 Stop the following services in node2:: + + systemctl stop devstack@n-sch.service + systemctl stop devstack@n-super-cond.service + systemctl stop devstack@n-api.service + systemctl stop devstack@n-api-meta.service .. note:: Actually for cell v2, only one Nova API is required. We enable n-api in node2 because we need DevStack to help us create the necessary cell @@ -32,7 +37,7 @@ Setup - 3 In node2, run the following command:: - mysql -u$user -p$password -Dnova -e 'select host, mapped from compute_nodes + mysql -u$user -p$password -Dnova_cell1 -e 'select host, mapped from compute_nodes' you can see that this command returns you one row showing the host of node2 is already mapped:: @@ -46,15 +51,15 @@ Setup This host is registered to Nova API in node2, which is already stopped by us, We need to update this row to set "mapped" to 0:: - mysql -u$user -p$password -Dnova -e 'update compute_nodes set mapped = 0 where host = "zhiyuan-2"' + mysql -u$user -p$password -Dnova_cell1 -e 'update compute_nodes set mapped = 0 where host = "zhiyuan-2"' then we can register this host again in step4. - 4 In node1, run the following commands to register the new cell:: nova-manage cell_v2 create_cell --name cell2 \ - --transport-url rabbit://$rabbit_user:$rabbit_passwd@$node2_ip:5672/ \ - --database_connection mysql+pymysql://$db_user:$db_passwd@$node2_ip/nova?charset=utf8 + --transport-url rabbit://$rabbit_user:$rabbit_passwd@$node2_ip:5672/nova_cell1 \ + --database_connection mysql+pymysql://$db_user:$db_passwd@$node2_ip/nova_cell1?charset=utf8 nova-manage cell_v2 discover_hosts @@ -86,17 +91,17 @@ Setup +----+------------------+-----------+----------+---------+-------+----------------------------+ | ID | Binary | Host | Zone | Status | State | Updated At | +----+------------------+-----------+----------+---------+-------+----------------------------+ - | 5 | nova-conductor | zhiyuan-1 | internal | enabled | up | 2017-05-27T06:04:37.000000 | - | 7 | nova-scheduler | zhiyuan-1 | internal | enabled | up | 2017-05-27T06:04:36.000000 | - | 8 | nova-consoleauth | zhiyuan-1 | internal | enabled | up | 2017-05-27T06:04:39.000000 | - | 9 | nova-compute | zhiyuan-1 | nova | enabled | up | 2017-05-27T06:04:42.000000 | - | 4 | nova-conductor | zhiyuan-2 | internal | enabled | up | 2017-05-27T06:04:40.000000 | - | 6 | nova-scheduler | zhiyuan-2 | internal | enabled | down | 2017-05-27T02:56:50.000000 | - | 7 | nova-consoleauth | zhiyuan-2 | internal | enabled | up | 2017-05-27T06:04:36.000000 | - | 8 | nova-compute | zhiyuan-2 | nova | enabled | up | 2017-05-27T06:04:38.000000 | + | 5 | nova-scheduler | zhiyuan-1 | internal | enabled | up | 2017-09-20T06:56:02.000000 | + | 6 | nova-conductor | zhiyuan-1 | internal | enabled | up | 2017-09-20T06:56:09.000000 | + | 8 | nova-consoleauth | zhiyuan-1 | internal | enabled | up | 2017-09-20T06:56:01.000000 | + | 1 | nova-conductor | zhiyuan-1 | internal | enabled | up | 2017-09-20T06:56:07.000000 | + | 3 | nova-compute | zhiyuan-1 | nova | enabled | up | 2017-09-20T06:56:10.000000 | + | 1 | nova-conductor | zhiyuan-2 | internal | enabled | up | 2017-09-20T06:56:07.000000 | + | 3 | nova-compute | zhiyuan-2 | nova | enabled | up | 2017-09-20T06:56:09.000000 | +----+------------------+-----------+----------+---------+-------+----------------------------+ - Nova scheduler in host zhiyuan-2 is down because we stop it in step2. + zhiyuan-1 has two nova-conductor services, because one of them is a super + conductor service. - 6 Create two aggregates and put the two hosts in each aggregate:: @@ -128,22 +133,13 @@ Trouble Shooting +----+------------------+-----------+----------+---------+-------+----------------------------+ | ID | Binary | Host | Zone | Status | State | Updated At | +----+------------------+-----------+----------+---------+-------+----------------------------+ - | 5 | nova-conductor | zhiyuan-1 | internal | enabled | up | 2017-05-27T06:04:37.000000 | - | 7 | nova-scheduler | zhiyuan-1 | internal | enabled | up | 2017-05-27T06:04:36.000000 | - | 8 | nova-consoleauth | zhiyuan-1 | internal | enabled | up | 2017-05-27T06:04:39.000000 | - | 9 | nova-compute | zhiyuan-1 | nova | enabled | up | 2017-05-27T06:04:42.000000 | + | 5 | nova-scheduler | zhiyuan-1 | internal | enabled | up | 2017-09-20T06:55:52.000000 | + | 6 | nova-conductor | zhiyuan-1 | internal | enabled | up | 2017-09-20T06:55:59.000000 | + | 8 | nova-consoleauth | zhiyuan-1 | internal | enabled | up | 2017-09-20T06:56:01.000000 | + | 1 | nova-conductor | zhiyuan-1 | internal | enabled | up | 2017-09-20T06:55:57.000000 | + | 3 | nova-compute | zhiyuan-1 | nova | enabled | up | 2017-09-20T06:56:00.000000 | +----+------------------+-----------+----------+---------+-------+----------------------------+ Though new cell has been registered in the database, the running n-api process in node1 may not recognize it. We find that restarting n-api can solve this problem. - -- 2 After you create a server, the server turns into Error status with error - "No valid host was found" - - We check the log of n-sch process in node1 and find it says: "Found 2 cells", - this is incorrect since we have three cells including cell0. After restarting - n-sch, the log says "Found 3 cells". Try creating server again after that. - - Another reason for this problem we have found is that n-cpu doesn't sync - available resource with n-sch, restarting n-cpu can slove this problem.