Ошибка импорта имиджа в glance
image_data.py
images
broken pipe
Пример сообщения об ошибке в логе:
Error finding address for http://10.20.30.2:9292/v2/images/321f4aff-2f2e-476b-97a5-ba9f13426ccc/file: Unable to establish connection to http://10.20.30.2:9292/v2/images/321f4aff-2f2e-476b-97a5 9f13426ccc/file: [Errno 32] Broken pipe
Вот что выдает с списке:
Сообщение “Broken pipe” говорит о том, что происходит попытка записи образа в файл, для которого ОС уже закрыла сокет.
Надо проверить права на директорию /var/lib/glance/images - должно быть glance:glance
Обычно эта ошибка возникает, т.к. права на этот каталог: root:root
После смены прав надо перестартовать службы glance-api, glance-registry на всех контейнерах CMPT.
Сервис начнет работать.
“Застрявшие” в очереди образы надо удалить штатной API-командой:
И повторно их импортировать:
glance --os-image-api-version 2 image-create --name <image-name> --protected false --progress --visibility public --disk-format qcow2 --container-format bare --file <image-qcow2-file-full-path-name>
Cлужба glance-sync отвечает за синхронизацию образов на всех контейнерах CMPT в каталогах /var/lib/glance/images
Юнит сервиса glance-sync.service
cat /etc/systemd/system/glance-sync.service
[Unit]
Description=glance-sync
[Service]
WorkingDirectory=/usr/local/bin
User=glance
Group=glance
ExecStart=/bin/bash glance-image-sync
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
[Install]
WantedBy=multi-user.target
После создания нового service-файла необходимо перезапустить systemd:
glance-image-sync
Вот скрипт, который выполняется: /usr/local/bin/glance-image-sync
#!/bin/bash
inotifywait -m /var/lib/glance/images/ -e close_write -e delete |
while read path action file; do
rsync -uvrht --progress --delete-after /var/lib/glance/images/ glance@10.0.11.203::images >> /var/log/glance/glance-sync.log
done
ВАЖНО!! Исходный код обработки файлов образов хранится в каталоге:
/usr/local/lib/python2.7/dist-packages/glance/api/v2