Eu configurei o OpenStack - minha primeira vez. Eu segui o guia de instalação (no Ubuntu 14.04) e acredito que acertei tudo. No entanto, ao tentar criar uma instância, recebo o erro:
Construção da instância e948205a-2287-4b0e-9829-f2c6fe3a93eb abortada: não é possível estabelecer conexão com http://127.0.0.1:9696/v2.0/extensions.json
Estou depurando isso há cerca de uma semana e esgotei todas as soluções que encontrei no Google e nas quais consigo pensar.
Neutron está escutando na porta:
netstat -ln | grep 9696 tcp 0
0 0.0.0.0:9696 0.0.0.0:*
LISTEN
Também posso me conectar ao Neutron a partir da linha de comando:
root@controller:/var/log# neutron ext-list
+---------------------------+-----------------------------------------------+
| alias | name |
+---------------------------+-----------------------------------------------+
| default-subnetpools | Default Subnetpools |
| network-ip-availability | Network IP Availability |
| network_availability_zone | Network Availability Zone |
| auto-allocated-topology | Auto Allocated Topology Services |
| ext-gw-mode | Neutron L3 Configurable external gateway mode |
| binding | Port Binding
...
Posso autenticar com um token e obter uma resposta do Neutron manualmente com o teste de curl abaixo, isso responde com os dados esperados.
curl -i -H'X-Auth-Token: MY_TOKEN' http://controller:9696/v2.0/extensions.json
Meus endpoints da API de nêutrons:
| 440735e5dd8d468e89de9a8077ea9491 | RegionOne | nêutron | rede | Verdadeiro | público | http://controller:9696 |
| 5985d944b02b4148a87cafae8df006c8 | RegionOne | nêutron | rede | Verdadeiro | interna | http://controller:9696 |
Verifiquei todos os logs do Nova e do Neutron e não consigo ver nenhum erro neles, recriei meus endpoints do Neutron, verifiquei e verifiquei novamente as configurações. Não sei como continuar a depuração ou onde está a solução.
Editar com informações atualizadas:
root@controller:~# openstack catalog list
+----------+----------+--------------------------------------------------------------------------+
| Name | Type | Endpoints |
+----------+----------+--------------------------------------------------------------------------+
| neutron | network | RegionOne |
| | | admin: http://controller:9696 |
| | | RegionOne |
| | | internal: http://controller:9696 |
| | | RegionOne |
| | | public: http://controller:9696 |
| | | |
| nova | compute | RegionOne |
| | | admin: http://controller:8774/v2.1/225f1282f5034949937f5ef71c503dd0 |
| | | RegionOne |
| | | internal: http://controller:8774/v2.1/225f1282f5034949937f5ef71c503dd0 |
| | | RegionOne |
| | | public: http://controller:8774/v2.1/225f1282f5034949937f5ef71c503dd0 |
| | | |
| keystone | identity | RegionOne |
| | | admin: http://controller:35357/v3 |
| | | RegionOne |
| | | public: http://controller:5000/v3 |
| | | RegionOne |
| | | internal: http://controller:5000/v3 |
| | | |
| glance | image | RegionOne |
| | | admin: http://controller:9292 |
| | | RegionOne |
| | | public: http://controller:9292 |
| | | RegionOne |
| | | internal: http://controller:9292 |
| | | |
+----------+----------+--------------------------------------------------------------------------+
Redes de nêutrons que criei via Horizon e CLI
root@controller:~# neutron net-list
+--------------------------------------+------------------+--------------------------------------------------+
| id | name | subnets |
+--------------------------------------+------------------+--------------------------------------------------+
| 8a50aef6-b687-483d-ab49-f43460eebdd6 | My Admin Network | d4f840cc-31b9-4d32-963d-3a2110ae5765 10.0.0.0/24 |
| 8bb223ef-828d-4c9a-aa16-15ac13d244f6 | ext-net | |
| 98a2606a-3017-48fb-8b60-e18c4a4f1083 | My Network | b76352ac-dc61-4d75-ba7a-b5b4d76705d0 10.0.0.0/24 |
+--------------------------------------+------------------+--------------------------------------------------+
Minha lista Neutron Ext está abaixo:
root@controller:~# neutron ext-list
+---------------------------+-----------------------------------------------+
| alias | name |
+---------------------------+-----------------------------------------------+
| default-subnetpools | Default Subnetpools |
| network-ip-availability | Network IP Availability |
| network_availability_zone | Network Availability Zone |
| auto-allocated-topology | Auto Allocated Topology Services |
| ext-gw-mode | Neutron L3 Configurable external gateway mode |
| binding | Port Binding |
| agent | agent |
| subnet_allocation | Subnet Allocation |
| l3_agent_scheduler | L3 Agent Scheduler |
| tag | Tag support |
| external-net | Neutron external network |
| net-mtu | Network MTU |
| availability_zone | Availability Zone |
| quotas | Quota management support |
| l3-ha | HA Router extension |
| provider | Provider Network |
| multi-provider | Multi Provider Network |
| address-scope | Address scope |
| extraroute | Neutron Extra Route |
| timestamp_core | Time Stamp Fields addition for core resources |
| router | Neutron L3 Router |
| extra_dhcp_opt | Neutron Extra DHCP opts |
| dns-integration | DNS Integration |
| security-group | security-group |
| dhcp_agent_scheduler | DHCP Agent Scheduler |
| router_availability_zone | Router Availability Zone |
| rbac-policies | RBAC Policies |
| standard-attr-description | standard-attr-description |
| port-security | Port Security |
| allowed-address-pairs | Allowed Address Pairs |
| dvr | Distributed Virtual Router |
+---------------------------+-----------------------------------------------+
Com o comando create with debug, agora tenho mais informações sobre o erro real (será melhor copiar e colar para ler):
{u'message': u'Build of instance 3e2f5678-6a4a-478b-8953-d10db929d367 aborted: Unable to establish connection to http://127.0.0.1:9696/v2.0/extensions.json', u'code': 500, u'details': u' File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 1926, in _do_build_and_run_instance\n filter_properties)\n File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 2083, in _build_and_run_instance\n \'create.error\', fault=e)\n File "/usr/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__\n self.force_reraise()\n File "/usr/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise\n six.reraise(self.type_, self.value, self.tb)\n File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 2067, in _build_and_run_instance\n instance=instance)\n File "/usr/lib/python2.7/contextlib.py", line 35, in __exit__\n self.gen.throw(type, value, traceback)\n File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 2244, in _build_resources\n reason=six.text_type(exc))\n', u'created': u'2016-04-29T13:56:55Z'} |
você pode depurar isso verificando se o serviço neutron está funcionando e registrado corretamente em seu catálogo de serviços.
Olhe para sua
keystone catalog
ele produzirá os endpoints da API
então qual é a saída do
neutron net-list
comandoem seu neutron.conf você está ligando para 127.0.0.1? - você deve vincular a todos os IP's
O Neutron usa extensões de API ou 'plugins' e também agentes para DHCP, grupos de segurança e NAT - você pode dizer qual extensão está usando?
provavelmente será openvswitch, pois seu plug-in e agentes de rede por padrão são geralmente dnsmaq e iptables.
você pode verificar os serviços openvswitch em /etc/ini.d/ e ver o banco de dados do switch com os seguintes comandos show
Além disso, para depurar o erro de extensão http, você pode ativar o registro de depuração no neutron conf ou passar a opção --debug no cli, por exemplo