[openstack-dev] [tricircle] playing tricircle with two node configuration

joehuang joehuang at huawei.com
Mon Mar 28 08:08:41 UTC 2016


Hi,

Agree, it’s quite important not to use Nova-network in devstack. In devstack local.conf, make sure the Neutron service is enabled and Nova-network is disabled.

# Use Neutron instead of nova-network
disable_service n-net
enable_service q-svc
enable_service q-svc1
enable_service q-dhcp
enable_service q-agt

And also check the configuration in Nova to use Neutron

Best Regards
Chaoyi Huang ( Joe Huang )

From: Vega Cai [mailto:luckyvega.g at gmail.com]
Sent: Monday, March 28, 2016 2:55 PM
To: Yipei Niu
Cc: OpenStack Development Mailing List (not for usage questions); joehuang
Subject: Re: [openstack-dev] [tricircle] playing tricircle with two node configuration

Hi Yipei,

Check "network_api_class" and "use_neutron" options in your nova.conf. It seems that your nova API is not configured to use neutron.

BR
Zhiyuan

On 28 March 2016 at 13:25, Yipei Niu <newypei at gmail.com<mailto:newypei at gmail.com>> wrote:
Hi, all,

After I execute the command "nova boot --flavor 1 --image c30b097c-b185-4f70-9fcd-09ffdaee5793 --nic net-id=a9059cde-3065-4615-859a-facd6aa66b76 --availability-zone az1 vm1", there exist some problem with the argument port. In t-ngw.log, I find that the status of port switches from ACTIVE to DOWN, which is marked as bold below. Is it the reason why I failed to boot a VM?

