Quando há algum problema de comunicação entre o OpenStack e o balanceador de carga, as seguintes telas geralmente são mostradas ao usuário no momento de criação de pools, membros, VIPs e monitores.
Após você realizar o troubleshoot e resolver o problema, o usuário conseguirá criar novamente o que ele necessita. Mas todos os itens com erro que foram criados anteriormente permanecerão na tela dos usuários, e não será possível realizar a exclusão de nenhum deles pela interface web.
Esse techtip tem a intenção de mostrar como deletar Pools, VIPS, Membros e monitores que apresentaram problemas.
O único pré-requisito aqui é que você precisa ter acesso ao banco de dados que suporta sua infraestrutura OpenStack, além de ser administrador do ambiente para executar comandos no Neutron.
Então vamos lá!
É muito importante seguir esses comandos na ordem que são apresentados nesse passo a passo, pois, caso contrário, ocorrerão problemas na exclusão, devido à algumas dependências de chaves estrangeiras.
Já dentro do banco de dados MySQL que suporta sua cloud OpenStack, rode o comando:
use neutron;
Com isso você estará dentro do banco que contém os dados dos Load Balancers criados pelos usuários.
O primeiro passo é remover os membros do pool. Para isso, localize-os na tabela members e guarde os IDs (eles devem estar com o status de “PENDING_CREATE”) e depois podem ser apagados com os seguintes comandos:
select * from members;
delete from members where id=’id do membro1’;
delete from members where id=’id do membro2’;
Como no exemplo abaixo:
O próximo passo é apagar o VIP. Para isso, primeiro precisamos desassociá-lo do pool criado. Com os seguintes comandos:
select * from pools;
Localize o pool que está com erro (estará com o status de “ERROR”), e copie o seu id, após isso execute o comando:
update pools set vip_id=NULL where pool_id =’id do pool’;
Como no exemplo abaixo:
Agora podemos ir na tabela que contém os VIPS para eliminá-lo.
Para isso, execute o comando:
select * from vips;
Na tabela que será mostrada, copie o ID do VIP que está com erro (Apresenta o status “PENDING_CREATE) e também o seu port_id, pois também iremos apagá-lo nos próximos passos.
Após coletar os dados, execute o seguinte comando:
delete from vips where id =’id do vip’;
Como no exemplo abaixo:
Com o port_id recolhido no passo anterior, vamos remover a porta usada pelo VIP, mas nesse caso não iremos remover diretamente no banco, e sim por meio do neutron, pelo comando (você deve estar logado como administrador da cloud para executá-lo com sucesso):
neutron port-delete id da porta;
Como no exemplo abaixo:
Agora vamos voltar ao banco de dados para deletar a associação de monitor com o pool, na tabela poolmonitorassociations.
Para isso, possuindo o pool_id que já foi localizado em passos anteriores, execute o comando:
delete from poolmonitorassociations where pool_id=’id do pool’;
Como no exemplo abaixo:
E o último passo antes de remover o pool é deletar as estatísticas do pool na tabela poolstatisticss.
Com o pool_id em mãos, execute o comando:
delete from poolstatisticss where pool_id=’id do pool’;
E enfim, vamos remover os pools.
Mais uma vez com o id do pool em mãos, execute o comando:
delete from pools where id=’id do pool’;
Após a execução de todos esses passos, sua base de dados e interface web estarão novamente limpas e sem os rastros de criações que apresentaram erros anteriormente.