Proxmox во FreeBSD
Миграция – первые шаги
Первым шагом, который я предпринял, была установка FreeBSD на новый сервер. Очень просто. Следующим шагом было найти способ миграции CHR на новый сервер (под bhyve) и продолжить управление всеми общедоступными IP-адресами исходного сервера. Проблема в том, что OVH с его отказоустойчивыми IP-адресами привязывает определённый MAC-адрес к каждому отдельному IP-адресу. Поэтому единственным выходом было создать bridge на сервере FreeBSD (на сервере Proxmox у меня уже был bridge на физической сетевой карте) и создать туннель L2 между двумя серверами — я использовал OpenVPN с tap-интерфейсами, специально вставленными в мосты. Я мог бы использовать другие методы и техники, но я хотел поэкспериментировать с настройкой, которая позволяла бы, при необходимости, соединять большее количество физических и виртуальных серверов, даже если все IP-адреса сопоставлены с одним сервером. Фактически, OVH не допускает разделения классов, поэтому перемещение должно производиться для всего класса, а не для одного IP-адреса.
Изначально MikroTik CHR 7 не загружался на bhyve. В итоге мне удалось заставить его работать (я опубликую краткую статью по теме), но у меня были другие проблемы, вероятно, связанные с MTU интерфейсов. Поэтому я подумал о том, чтобы воспользоваться возможностью, чтобы отвязать контейнеры LXC и виртуальные машины от CHR и удалить MikroTik из установки. Фактически, с RouterOS версии 7 также поддерживаются VPN на основе Wireguard, поэтому в течение нескольких дней можно было обновить несколько маршрутизаторов, всё ещё работающих на 6.x, и воссоздать некоторые VPN с использованием Wireguard. Я сопоставил как виртуальные машины, так и контейнеры LXC напрямую с их соответствующими общедоступными IP-адресами, что значительно упростило шаги. Всё работало отлично.
Следующим шагом было тестирование первых миграций, начиная с виртуальных машин, уже находящихся во FreeBSD. Для простоты я создал новую виртуальную машину FreeBSD в bhyve и скопировал (через zfs-send и zfs-receive) наборы данных, относящиеся к BastilleBSD. Все сервисы установлены в jail, управляемых Bastille, так что этого было достаточно, чтобы за короткое время получить новый действующий сервер, эквивалентный предыдущему. В этот момент я выключил исходный сервер, подключил виртуальную машину к мосту, связанному с туннелем (после изменения ее MAC-адреса), включил новую виртуальную машину FreeBSD (на bhyve), и всё заработало правильно, но с нового физического сервера.
Одну за другой я переместил все виртуальные машины FreeBSD. Для Linux, NetBSD и OpenBSD я просто скопировал образы и указал на них bhyve. Небольшая специфическая настройка на vm-bhyve и всё заработало корректно. Там, где это было возможно, я заменил virtio на nvme, так как на bhyve он работает намного лучше.
Продолжение следует...
Перевод с некоторыми авторскими заголовками. Автор оригинала: Stefano Marinelli.