2016-03-28 11:49:44.026 ^[[00;32mDEBUG neutronclient.client [^[[01;36mreq-414f74df-019a-425c-8d49-a081706b2bd4 ^[[00;36madmin admin^[[00;32m] ^[[01;35m^[[00;32mREQ: curl -i http://192.168.56.101:9696//v2.0/ports.json<http://192.168.56.101:9696/v2.0/ports.json> -X POST -H "User-Agent: python-neutronclient" -H "X-Auth-Token: 7cfcfb91173a4920adaf24db7eebd773" -d '{"port": {"network_id": "a9059cde-3065-4615-859a-facd6aa66b76", "admin_state_up": true}}'^[[00m ^[[00;33mfrom (pid=17537) http_log_req /usr/local/lib/python2.7/dist-packages/neutronclient/common/utils.py:141^[[00m
2016-03-28 11:49:44.254 ^[[00;32mDEBUG neutronclient.client [^[[01;36mreq-414f74df-019a-425c-8d49-a081706b2bd4 ^[[00;36madmin admin^[[00;32m] ^[[01;35m^[[00;32mRESP: 201 {'Date': 'Mon, 28 Mar 2016 03:49:44 GMT', 'Connection': 'keep-alive', 'Content-Type': 'application/json; charset=UTF-8', 'Content-Length': '384', 'X-Openstack-Request-Id': 'req-b824dc9e-2fcf-4922-96a5-83beb1f0bff3'} {"port": {"status": "ACTIVE", "name": "", "admin_state_up": true, "network_id": "a9059cde-3065-4615-859a-facd6aa66b76", "tenant_id": "29a524d386754a94850277afea1e569f", "device_owner": "", "mac_address": "fa:16:3e:11:bd:09", "fixed_ips": [{"subnet_id": "2bb5f6fd-01b5-4ad3-ac41-eb8a89a6323d", "ip_address": "10.0.8.5"}], "id": "e27dc15d-188f-4d60-a38c-f48052d6330b", "device_id": ""}}^[[00m ^[[00;33mfrom (pid=17537) http_log_resp /usr/local/lib/python2.7/dist-packages/neutronclient/common/utils.py:150^[[00m
2016-03-28 11:49:44.277 ^[[00;32mDEBUG neutronclient.client [^[[01;36mreq-414f74df-019a-425c-8d49-a081706b2bd4 ^[[00;36madmin admin^[[00;32m] ^[[01;35m^[[00;32mREQ: curl -i http://192.168.56.101:20001//v2.0/ports.json<http://192.168.56.101:20001/v2.0/ports.json> -X POST -H "User-Agent: python-neutronclient" -H "X-Auth-Token: 7cfcfb91173a4920adaf24db7eebd773" -d '{"port": {"name": "e27dc15d-188f-4d60-a38c-f48052d6330b", "admin_state_up": true, "network_id": "25ebd3c0-ae47-4e77-be35-16d815bffe5c", "tenant_id": "29a524d386754a94850277afea1e569f", "mac_address": "fa:16:3e:11:bd:09", "fixed_ips": [{"subnet_id": "fd1abd0d-9398-4848-a3cf-57858868a480", "ip_address": "10.0.8.5"}]}}'^[[00m ^[[00;33mfrom (pid=17537) http_log_req /usr/local/lib/python2.7/dist-packages/neutronclient/common/utils.py:141^[[00m
2016-03-28 11:49:44.669 ^[[00;32mDEBUG neutronclient.client [^[[01;36mreq-414f74df-019a-425c-8d49-a081706b2bd4 ^[[00;36madmin admin^[[00;32m] ^[[01;35m^[[00;32mRESP: 201 {'Date': 'Mon, 28 Mar 2016 03:49:44 GMT', 'Connection': 'keep-alive', 'Content-Type': 'application/json; charset=UTF-8', 'Content-Length': '808', 'X-Openstack-Request-Id': 'req-d286f85c-bc4b-4d7c-9915-666fe13b48b5'} {"port": {"status": "DOWN", "binding:host_id": "", "allowed_address_pairs": [], "dns_assignment": [{"hostname": "host-10-0-8-5", "ip_address": "10.0.8.5", "fqdn": "host-10-0-8-5.openstacklocal."}], "device_owner": "", "binding:profile": {}, "port_security_enabled": true, "fixed_ips": [{"subnet_id": "fd1abd0d-9398-4848-a3cf-57858868a480", "ip_address": "10.0.8.5"}], "id": "0bbf77a4-c4e4-43ad-89a0-e55f053ef4da", "security_groups": ["16f02958-2a4f-4f58-b560-b9fa76be1b0c"], "device_id": "", "name": "e27dc15d-188f-4d60-a38c-f48052d6330b", "admin_state_up": true, "network_id": "25ebd3c0-ae47-4e77-be35-16d815bffe5c", "dns_name": "", "binding:vif_details": {}, "binding:vnic_type": "normal", "binding:vif_type": "unbound", "tenant_id": "29a524d386754a94850277afea1e569f", "mac_address": "fa:16:3e:11:bd:09"}}^[[00m ^[[00;33mfrom (pid=17537) http_log_resp /usr/local/lib/python2.7/dist-packages/neutronclient/common/utils.py:150^[[00m
2016-03-28 11:49:44.810 ^[[00;36mINFO eventlet.wsgi.server [^[[01;36mreq-414f74df-019a-425c-8d49-a081706b2bd4 ^[[00;36madmin admin^[[00;36m] ^[[01;35m^[[00;36mTraceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/eventlet/wsgi.py", line 454, in handle_one_response
    result = self.application(self.environ, start_response)
  File "/usr/local/lib/python2.7/dist-packages/pecan/middleware/recursive.py", line 56, in __call__
    return self.application(environ, start_response)
  File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__
    resp = self.call_func(req, *args, **self.kwargs)
  File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func
    return self.func(req, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/keystonemiddleware/auth_token/__init__.py", line 456, in __call__
    response = req.get_response(self._app)
  File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1317, in send
    application, catch_exc_info=False)
  File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1281, in call_application
    app_iter = application(self.environ, start_response)
  File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__
    resp = self.call_func(req, *args, **self.kwargs)
  File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func
    return self.func(req, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/oslo_middleware/request_id.py", line 37, in __call__
    response = req.get_response(self.application)
  File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1317, in send
    application, catch_exc_info=False)
  File "/usr/local/lib/python2.7/dist-packages/eventlet/wsgi.py", line 454, in handle_one_response
    result = self.application(self.environ, start_response)
  File "/usr/local/lib/python2.7/dist-packages/pecan/middleware/recursive.py", line 56, in __call__
    return self.application(environ, start_response)
  File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__
    resp = self.call_func(req, *args, **self.kwargs)
  File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func
    return self.func(req, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/keystonemiddleware/auth_token/__init__.py", line 456, in __call__
    response = req.get_response(self._app)
  File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1317, in send
    application, catch_exc_info=False)
  File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1281, in call_application
    app_iter = application(self.environ, start_response)
  File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__
    resp = self.call_func(req, *args, **self.kwargs)
  File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func
    return self.func(req, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/oslo_middleware/request_id.py", line 37, in __call__
    response = req.get_response(self.application)
  File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1317, in send
    application, catch_exc_info=False)
    return self.func(req, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/oslo_middleware/request_id.py", line 37, in __call__
    response = req.get_response(self.application)
  File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1317, in send
    application, catch_exc_info=False)
  File "/usr/local/lib/python2.7/dist-packages/pecan/core.py", line 829, in __call__
    return super(Pecan, self).__call__(environ, start_response)
  File "/usr/local/lib/python2.7/dist-packages/pecan/core.py", line 678, in __call__
    self.invoke_controller(controller, args, kwargs, state)
  File "/usr/local/lib/python2.7/dist-packages/pecan/core.py", line 572, in invoke_controller
    result = controller(*args, **kwargs)
  File "/opt/stack/tricircle/tricircle/nova_apigw/controllers/server.py", line 376, in post
    nics=nics)
  File "/opt/stack/tricircle/tricircle/common/client.py", line 87, in handle_args
    return func(*args, **kwargs)
  File "/opt/stack/tricircle/tricircle/common/client.py", line 358, in create_resources
    return handle.handle_create(cxt, resource, *args, **kwargs)
  File "/opt/stack/tricircle/tricircle/common/resource_handle.py", line 227, in handle_create
    *args, **kwargs).to_dict()
  File "/usr/local/lib/python2.7/dist-packages/novaclient/v2/servers.py", line 1038, in create
    **boot_kwargs)
  File "/usr/local/lib/python2.7/dist-packages/novaclient/v2/servers.py", line 555, in _boot
    return_raw=return_raw, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/novaclient/base.py", line 302, in _create
    _resp, body = self.api.client.post(url, body=body)
  File "/usr/local/lib/python2.7/dist-packages/novaclient/client.py", line 451, in post
    return self._cs_request(url, 'POST', **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/novaclient/client.py", line 426, in _cs_request
    resp, body = self._time_request(url, method, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/novaclient/client.py", line 399, in _time_request
    resp, body = self.request(url, method, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/novaclient/client.py", line 393, in request
    raise exceptions.from_response(resp, body, url, method)
BadRequest: Unknown argument: port (HTTP 400) (Request-ID: req-d6719f21-ee97-49ed-a058-a303b16abcf1)
^[[00m
2016-03-28 11:49:44.814 ^[[00;36mINFO eventlet.wsgi.server [^[[01;36mreq-414f74df-019a-425c-8d49-a081706b2bd4 ^[[00;36madmin admin^[[00;36m] ^[[01;35m^[[00;36m192.168.56.101 "POST /v2.1/29a524d386754a94850277afea1e569f/servers HTTP/1.1" status: 500  len: 139 time: 2.1919141^[[00m

Best regards,
Yipei

On Wed, Mar 23, 2016 at 1:19 PM, Shinobu Kinjo <shinobu.kj at gmail.com<mailto:shinobu.kj at gmail.com>> wrote:
On Wed, Mar 23, 2016 at 12:41 PM, joehuang <joehuang at huawei.com<mailto:joehuang at huawei.com>> wrote:
> Hi, Yipei,
>
>
>
> When you play Tricircle, it’s important to know that Tricircle is the
> OpenStack API gateway to other OpenStack instances. In the Readme, Pod1,
> Pod2 are two OpenStack instances, before trying Tricircle, you can make sure
> the environment is normal or not by executeing command separately on Pod1,
> Pod2, just  Nova –os-region-name Pod1, or Nova –os-region-name Pod2, in
> fact, because Pod1,Pod2 are two normal OpenStack instances, any command to
> Pod1,Pod2 should be successful.  Otherwise that means there are some issue
> in the installation of the environment itself. Only when each bottom
> OpenStack can work correctly, then you can even manually add Tricircle, or
> through the scripts in the github to install Tircircle automaticly, as the
> API gateway to Pod1 and Pod2, just like you add one load balancer before
> your multiple web servers.

Yeah, above explanation is really essential for the tricircle.

>
>
>
> After the Tricircle was added, then the API will flow from Tricircle
> services like Nova-APIGW/Cinder-APIGW/Neutron API to the bottom Pod1, Pod2.
>
>
>
> So if you use Nova boot, and some error happened, you can ask question:
>
> 1.      Is the command sent to the Tricircle Nova-APIGW?
>
> 2.      What’ll will do for the Nova-APIGW for the next step?
>
> 3.      Is the API request forwarded by Tricircle correctly to the proper
> bottom OpenStack?
>
> 4.      Is the bottom OpenStack working normal even without Tricircle?
>
> 5.      Is the API request forwarded by Tricircle includes the correct
> request content?
>
> 6.      …
>
>
>
> You can carry the map before you try to fix the issue. And break down a big
> system into smaller part, and make sure which part works fine, which not in
> order.
>
>
>
> From the information you provided, can’t make judgment the error is occurred
> at Tricircle services, or bottom pod, or which pod. Don’t know which step
> the error occurred. And don’t know the request information, how the
> requested will be routed and processed, a lot of context needed to diagnose
> an error.
>
>
>
> Best Regards
>
> Chaoyi Huang ( Joe Huang )
>
>
>
> From: Yipei Niu [mailto:newypei at gmail.com<mailto:newypei at gmail.com>]
> Sent: Wednesday, March 23, 2016 10:36 AM
> To: OpenStack Development Mailing List (not for usage questions)
> Cc: joehuang; Zhiyuan Cai
> Subject: [tricircle] playing tricircle with two node configuration
>
>
>
> Hi, Joe and Zhiyuan,
>
>
>
> I have already finished installing devstack in two nodes with tricircle. I
> encounter some errors when testing cross-pod L3 networking with DevStack. I
> followed the README.md in github, every thing goes well until I boot virtual
> machines with the following command:
>
>
>
> nova boot --flavor 1 --image 60a8184b-a4be-463d-a8a1-48719edc37a3 --nic
> net-id=76356099-f3bd-40a5-83bd-600b78b671eb --availability-zone az1 vm1
>
>
>
> The info in the terminal is as follows:
>
> Your request was processed by a Nova API which does not support
> microversions (X-OpenStack-Nova-API-Version header is missing from
> response). Warning: Response may be incorrect.
>
> Your request was processed by a Nova API which does not support
> microversions (X-OpenStack-Nova-API-Version header is missing from
> response). Warning: Response may be incorrect.
>
> Your request was processed by a Nova API which does not support
> microversions (X-OpenStack-Nova-API-Version header is missing from
> response). Warning: Response may be incorrect.
>
> ERROR (ClientException): Unknown Error (HTTP 500)
>
>
>
> I run rejoin-stack.sh and find some error in n-api screen. In n-api.log, the
> error is as follows:
>
> 2016-03-22 19:19:38.248 ^[[01;31mERROR nova.api.openstack.extensions
> [^[[01;36mreq-cf58e7aa-bd7d-483f-aa57-bca5268ce963 ^[[00;36madmin
> admin^[[01;31m] ^[[01;35m^[[01;31mUnexpected exception in API method^[[00m
>
> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions
> ^[[01;35m^[[00mTraceback (most recent call last):
>
> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions
> ^[[01;35m^[[00m  File "/opt/stack/nova/nova/api/openstack/extensions.py",
> line 478, in wrapped
>
> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions
> ^[[01;35m^[[00m    return f(*args, **kwargs)
>
> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions
> ^[[01;35m^[[00m  File "/opt/stack/nova/nova/api/validation/__init__.py",
> line 73, in wrapper
>
> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions
> ^[[01;35m^[[00m    return func(*args, **kwargs)
>
> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions
> ^[[01;35m^[[00m  File "/opt/stack/nova/nova/api/validation/__init__.py",
> line 73, in wrapper
>
> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions
> ^[[01;35m^[[00m    return func(*args, **kwargs)
>
> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions
> ^[[01;35m^[[00m  File
> "/opt/stack/nova/nova/api/openstack/compute/servers.py", line 604, in create
>
> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions
> ^[[01;35m^[[00m    **create_kwargs)
>
> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions
> ^[[01;35m^[[00m  File "/opt/stack/nova/nova/hooks.py", line 149, in inner
>
> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions
> ^[[01;35m^[[00m    rv = f(*args, **kwargs)
>
> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions
> ^[[01;35m^[[00m  File "/opt/stack/nova/nova/compute/api.py", line 1504, in
> create
>
> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions
> ^[[01;35m^[[00m    check_server_group_quota=check_server_group_quota)
>
> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions
> ^[[01;35m^[[00m  File "/opt/stack/nova/nova/compute/api.py", line 1097, in
> _create_instance
>
> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions
> ^[[01;35m^[[00m    auto_disk_config, reservation_id, max_count)
>
> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions
> ^[[01;35m^[[00m  File "/opt/stack/nova/nova/compute/api.py", line 871, in
> _validate_and_build_base_options
>
> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions
> ^[[01;35m^[[00m    pci_request_info, requested_networks)
>
> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions
> ^[[01;35m^[[00m  File "/opt/stack/nova/nova/network/neutronv2/api.py", line
> 981, in create_pci_requests_for_sriov_ports
>
> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions
> ^[[01;35m^[[00m    neutron = get_client(context, admin=True)
>
> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions
> ^[[01;35m^[[00m  File "/opt/stack/nova/nova/network/neutronv2/api.py", line
> 149, in get_client
>
> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions
> ^[[01;35m^[[00m    _ADMIN_AUTH = _load_auth_plugin(CONF)
>
> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions
> ^[[01;35m^[[00m  File "/opt/stack/nova/nova/network/neutronv2/api.py", line
> 125, in _load_auth_plugin
>
> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions
> ^[[01;35m^[[00m    raise neutron_client_exc.Unauthorized(message=err_msg)
>
> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions
> ^[[01;35m^[[00mUnauthorized: Unknown auth plugin: None
>
> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions
> ^[[01;35m^[[00m
>
> 2016-03-22 20:04:19.992 ^[[00;36mINFO nova.api.openstack.wsgi
> [^[[01;36mreq-ed35efe8-5dc0-40b0-bb2b-c1a73618aa50 ^[[00;36madmin
> admin^[[00;36m] ^[[01;35m^[[00;36mHTTP exception thrown: Unexpected API
> Error. Please report this at http://bugs.launchpad.net/nova/ and attach the
> Nova API log if possible.
>
> <class 'neutronclient.common.exceptions.Unauthorized'>^[[00m
>
> 2016-03-22 20:04:19.993 ^[[00;32mDEBUG nova.api.openstack.wsgi
> [^[[01;36mreq-ed35efe8-5dc0-40b0-bb2b-c1a73618aa50 ^[[00;36madmin
> admin^[[00;32m] ^[[01;35m^[[00;32mReturning 500 to user: Unexpected API
> Error. Please report this at http://bugs.launchpad.net/nova/ and attach the
> Nova API log if possible.
>
> <class 'neutronclient.common.exceptions.Unauthorized'>^[[00m ^[[00;33mfrom
> (pid=17273) __call__ /opt/stack/nova/nova/api/openstack/wsgi.py:1180^[[00m
>
> 2016-03-22 20:04:20.007 ^[[00;36mINFO nova.osapi_compute.wsgi.server
> [^[[01;36mreq-ed35efe8-5dc0-40b0-bb2b-c1a73618aa50 ^[[00;36madmin
> admin^[[00;36m] ^[[01;35m^[[00;36m192.168.56.101 "POST
> /v2.1/1f824c3b19a64fa1a401125f41324731/servers HTTP/1.1" status: 500 len:
> 520 time: 1.1018770^[[00m
>
>
>
> Best regards,
>
> Yipei
>
>
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe<http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe>
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>



--
Email:
shinobu at linux.com<mailto:shinobu at linux.com>
GitHub:
shinobu-x
Blog:
Life with Distributed Computational System based on OpenSource


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20160328/9198965c/attachment.html>


More information about the OpenStack-dev mailing list