
Eu criei o Openstack baseado em MAAS usando juju. Criei instâncias, projetos etc. Fiz backups de banco de dados e arquivos de configuração do openstack. Estou tentando testar a recuperação destruindo e removendo o serviçopedra angular, só para ver se era recuperável. Eu também elimino o banco de dados keystone. (é feito backup) Então, com juju eu destruo a pedra angular antiga que foi quebrada e implanto uma nova pedra angular. Na verdade, isso me faz funcionar novamente, exceto pelo fato de que todos os projetos (inquilinos) desapareceram e as instâncias não pertencem a nenhum projeto. Então, restauro o banco de dados keystone, mas sem os tokens, mas quando faço isso, recebo um erro no horizonte informando que o keystone não autorizará o cliente.
Qual seria a melhor maneira de restaurar um nó keystone quebrado...? Parece que quando você refaz o Keystone com Juju você ganha novos tokens. Juju pode de alguma forma injetar os antigos na nova pedra angular?
Responder1
O problema que você está enfrentando é que o charme keystone armazena algumas informações fora do banco de dados keystone; especificamente, nomes de usuário e senhas para serviços são armazenados localmente no disco para que, quando unidades de serviço adicionais relacionadas ao keystone, o serviço keystone possa distribuir a senha correta para o usuário solicitado ao serviço relacionado.
Você também terá problemas se não tiver fornecido a senha de administrador e a configuração do token de administrador ao implantar o Keystone; as unidades de serviço keystone irão gerá-las aleatoriamente se não forem configuradas explicitamente - portanto, elas serão alteradas quando você remover e adicionar uma nova unidade de serviço keystone.
O que você obtém é um conjunto de senhas com hash no banco de dados (criado pela primeira unidade de serviço) que não correspondem às senhas geradas no disco na segunda unidade de serviço keystone.
Idealmente, consertaríamos isso com algum tipo de recurso genérico de armazenamento de objetos no juju (pense em colocar objeto/obter objeto), mas esse não é um recurso compatível.
Todo o armazenamento em disco de senhas e tokens ocorre em /var/lib/keystone; você poderá selecioná-los como parte de um backup da própria unidade de serviço keystone; no entanto, você terá problemas ao adicionar a nova unidade de serviço, pois as relações de serviço serão acionadas antes que você possa restaurar esses arquivos.
Como um dos mantenedores do charme do OpenStack, vou pensar um pouco mais sobre isso e ver se conseguimos criar algo mais elegante.