Ошибка работы сервисов при повторной установке контейнеров
cinder
keystone
endpoints
После того, как сервис cinder (или другой) был переустановлен, появляется ошибка
Invalid service catalog service: no volume service configured
Команда просмотра endpoints по типам сервиса - выдает следующую ошибку:
# os endpoint list --service cinderv2
Multiple service matches found for 'cinderv2', use an ID to be more specific.
Это говорит от том, что в таблице keystone.service содержится несколько записей для сервиса, который был переустановлен.
Посмотреть можно таким запросом:
MariaDB [keystone]> select distinct type,count(*) from service group by type;
+---------------------+----------+
| type | count(*) |
+---------------------+----------+
| application-catalog | 4 |
| cloudformation | 4 |
| compute | 4 |
| identity | 1 |
| image | 4 |
| metering | 4 |
| metric | 4 |
| network | 4 |
| object-store | 4 |
| orchestration | 4 |
| placement | 4 |
| volumev2 | 4 |
| volumev3 | 1 |
+---------------------+----------+
13 rows in set (0.01 sec)
Решить проблему можно последовательно удалив все лишние записи в этой таблице по их ID.
Например, таким образом:
Если попытаться удалить сервис, уже привязанный к какой-то endpoint - база не позволит это сделать, т.к. уже определен внешний ключ
delete from service where type="volumev3" and id="4a5b20d8d5904dfabf4a5e704448f81b";
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`keystone`.`endpoint`, CONSTRAINT `endpoint_service_id_fkey` FOREIGN KEY (`service_id`) REFERENCES `service` (`id`))
Таким образом можно смело запускать удаление всех записей из таблицы keystone.service
После этих действий служба заработает.
17.06.2020