Виртуальные машины и контейнеры
Общие сведения
На платформе маршрутизатора кроме встроенного программного обеспечения EcoRouterOS может быть запущено программное обеспечение сторонних производителей. Для этого используются технологии виртуализации двух типов:
- полная виртуализация на базе QEMU/KVM;
- контейнерная виртуализация на базе Docker.
Полная виртуализация позволяет запускать операционные системы и эмулировать платформы, поддерживаемые QEMU/KVM. Если стороннее программное обеспечение работает на Linux и не требует эмуляции дополнительного оборудования, то более подходящим вариантом будет контейнерная виртуализация на основе одной ОС.
Функционал виртуальных машин и контейнеров позволяет отказаться от приобретения и поддержки дополнительных серверов и разместить непосредственно на маршрутизаторе программное обеспечение для различных сетевых сервисов.
При конфигурировании виртуальных машин и контейнеров необходимо различать два варианта взаимодействия:
- управление виртуальной машиной, которое производится внешними средствами (создание, запуск, остановка, уничтожение);
- конфигурирование подключения интерфейсов виртуальной машины к портам EcoRouter, которое делается из командной строки EcoRouterOS.
Рисунок
Внимание! При использовании сетевых интерфейсов с драйвером virtio необходимо отключить TCP offload engine, так как на данный момент существует ошибка при подсчёте контрольной суммы в TCP-заголовке.
Отключить TCP offload engine можно следующими способами:
- В ОС на виртуальной машине выполнить следующую команду:
ethtool --offload eth0 tx off
- В virsh отредактировать свойства сетевого интерфейса, добавив следующие строки:
<host csum='off' gso='off' tso4='off' tso6='off' ecn='off' ufo='off' mrg_rxbuf='off'/>
<guest csum='off' tso4='off' tso6='off' ecn='off' ufo='off'/>
Для этого необходимо выполнить следующие действия:
2.1. подключиться к удалённому хосту:
virsh -c qemu+tls://admin@ecorouter/system
2.2. остановить виртуальную машину:
shutdown virt_name
2.3. войти в режим редактирования xml-файла настроек для этой машины:
edit virt_name
2.4. в секцию interface добавить следующие строки:
<driver>
<host csum='off' gso='off' tso4='off' tso6='off' ecn='off' ufo='off' mrg_rxbuf='off'/>
<guest csum='off' tso4='off' tso6='off' ecn='off' ufo='off'/>
</driver>
2.5. сохранить файл и выйти;
2.6. запустить виртуальную машину и проверить применение данных опций: ethtool -k ifname