Перейти к основному содержанию Перейти к навигации Перейти к нижнему колонтитулу

Экспериментальные VM

Создание локальных кластеров VM для разработки и тестирования с помощью rdc ops.

Экспериментальные VM

Создание локальных кластеров VM на вашей рабочей станции для разработки и тестирования — без внешних облачных провайдеров.

Обзор

Команды rdc ops позволяют создавать и управлять экспериментальными кластерами VM локально. Это та же инфраструктура, которая используется в конвейере CI для интеграционных тестов, и теперь она доступна для практических экспериментов.

Сценарии использования:

  • Тестирование развёртываний Rediacc без внешних провайдеров VM (Linode, Vultr и т.д.)
  • Разработка и отладка конфигураций репозиториев локально
  • Изучение платформы в полностью изолированной среде
  • Запуск интеграционных тестов на рабочей станции

Поддержка платформ

ПлатформаАрхитектураБэкендСтатус
Linuxx86_64KVM (libvirt)Полная поддержка
LinuxARM64KVM (libvirt)Полная поддержка
macOSARM (Apple Silicon)QEMU + HVFПолная поддержка
macOSIntelQEMU + HVFПолная поддержка
Windowsx86_64 / ARM64Hyper-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 создаёт:

VMIDРоль
Bridge1Основной узел — запускает службу моста Rediacc
Worker 111Рабочий узел для развёртывания репозиториев
Worker 212Рабочий узел для развёртывания репозиториев

Используйте флаг --basic для создания только моста и первого рабочего узла (ID 1 и 11).

Используйте --skip-orchestration для создания VM без запуска служб Rediacc — полезно для тестирования уровня VM в изоляции.

Конфигурация

Переменные окружения управляют ресурсами VM:

ПеременнаяПо умолчаниюОписание
VM_CPU2Количество ядер CPU на VM
VM_RAM4096Объём RAM в МБ на VM
VM_DSK16Размер диска в ГБ
VM_NET_BASE192.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