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
This commit is contained in:
zhiyuan_cai 2017-09-20 11:22:38 +08:00
parent 77a495f2ea
commit 22d8b40113
2 changed files with 38 additions and 43 deletions

View File

@ -63,7 +63,7 @@ function init_common_tricircle_conf {
} }
function init_local_nova_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 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_region=$2
local central_neutron_port=$3 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" echo "Configuring Nova API for Tricircle to work with cell V2"
cp $NOVA_CONF $NOVA_CONF.0 iniset $NOVA_CONF neutron region_name $central_region
iniset $NOVA_CONF.0 neutron region_name $central_region iniset $NOVA_CONF neutron url "$Q_PROTOCOL://$SERVICE_HOST:$central_neutron_port"
iniset $NOVA_CONF.0 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) 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 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) 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 openstack endpoint set --region $central_region $place_endpoint_id
stop_process n-api restart_service devstack@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_apache_server restart_apache_server
} }

View File

@ -23,7 +23,12 @@ Setup
friendly). End user can access CentralRegion endpoint of Nova and Neutron to friendly). End user can access CentralRegion endpoint of Nova and Neutron to
experience the integration of Nova cell v2 and Tricircle. 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 .. 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 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:: - 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 you can see that this command returns you one row showing the host of node2
is already mapped:: is already mapped::
@ -46,15 +51,15 @@ Setup
This host is registered to Nova API in node2, which is already stopped by us, 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:: 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. then we can register this host again in step4.
- 4 In node1, run the following commands to register the new cell:: - 4 In node1, run the following commands to register the new cell::
nova-manage cell_v2 create_cell --name cell2 \ nova-manage cell_v2 create_cell --name cell2 \
--transport-url rabbit://$rabbit_user:$rabbit_passwd@$node2_ip:5672/ \ --transport-url rabbit://$rabbit_user:$rabbit_passwd@$node2_ip:5672/nova_cell1 \
--database_connection mysql+pymysql://$db_user:$db_passwd@$node2_ip/nova?charset=utf8 --database_connection mysql+pymysql://$db_user:$db_passwd@$node2_ip/nova_cell1?charset=utf8
nova-manage cell_v2 discover_hosts nova-manage cell_v2 discover_hosts
@ -86,17 +91,17 @@ Setup
+----+------------------+-----------+----------+---------+-------+----------------------------+ +----+------------------+-----------+----------+---------+-------+----------------------------+
| ID | Binary | Host | Zone | Status | State | Updated At | | ID | Binary | Host | Zone | Status | State | Updated At |
+----+------------------+-----------+----------+---------+-------+----------------------------+ +----+------------------+-----------+----------+---------+-------+----------------------------+
| 5 | nova-conductor | zhiyuan-1 | internal | enabled | up | 2017-05-27T06:04:37.000000 | | 5 | nova-scheduler | zhiyuan-1 | internal | enabled | up | 2017-09-20T06:56:02.000000 |
| 7 | nova-scheduler | zhiyuan-1 | internal | enabled | up | 2017-05-27T06:04:36.000000 | | 6 | nova-conductor | zhiyuan-1 | internal | enabled | up | 2017-09-20T06:56:09.000000 |
| 8 | nova-consoleauth | zhiyuan-1 | internal | enabled | up | 2017-05-27T06:04:39.000000 | | 8 | nova-consoleauth | zhiyuan-1 | internal | enabled | up | 2017-09-20T06:56:01.000000 |
| 9 | nova-compute | zhiyuan-1 | nova | enabled | up | 2017-05-27T06:04:42.000000 | | 1 | nova-conductor | zhiyuan-1 | internal | enabled | up | 2017-09-20T06:56:07.000000 |
| 4 | nova-conductor | zhiyuan-2 | internal | enabled | up | 2017-05-27T06:04:40.000000 | | 3 | nova-compute | zhiyuan-1 | nova | enabled | up | 2017-09-20T06:56:10.000000 |
| 6 | nova-scheduler | zhiyuan-2 | internal | enabled | down | 2017-05-27T02:56:50.000000 | | 1 | nova-conductor | zhiyuan-2 | internal | enabled | up | 2017-09-20T06:56:07.000000 |
| 7 | nova-consoleauth | zhiyuan-2 | internal | enabled | up | 2017-05-27T06:04:36.000000 | | 3 | nova-compute | zhiyuan-2 | nova | enabled | up | 2017-09-20T06:56:09.000000 |
| 8 | nova-compute | zhiyuan-2 | nova | enabled | up | 2017-05-27T06:04:38.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:: - 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 | | ID | Binary | Host | Zone | Status | State | Updated At |
+----+------------------+-----------+----------+---------+-------+----------------------------+ +----+------------------+-----------+----------+---------+-------+----------------------------+
| 5 | nova-conductor | zhiyuan-1 | internal | enabled | up | 2017-05-27T06:04:37.000000 | | 5 | nova-scheduler | zhiyuan-1 | internal | enabled | up | 2017-09-20T06:55:52.000000 |
| 7 | nova-scheduler | zhiyuan-1 | internal | enabled | up | 2017-05-27T06:04:36.000000 | | 6 | nova-conductor | zhiyuan-1 | internal | enabled | up | 2017-09-20T06:55:59.000000 |
| 8 | nova-consoleauth | zhiyuan-1 | internal | enabled | up | 2017-05-27T06:04:39.000000 | | 8 | nova-consoleauth | zhiyuan-1 | internal | enabled | up | 2017-09-20T06:56:01.000000 |
| 9 | nova-compute | zhiyuan-1 | nova | enabled | up | 2017-05-27T06:04:42.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 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 in node1 may not recognize it. We find that restarting n-api can solve this
problem. 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.