參照https://github.com/mseknibilel/OpenStack-Grizzly-Install-Guide
安裝Havana后dashboard無法訪問,查看apache日志,發現:
[Tue Dec 03 06:21:58 2013] [error] Unauthorized: Unauthorized (HTTP 401) [Tue Dec 03 06:21:58 2013] [error] Internal Server Error: /horizon/admin/ [Tue Dec 03 06:21:58 2013] [error] Traceback (most recent call last): [Tue Dec 03 06:21:58 2013] [error] File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py", line 115, in get_response [Tue Dec 03 06:21:58 2013] [error] response = callback(request, *callback_args, **callback_kwargs) [Tue Dec 03 06:21:58 2013] [error] File "/usr/lib/python2.7/dist-packages/horizon/decorators.py", line 38, in dec [Tue Dec 03 06:21:58 2013] [error] return view_func(request, *args, **kwargs) [Tue Dec 03 06:21:58 2013] [error] File "/usr/lib/python2.7/dist-packages/horizon/decorators.py", line 86, in dec [Tue Dec 03 06:21:58 2013] [error] return view_func(request, *args, **kwargs) [Tue Dec 03 06:21:58 2013] [error] File "/usr/lib/python2.7/dist-packages/horizon/decorators.py", line 54, in dec [Tue Dec 03 06:21:58 2013] [error] return view_func(request, *args, **kwargs) [Tue Dec 03 06:21:58 2013] [error] File "/usr/lib/python2.7/dist-packages/horizon/decorators.py", line 38, in dec [Tue Dec 03 06:21:58 2013] [error] return view_func(request, *args, **kwargs) [Tue Dec 03 06:21:58 2013] [error] File "/usr/lib/python2.7/dist-packages/horizon/decorators.py", line 86, in dec [Tue Dec 03 06:21:58 2013] [error] return view_func(request, *args, **kwargs) [Tue Dec 03 06:21:58 2013] [error] File "/usr/lib/python2.7/dist-packages/django/views/generic/base.py", line 68, in view [Tue Dec 03 06:21:58 2013] [error] return self.dispatch(request, *args, **kwargs) [Tue Dec 03 06:21:58 2013] [error] File "/usr/lib/python2.7/dist-packages/django/views/generic/base.py", line 86, in dispatch [Tue Dec 03 06:21:58 2013] [error] return handler(request, *args, **kwargs) [Tue Dec 03 06:21:58 2013] [error] File "/usr/lib/python2.7/dist-packages/horizon/tables/views.py", line 155, in get [Tue Dec 03 06:21:58 2013] [error] handled = self.construct_tables() [Tue Dec 03 06:21:58 2013] [error] File "/usr/lib/python2.7/dist-packages/horizon/tables/views.py", line 146, in construct_tables [Tue Dec 03 06:21:58 2013] [error] handled = self.handle_table(table) [Tue Dec 03 06:21:58 2013] [error] File "/usr/lib/python2.7/dist-packages/horizon/tables/views.py", line 118, in handle_table [Tue Dec 03 06:21:58 2013] [error] data = self._get_data_dict() [Tue Dec 03 06:21:58 2013] [error] File "/usr/lib/python2.7/dist-packages/horizon/tables/views.py", line 182, in _get_data_dict [Tue Dec 03 06:21:58 2013] [error] self._data = {self.table_class._meta.name: self.get_data()} [Tue Dec 03 06:21:58 2013] [error] File "/usr/share/openstack-dashboard/openstack_dashboard/wsgi/../../openstack_dashboard/dashboards/admin/overview/views.py", line 59, in get_data [Tue Dec 03 06:21:58 2013] [error] data = super(GlobalOverview, self).get_data() [Tue Dec 03 06:21:58 2013] [error] File "/usr/share/openstack-dashboard/openstack_dashboard/wsgi/../../openstack_dashboard/usage/views.py", line 29, in get_data [Tue Dec 03 06:21:58 2013] [error] self.usage.get_limits() [Tue Dec 03 06:21:58 2013] [error] File "/usr/share/openstack-dashboard/openstack_dashboard/wsgi/../../openstack_dashboard/usage/base.py", line 178, in get_limits [Tue Dec 03 06:21:58 2013] [error] self.get_neutron_limits() [Tue Dec 03 06:21:58 2013] [error] File "/usr/share/openstack-dashboard/openstack_dashboard/wsgi/../../openstack_dashboard/usage/base.py", line 147, in get_neutron_limits [Tue Dec 03 06:21:58 2013] [error] api.neutron.is_security_group_extension_supported(self.request) [Tue Dec 03 06:21:58 2013] [error] File "/usr/share/openstack-dashboard/openstack_dashboard/wsgi/../../openstack_dashboard/api/neutron.py", line 761, in is_security_group_extension_supported [Tue Dec 03 06:21:58 2013] [error] return is_extension_supported(request, 'security-group') [Tue Dec 03 06:21:58 2013] [error] File "/usr/lib/python2.7/dist-packages/horizon/utils/memoized.py", line 33, in __call__ [Tue Dec 03 06:21:58 2013] [error] value = self.func(*args) [Tue Dec 03 06:21:58 2013] [error] File "/usr/share/openstack-dashboard/openstack_dashboard/wsgi/../../openstack_dashboard/api/neutron.py", line 741, in is_extension_supported [Tue Dec 03 06:21:58 2013] [error] extensions = list_extensions(request) [Tue Dec 03 06:21:58 2013] [error] File "/usr/lib/python2.7/dist-packages/horizon/utils/memoized.py", line 33, in __call__ [Tue Dec 03 06:21:58 2013] [error] value = self.func(*args) [Tue Dec 03 06:21:58 2013] [error] File "/usr/share/openstack-dashboard/openstack_dashboard/wsgi/../../openstack_dashboard/api/neutron.py", line 732, in list_extensions [Tue Dec 03 06:21:58 2013] [error] extensions_list = neutronclient(request).list_extensions() [Tue Dec 03 06:21:58 2013] [error] File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 108, in with_params [Tue Dec 03 06:21:58 2013] [error] ret = self.function(instance, *args, **kwargs) [Tue Dec 03 06:21:58 2013] [error] File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 286, in list_extensions [Tue Dec 03 06:21:58 2013] [error] return self.get(self.extensions_path, params=_params) [Tue Dec 03 06:21:58 2013] [error] File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 1183, in get [Tue Dec 03 06:21:58 2013] [error] headers=headers, params=params) [Tue Dec 03 06:21:58 2013] [error] File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 1168, in retry_request [Tue Dec 03 06:21:58 2013] [error] headers=headers, params=params) [Tue Dec 03 06:21:58 2013] [error] File "/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 1103, in do_request [Tue Dec 03 06:21:58 2013] [error] resp, replybody = self.httpclient.do_request(action, method, body=body) [Tue Dec 03 06:21:58 2013] [error] File "/usr/lib/python2.7/dist-packages/neutronclient/client.py", line 188, in do_request [Tue Dec 03 06:21:58 2013] [error] self.authenticate() [Tue Dec 03 06:21:58 2013] [error] File "/usr/lib/python2.7/dist-packages/neutronclient/client.py", line 224, in authenticate [Tue Dec 03 06:21:58 2013] [error] token_url = self.auth_url + "/tokens" [Tue Dec 03 06:21:58 2013] [error] TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
問題原因:keystone enpoints 配置不對
# keystone endpoint-list +----------------------------------+-----------+----------------------------------------------+----------------------------------------------+----------------------------------------------+----------------------------------+ | id | region | publicurl | internalurl | adminurl | service_id | +----------------------------------+-----------+----------------------------------------------+----------------------------------------------+----------------------------------------------+----------------------------------+ | 0c74dbc2965741ba8d422919cc87d137 | RegionOne | http://135.252.167.143:9696/ | http://135.252.167.143:9696/ | http://135.252.167.143:9696/ | 9b11a0a7a4414dfa8e6c4bd421f80873 | | 4963eb70de9d46a8827933630e8aed3a | RegionOne | http://135.252.167.143:8773/services/Cloud | http://135.252.167.143:8773/services/Cloud | http://135.252.167.143:8773/services/Admin | 038d194c12a742e58f808c8525358a39 | | 92a5c3b2d28645239c835a1faf48dcdf | RegionOne | http://135.252.167.143:9292/ | http://135.252.167.143:9292/ | http://135.252.167.143:9292/ | 19154d904d9c429e95e7c16f1d6d5720 | | c5e29713994441f897b2c4893ae1c597 | RegionOne | http://135.252.167.143:8774/v2/$(tenant_id)s | http://135.252.167.143:8774/v2/$(tenant_id)s | http://135.252.167.143:8774/v2/$(tenant_id)s | 8b9511b673784c0f9b9fc5a020c74579 | | e256af289933417fbff54be4839d4238 | RegionOne | http://135.252.167.143:5000/v2.0 | http://135.252.167.143:5000/v2.0 | http://135.252.167.143:35357/v2.0 | 8c735b1d72a44a5b8e24eb6779d33dc2 | | f05f48dd94fc4ff6b408fec9062eab44 | RegionOne | http://135.252.167.143:8776/v1/$(tenant_id)s | http://135.252.167.143:8776/v1/$(tenant_id)s | http://135.252.167.143:8776/v1/$(tenant_id)s | 1cbab544e802480c8361f239f905e8f5 | +----------------------------------+-----------+----------------------------------------------+----------------------------------------------+----------------------------------------------+----------------------------------+
mysql> select * from endpoint; +----------------------------------+----------------------------------+-----------+-----------+----------------------------------+----------------------------------------------+-------+ | id | legacy_endpoint_id | interface | region | service_id | url | extra | +----------------------------------+----------------------------------+-----------+-----------+----------------------------------+----------------------------------------------+-------+ | 183592caa9c843c0bc8b38f864741b43 | 0c74dbc2965741ba8d422919cc87d137 | public | RegionOne | 9b11a0a7a4414dfa8e6c4bd421f80873 | http://135.252.167.143:9696/ | {} | | 2040301ef0a84b2982af81d1fa57b37f | e256af289933417fbff54be4839d4238 | admin | RegionOne | 8c735b1d72a44a5b8e24eb6779d33dc2 | http://135.252.167.143:35357/v2.0 | {} | | 2f6aa131ec9d4b4885f96e6bce84fa2a | 92a5c3b2d28645239c835a1faf48dcdf | internal | RegionOne | 19154d904d9c429e95e7c16f1d6d5720 | http://135.252.167.143:9292/ | {} | | 30ffca84dcfa4229ac5ebebb15bff251 | c5e29713994441f897b2c4893ae1c597 | internal | RegionOne | 8b9511b673784c0f9b9fc5a020c74579 | http://135.252.167.143:8774/v2/$(tenant_id)s | {} | | 399324a3cdd54dff88461fb219954891 | 0c74dbc2965741ba8d422919cc87d137 | admin | RegionOne | 9b11a0a7a4414dfa8e6c4bd421f80873 | http://135.252.167.143:9696/ | {} | | 3e337a81870344e7bedcf270a3fb7a04 | 4963eb70de9d46a8827933630e8aed3a | public | RegionOne | 038d194c12a742e58f808c8525358a39 | http://135.252.167.143:8773/services/Cloud | {} | | 71985b575a0143b197c2bfa24a84b099 | 92a5c3b2d28645239c835a1faf48dcdf | public | RegionOne | 19154d904d9c429e95e7c16f1d6d5720 | http://135.252.167.143:9292/ | {} | | 8771cc773e5a4f46aba5f1d60ba0d2e0 | f05f48dd94fc4ff6b408fec9062eab44 | admin | RegionOne | 1cbab544e802480c8361f239f905e8f5 | http://135.252.167.143:8776/v1/$(tenant_id)s | {} | | 939cfcea9fc14ee99b10c6c088c82a0a | f05f48dd94fc4ff6b408fec9062eab44 | public | RegionOne | 1cbab544e802480c8361f239f905e8f5 | http://135.252.167.143:8776/v1/$(tenant_id)s | {} | | 9d7bd05c6abe49c981b080455133eda3 | 4963eb70de9d46a8827933630e8aed3a | admin | RegionOne | 038d194c12a742e58f808c8525358a39 | http://135.252.167.143:8773/services/Admin | {} | | a23a2032d75d47a4a72530b073c9204e | 92a5c3b2d28645239c835a1faf48dcdf | admin | RegionOne | 19154d904d9c429e95e7c16f1d6d5720 | http://135.252.167.143:9292/ | {} | | a42604d45dcc4a41911240ba58d5aee0 | f05f48dd94fc4ff6b408fec9062eab44 | internal | RegionOne | 1cbab544e802480c8361f239f905e8f5 | http://135.252.167.143:8776/v1/$(tenant_id)s | {} | | d7dde0c04e48482eac6ec19b8ccadfa0 | 0c74dbc2965741ba8d422919cc87d137 | internal | RegionOne | 9b11a0a7a4414dfa8e6c4bd421f80873 | http://135.252.167.143:9696/ | {} | | df3770ff6076426c954660f40f6118bf | c5e29713994441f897b2c4893ae1c597 | public | RegionOne | 8b9511b673784c0f9b9fc5a020c74579 | http://135.252.167.143:8774/v2/$(tenant_id)s | {} | | e535ef9f0ed247dbaba1343d4e0a5b14 | c5e29713994441f897b2c4893ae1c597 | admin | RegionOne | 8b9511b673784c0f9b9fc5a020c74579 | http://135.252.167.143:8774/v2/$(tenant_id)s | {} | | ef0bbf9fdca74193b7897b695f3adfef | 4963eb70de9d46a8827933630e8aed3a | internal | RegionOne | 038d194c12a742e58f808c8525358a39 | http://135.252.167.143:8773/services/Cloud | {} | | f0467c167ba84ff6a0a3e28708a3b904 | e256af289933417fbff54be4839d4238 | internal | RegionOne | 8c735b1d72a44a5b8e24eb6779d33dc2 | http://135.252.167.143:5000/v2.0 | {} | | ff0e325151954aaa96793a58eeb5e4d8 | e256af289933417fbff54be4839d4238 | public | RegionOne | 8c735b1d72a44a5b8e24eb6779d33dc2 | http://135.252.167.143:5000/v2.0 | {} | +----------------------------------+----------------------------------+-----------+-----------+----------------------------------+----------------------------------------------+-------+ 18 rows in set (0.00 sec)
問題就出在'
http://135.252.167.143:8774/v2/$(tenant_id)s'末尾的$(tenant_id)s.
解決辦法,在mysql中把
http://135.252.167.143:8774/v2/$(tenant_id)s
改成
http://135.252.167.143:8774/v2.0
其他類似的條目也做同樣更改,然后重啟keystone。
參考:https://ask.openstack.org/en/question/4123/dashboard-showing-tenant_usage-in-debug-window/