Sobre keystone, erro
prefácio
Nos últimos dias de treinamento de pilha aberta, usei a versão M. Talvez eu não tenha tido sorte. Depois de seis dias de treinamento, consegui a pedra angular por apenas 4 dias.
Eu encontrei mais ou menos problemas antes, os principais são: chaves, autenticação de identidade e problemas de conexão com o banco de dados, mas terminei
tudo.
401 é basicamente um problema com autenticação de identidade.
404 significa que o recurso não pode ser encontrado, então depende da URL da API, ou seja, o problema do caminho
500 significa que uma operação inesperada causou um erro. Meu gatilho foi excluir o banco de dados. Olhando para o log, ele disse que o banco de dados keystone não foi encontrado e saiu quando o banco de dados foi ressincronizado. A solução é reinicializar as chaves fernet,
-
Esqueci de anotar a solução do problema anterior. A ideia é:
- Problema de configuração de variável de ambiente , geralmente o erro apontará para esta área vagamente, preste mais atenção
- Problema no arquivo de configuração , o token na variável de ambiente é o token em keystone.conf, ambos são iguais
- Problema de sincronização do banco de dados : Depois de criar o banco de dados, ao autorizar o banco de dados, a última coisa a escrever é a senha para se conectar ao banco de dados
open grant all privileges on keystone.* to 'keystone'@'localhost' identified by '000000';
#例如,后面的000000就是连接数据的密码
#配置文件里的[database]选项,就应该写
[database]
connection = mysql+pymysql://keystone:000000@controopenller/keystone
- Relatando que o recurso não pode ser encontrado, como a URL : verifique a API de serviço (url) criada pelo endpoint, bem como verificações de comandos relacionados, logs e use um navegador para acessar a url para ver se algum erro é retornado. Evite erros de digitação em urls
Início de produtos secos:
Este é o problema que encontrei no penúltimo dia após o término do treinamento, ou seja, quando penso no recorde neste momento, é fácil verificar
Failed to contact the endpoint at http://controller:35357/3 for discovery. Fallback to using that endpoint as the base url. The resource could not be found. (HTTP 404)·
翻译以下就知道了,大致说的是,未能发现这个url,基于这个URL,找不到资源
O que essa mensagem de erro diz é que o recurso não foi encontrado, e eu não fazia ideia a princípio, mas tentei colocar essa url ( ) no navegador depois, e descobri controller记得换回IP地址才能访问到
que o erro foi retornado
{
"error": {
"message": "The resource could not be found.", "code": 404, "title": "Not Found"}}
Olhe a url novamente: http://controller:35357/3
; constatou que falta v, adicionar esse v permitirá o acesso normalhttp://controller:35357/v3
{
"version": {
"status": "stable", "updated": "2016-04-04T00:00:00Z", "media-types": [{
"base": "application/json", "type": "application/vnd.openstack.identity-v3+json"}], "id": "v3.6", "links": [{
"href": "http://192.168.200.21:35357/v3/", "rel": "self"}]}}
Mais tarde, quando excluí este ponto de extremidade, encontrei um problema novamente. Não consegui excluí-lo. A mensagem de erro mostrou que o recurso não pôde ser encontrado com base neste URL. Sim, o recurso não pôde ser encontrado, então por que excluí-lo ; surfe. vi um artigo dizendo que as urls exibidas ficam armazenadas no banco de dados ; ai é só alterar o banco de dados
MariaDB [keystone]> select * from endpoint;
+----------------------------------+--------------------+-----------+----------------------------------+-------- -------------------+-------+---------+-----------+
| id | legacy_endpoint_id | interface | service_id | url | extra | enabled | region_id |
+----------------------------------+--------------------+-----------+----------------------------------+-------- -------------------+-------+---------+-----------+
| 2c57b1d4698845a383bc0ce112dfe278 | NULL | public | c5fd90467eec4bce9a50f9685c80cd27 | http:// controller:5000/3 | {
} | 1 | RegionOne |
| 9183c8c90f0148eb9e246a6d0aebd08c | NULL | admin | c5fd90467eec4bce9a50f9685c80cd27 | http:// controller:35357/3 | {
} | 1 | RegionOne |
| 93a6c0607a5646aeb336277d14ce8dd8 | NULL | internal | c5fd90467eec4bce9a50f9685c80cd27 | http:// controller:5000/3 | {
} | 1 | RegionOne |
+----------------------------------+--------------------+-----------+----------------------------------+-------- -------------------+-------+---------+-----------+
3 rows in set (0.01 sec)
Finalmente vi os dados da entidade, esses urls errados, abertos para alteração
MariaDB [keystone]> update endpoint set url='http://controller:5000/v3'
-> ;
Query OK, 3 rows affected (0.01 sec)
Solução perfeita, chame-o um dia! Keystone retoma as operações normais! ! !
[root@controller ~]# openstack catalog list
+----------+----------+---------------------------------------+
| Name | Type | Endpoints |
+----------+----------+---------------------------------------+
| keystone | identity | RegionOne |
| | | public: http://controller:5000/v3 |
| | | RegionOne |
| | | admin: http://controller:35357/v3 |
| | | RegionOne |
| | | internal: http://controller:5000/v3 |
| | | |
+----------+----------+---------------------------------------+
[root@controller ~]# openstack endpoint list
+----------------------+-----------+--------------+--------------+---------+-----------+-----------------------+
| ID | Region | Service Name | Service Type | Enabled | Interface | URL |
+----------------------+-----------+--------------+--------------+---------+-----------+-----------------------+
| 2c57b1d4698845a383bc | RegionOne | keystone | identity | True | public | http://controller:500 |
| 0ce112dfe278 | | | | | | 0/v3 |
| 9183c8c90f0148eb9e24 | RegionOne | keystone | identity | True | admin | http://controller:353 |
| 6a6d0aebd08c | | | | | | 57/v3 |
| 93a6c0607a5646aeb336 | RegionOne | keystone | identity | True | internal | http://controller:500 |
| 277d14ce8dd8 | | | | | | 0/v3 |
+----------------------+-----------+--------------+--------------+---------+-----------+-----------------------+