Экспериментальные VM
Создание локальных кластеров VM на вашей рабочей станции для разработки и тестирования — без внешних облачных провайдеров.
Обзор
Команды rdc ops позволяют создавать и управлять экспериментальными кластерами VM локально. Это та же инфраструктура, которая используется в конвейере CI для интеграционных тестов, и теперь она доступна для практических экспериментов.
Сценарии использования:
- Тестирование развёртываний Rediacc без внешних провайдеров VM (Linode, Vultr и т.д.)
- Разработка и отладка конфигураций репозиториев локально
- Изучение платформы в полностью изолированной среде
- Запуск интеграционных тестов на рабочей станции
Поддержка платформ
| Платформа | Архитектура | Бэкенд | Статус |
|---|---|---|---|
| Linux | x86_64 | KVM (libvirt) | Полная поддержка |
| Linux | ARM64 | KVM (libvirt) | Полная поддержка |
| macOS | ARM (Apple Silicon) | QEMU + HVF | Полная поддержка |
| macOS | Intel | QEMU + HVF | Полная поддержка |
| Windows | x86_64 / ARM64 | Hyper-V | Планируется |
Linux (KVM) использует libvirt для аппаратной виртуализации с мостовой сетью.
macOS (QEMU) использует QEMU с Apple Hypervisor Framework (HVF) для производительности, близкой к нативной, с пользовательской сетью и проброской портов SSH.
Windows (Hyper-V) — поддержка планируется. Подробности см. в issue #380. Требуется Windows Pro/Enterprise.
Предварительные требования и настройка
Linux
# Install prerequisites automatically
rdc ops setup
# Or manually:
sudo apt install libvirt-daemon-system virtinst qemu-utils cloud-image-utils docker.io
sudo systemctl enable --now libvirtd
macOS
# Install prerequisites automatically
rdc ops setup
# Or manually:
brew install qemu cdrtools
Проверка настройки
rdc ops check
Выполняет проверки, специфичные для платформы, и сообщает результат (пройдено/не пройдено) для каждого требования.
Быстрый старт
# 1. Check prerequisites
rdc ops check
# 2. Provision a minimal cluster (bridge + 1 worker)
rdc ops up --basic
# 3. Check VM status
rdc ops status
# 4. SSH into the bridge VM
rdc ops ssh 1
# 5. Tear down
rdc ops down
Состав кластера
По умолчанию rdc ops up создаёт:
| VM | ID | Роль |
|---|---|---|
| Bridge | 1 | Основной узел — запускает службу моста Rediacc |
| Worker 1 | 11 | Рабочий узел для развёртывания репозиториев |
| Worker 2 | 12 | Рабочий узел для развёртывания репозиториев |
Используйте флаг --basic для создания только моста и первого рабочего узла (ID 1 и 11).
Используйте --skip-orchestration для создания VM без запуска служб Rediacc — полезно для тестирования уровня VM в изоляции.
Конфигурация
Переменные окружения управляют ресурсами VM:
| Переменная | По умолчанию | Описание |
|---|---|---|
VM_CPU | 2 | Количество ядер CPU на VM |
VM_RAM | 4096 | Объём RAM в МБ на VM |
VM_DSK | 16 | Размер диска в ГБ |
VM_NET_BASE | 192.168.111 | Базовый адрес сети (только KVM) |
RENET_DATA_DIR | ~/.renet | Каталог данных для дисков и конфигурации VM |
Справочник по командам
| Команда | Описание |
|---|---|
rdc ops setup | Установка предварительных требований платформы (KVM или QEMU) |
rdc ops check | Проверка установки и работоспособности требований |
rdc ops up [options] | Создание кластера VM |
rdc ops down | Уничтожение всех VM и очистка |
rdc ops status | Отображение статуса всех VM |
rdc ops ssh <vm-id> | SSH-подключение к конкретной VM |
Параметры rdc ops up
| Параметр | Описание |
|---|---|
--basic | Минимальный кластер (мост + 1 рабочий узел) |
--lite | Облегчённые ресурсы |
--force | Принудительное пересоздание существующих VM |
--parallel | Параллельное создание VM |
--skip-orchestration | Только VM, без служб Rediacc |
--backend <kvm|qemu> | Принудительный выбор бэкенда вместо автоопределения |
--os <name> | Образ ОС (по умолчанию: ubuntu-24.04) |
--debug | Подробный вывод |
Различия между платформами
Linux (KVM)
- Использует libvirt для управления жизненным циклом VM
- Мостовая сеть — VM получают IP-адреса в виртуальной сети (192.168.111.x)
- Прямое SSH-подключение к IP-адресам VM
- Требуется
/dev/kvmи служба libvirtd
macOS (QEMU + HVF)
- Использует процессы QEMU, управляемые через PID-файлы
- Пользовательская сеть с проброской портов SSH (localhost:222XX)
- SSH через проброшенные порты, а не напрямую по IP
- ISO-образы cloud-init создаются через
mkisofs
Устранение неполадок
Режим отладки
Добавьте --debug к любой команде для подробного вывода:
rdc ops up --basic --debug
Распространённые проблемы
KVM недоступен (Linux)
- Проверьте наличие
/dev/kvm:ls -la /dev/kvm - Включите виртуализацию в BIOS/UEFI
- Загрузите модуль ядра:
sudo modprobe kvm_intelилиsudo modprobe kvm_amd
libvirtd не запущен (Linux)
sudo systemctl enable --now libvirtd
QEMU не найден (macOS)
brew install qemu cdrtools
VM не запускаются
- Проверьте свободное место в
~/.renet/disks/ - Запустите
rdc ops checkдля проверки всех требований - Попробуйте
rdc ops down, затемrdc ops up --force