Я пытаюсь изменить IP-адрес чистого трафика для гостевой виртуальной машины oVirt.
Работает, пока я перезагружаю ВМ. (Изменено в сетевых настройках гостевой виртуальной машины)
Но для производственной среды мы хотим иметь возможность изменять эти настройки на лету без перезагрузки.
Я пробовал обновить данные в Virsh, но они применяются не сразу. Также, если я перезагружу гостевую виртуальную машину, Ovirt создаст новый XML-файл Virsh. Таким образом, никакие изменения виртуальной машины через Virsh не сохраняются.
Есть ли способ изменить сетевые фильтры без перезагрузки виртуальной машины?
В KVM (virsh) вы добавляете следующий текст в xml виртуальной машины (гостя)
<filterref filter='clean-traffic'>
<parameter name='IP' value='x.x.x.x'/>
</filterref>
Где x.x.x.x - это IP-адрес интерфейса. Но вам необходимо перезагрузить компьютер, чтобы он вступил в силу. Я хочу, чтобы фильтр чистого трафика вступил в силу немедленно, а не после перезагрузки.
В Ovirt мы добавляем фильтры через графический интерфейс, как это
Но снова это вступает в силу только после перезагрузки, инициированной Овиртом. Я хочу, чтобы это мгновенно стало активным.
Это влияет на нас: если мы изменим IP-адрес виртуальной машины, а затем перезагрузим сеть, мы потеряем связь с миром, поскольку новый IP-адрес не соответствует тому, который указан в фильтре. (x.x.x.x) Поскольку это производственная среда, мы не можем просто перезагружать серверы людей. Также у нас может быть несколько IP-адресов на одном Virtual Nic, что означает, что нам может потребоваться добавить несколько IP-адресов в фильтр. Перезагрузка при каждом изменении неэффективна.
Если нет возможности изменить требуемые параметры виртуальной машины через oVirt, вы всегда можете написать ловушку vdsm, которая будет вводить нужные вам параметры в XML напрямую при запуске и миграции виртуальной машины. Сам XML не сохраняется, он генерируется из данных, сохраненных в базе данных движка, при запуске виртуальной машины.
Еще одна вещь, о которой следует помнить - oVirt, будучи решением виртуализации на уровне DC, управляет виртуальными машинами как виртуальным оборудованием, поэтому адреса не управляются, а сетевые адаптеры. Решения облачного уровня, такие как openstack, фактически управляют общедоступными адресами, но это происходит над самой виртуальной машиной - IP назначается, и виртуальная машина присоединяется к нему через NAT, сама виртуальная машина не получает этот IP-адрес внутри.
Было бы здорово понять, что именно вы пытаетесь изменить на лету, чтобы мы могли помочь с настройкой.
Из документации libvirt:
Цель XML для сетевой фильтрации - дать администраторам виртуализированной системы возможность настраивать и применять правила фильтрации сетевого трафика на виртуальных машинах и управлять параметрами сетевого трафика, который виртуальным машинам разрешено отправлять или получать. Правила фильтрации сетевого трафика применяются к узлу при запуске виртуальной машины. Поскольку правила фильтрации нельзя обойти изнутри виртуальной машины, это делает их обязательными с точки зрения пользователя виртуальной машины.
Подсистема сетевой фильтрации позволяет настраивать правила фильтрации сетевого трафика каждой виртуальной машины индивидуально для каждого интерфейса. Правила применяются на хосте при запуске виртуальной машины и могут быть изменены во время работы виртуальной машины. Последнее может быть достигнуто путем изменения XML-описания сетевого фильтра.
Таким образом, правила фильтрации применяются при запуске виртуальной машины, а не во время ее выполнения, что означает, что если вы хотите добавить или удалить правило, вам необходимо остановить / запустить виртуальную машину. Модификации можно вносить во время работы машины. Если вам нужно внести изменения в DOMXML во время работы виртуальной машины, вы можете выбрать событие перехвата VDSM, написать перехватчик и внедрить его. Затем просто активируйте событие, и хук будет применен.
Перехватчики VDSM и список событий можно найти здесь: https://www.ovirt.org/documentation/admin-guide/appe-VDSM_and_Hooks.html