[Расследование] VCD Error: No row with the given identifier exists: [com.vmware.vcloud.common.model.net.LogicalNetworkModel#uuid]

Вернувшись на рабочее место после выходных, я получил от одного из крупных клиентов заявку о том, что у него перестали включаться некоторые ВМ, таска падает с ошибкой вида:

[ 2c728624-3b93-463e-8f99-cf5386f089bf ] Internal Server Error - No row with the given identifier exists: [com.vmware.vcloud.common.model.net.LogicalNetworkModel#40bbadee-76dc-4760-bac8-0293a79a595f]

Никаких внятных сообщений в логах VCD (vcloud-container-debug.log) я не обнаружил. Там конечно присутвовали простыни Java логов об ошибке но понять причину было нельзя, отсылка была лишь к NetworkServiceImpl, а значит искать надо было что-то связанное с сетями.

Читать далее

[VCD V2T] Проверка перед миграцией

Решил что стоит поделиться своими проверками Org vDC перед миграцией V2T. Эти проверки позволят избежать части падений процесса миграции, о которых этап —preCheck не уведомляет.

[ x ] Проверить использование Non Latin символов в дескрипшенах Org, Org vDC
[ x ] Проверить сети на Shared — отключить если сеть не шарится между vDC (позволит не создавать Data Сenter Group там где это не нужно)
[ x ] Проверить правила SNAT в EGS — если в source содержится адрес, а не сеть, валидация пройдет успешно, а этап переноса правила упадет
[ x ] Проверить наличие пустого IP Set в NSX-v EGS (раздел Grouping Objects) — его наличие сломает этап переноса правил Gateway
[ x ] Проверить настройки DHCP — с ними много странного, быть готовым что с DHCP что-то пойдет не так. Если можно его отключить — отключите
[ x ] Проверить Storage Policy у каждой ВМ — если есть не VM default Storage Policy на дисках — перенос vApp в котором есть такая ВМ не пройдет (vcdNSXMigrator 1.3.1 не умеет детектить кастомные SP и как следствие не добавляет их в api запрос на moveVApp)

[VCD V2T] Ошибка миграции «Application Port Profile CUSTOM-TCP-XXX does not exist»

Если вы из тех, кто как и я приступили к миграции с NSX-v на NSX-T в вашем VMware Cloud Director окружении, то скорее всего вы столкнулись с ошибкой «Application Port Profile CUSTOM-TCP-XXX does not exist». Возникает она с повторяющимися кастомными Application Port Profile. Грубо говоря если миграция №1 создала кастомный tcp/21 порт, то если во время миграции №2 потребуется создать аналогичный кастомный tcp/21 порт, vcdNSXMigrator не создаст такой профиль во время миграции №2 и в процессе использования этого правила (например во время настройки правил NAT или FW) упадет с этой ошибкой.

Пример ошибки

Workaround для правил NAT

Сразу оговорюсь, данный обходной путь этой ошибки был найден мною самостоятельно и не валидирован командой разработки vcdNSXMigrator Tool.

  1. Создайте данный Application Port Profile вручную (из текста ошибки понятно какого типа профиль надо создать и с каким номером порта — в моем случае это tcp/21)
  2. Определите из текста ошибки на каком этапе она произошла (в моем случае это configureTargetNAT — создание правила NAT)
  3. Найдите правло(а) NAT на NSX-v EGS и зафиксируйте их ID и прочие параметры
  4. Создайте правило(а) NAT на NSX-T Edge используя в качестве имен правил ID этих правил в NSX-v EGS
  5. Откройте ваш source vDC в провайдерской части VCD и перейдите в раздел Metadata
  6. Найдите metadata NATstatus-v2t и отредактируйте текст этого поля добавив после последнего правила, которое было перенесено vcdNSXMigrator, правило(а) которые вы создали сами (пример на скриншоте)

7. Запустите процесс миграции заново (процесс продолжится с таска на котором процесс упал).

Импорт CA-signed сертификатов в VMware Cloud Director 10.3

В официальной документации есть статья описывающая процесс импорта сертификатов (а в 10.3 его сильно упростили, избавившись от JCEKS контейнеров), однако в ней пропущен один нюанс. Чтобы cell-management-tool принял ваш сертификат и его ключ (на пункте 4) ваш ключ должен быть зашифрован с помощью пароля, который вы подставите, в качестве аргумента —key-password.

В моей практике при создании закрытого ключа и CSR для заказа у CA сертификата мы на выходе получаем не зашифрованый паролем ключ:

-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----

или

-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----

Такой ключ не подходит для использования при импорте сертификата с помощью cell-management-tool. Для этого мы должны его зашифровать паролем и в дальнейшем использовать именно в таком виде.

В разделе документации Create and Import CA-Signed SSL Certificates to the VMware Cloud Director Appliance VMware рекомендует использовать в качестве пароля ключа пароль пользователя root от вашего VCD appliance.

Ну и собственно что бы зашифровать ваш файл ключа паролем необходимо выполнить следующую команду:

openssl pkcs8 -inform PEM -in your.key -out youencrypted.key -topk8

После ввода данной команды openssl запросит у вас пароль с подтверждением и на выходе вы получите файл youencrypted.key зашифрованный паролем:

-----BEGIN ENCRYPTED PRIVATE KEY-----
-----END ENCRYPTED PRIVATE KEY-----

Дальнейшие действия по импорту осуществляются строго по инструкции.

Миграция VMware Cloud Director Linux Deployment на Appliance Deployment с Database HA

По аналогии с vCenter Server компания VMware переносит свой продукт Vmware Cloud Director (далее VCD) в формат Virtual Appliance, т.е. готовый шаблон ВМ содержащий все необходимые компоненты для функционирования продукта, многие администраторы компаний-провадеров, использующих VCD начинают задумываться о миграции с Linux версии продукта (которая пока еще поддерживается) на Virtual Appliance.

Я произвел в этом году 4 таких операции, в процессе которых выявил некоторые неточности в плане миграции из документации.

Начальные условия и конечный результат

Предполагается что у вас развернута классическое приложение состоящее из собственно самого приложения VCD, его сервера БД и Load Balancer (у вас ведь больше 1 cell, да?).

Результатом проделанной работы будет VCD развернутый на базе 3 (минимум) Virtual Appliance в конфигурации Database HA.

Все изложенное для наглядности изобразил на схеме ниже.

В рамках данного мануала не входит описание настройки LB, так как для балансировки приложения каждый использует разные LB. В моем случае используется NSX-v Edge LB.

Читать далее