VMmanager: Сети

Материал из ISPWiki
Перейти к: навигация, поиск

Настройка сетевых соединений в VMmanager

Устройство

VMmanager использует два типа сети:

  • соединение через мост (brige), который создается на узле кластера при создании сети в интерфейсе. Список сетевых мостов можно просмотреть командой
[root@s4 ~]# brctl show
bridge name	bridge id		    STP enabled	interfaces
virbr0		8000.525400331329	                       yes		            virbr0-nic
vmbr0		8000.003048cf1300	    no		    eth0
							    vnet0
							    vnet1
							    vnet2
vmbr1
vmbr2

Первая колонка - название моста, вторая - идентификатор, третья - флаг STP-протокола, колонка "interfaces" - список сетевых интерфейсов, подключенных к мосту

  • Соединение типа NAT - в этом случае к сети привязывается диапазон локальных IP-адресов, виртуальные машины, подключенные к сети, получают и передают пакеты посредством NAT


Виртуальные машины могут быть присоединены к одной или нескольким сетям. Для этого в ресурсах шаблона VM необходимо добавить нужные сети. При создании виртуальной машины в системе буду созданы виртуальные интерфейсы и включены в соответствующие мосты.

Создание сетей VMmanager

Ниже преведена последовательность действий VMmanager при создании и редактировании сетей типа мост.

При создании нескольких сетей одна из них выбирается как главная. Это сделано для того, чтобы libvirt мог определить, на каком интерфейсе запускать vnc-сервер.

При создании, удалении или редактировании сети на каждом узле кластера будут выполнены следующие действия:

1. Будет создана сеть в libvirt

# virsh net-list
Имя               Статус Автозапуск Persistent
--------------------------------------------------
B2                   активен yes           yes
b3                   активен yes           yes
Basic                активен yes           yes
default              активен yes           yes
# virsh net-dumpxml Basic
<network connections='1'>
  <name>Basic</name>
  <uuid>853bac88-361f-8448-ddcf-b2f2f1544172</uuid>
  <forward mode='bridge'/>
  <bridge name='vmbr0' />
</network>

2. В зависимости от версии ОС, будет сформирован xml-файл с настройками сети и обработан в libvirt (аналог virsh iface-bridge), либо запущена внутренняя утилита

/usr/local/mgr5/sbin/netctl bridge create <bridge> <iface> --live --config 

3. Будут переброшены все ip-адреса с интерфейса на мост

3. в libvirt будут добавлены сети, привязанные к созданным мостам.

Внимание! Если на сервере установлен Debian, то утилита netconf (virsh iface-bridge) для интерфейса с IP-адрсом , у которого маска сети больше 24, работает неверно! Для настройки такой сети необходимо включить опцию Option BuildBridgesManually и настроить мост вручную

При создании сети типа NAT, никаких дополнительных настроек сети производится не будет

Самостоятельная настройка сетей

Режим самостоятельной настройки сети включается опцией Option BuildBridgesManually в файле конфигурации VMmanager (/usr/local/mgr5/etc/vmmgr.conf), в этом случае файл /etc/vm-libvirt-bridges не будет создан и вся работа с настройками сети будет пропущена. Алгоритм такой:

  • service libvirtd stop (сеть переконфигурится)
  • service network restart
  • Добавляем опцию Option BuildBridgesManually
  • Удаляем файлик /etc/vm-libvirt-bridges
  • service libvirtd start

Вручную настраиваем как надо - VMmanager больше бриджи не трогает.

Для запуска виртуальных машин необходимо самостоятельно создать мосты, указанные в настройке сети.

Такое поведение VMmanager может пригодиться, когда требуется более тонкая настройка сети, отличная от той, которую производит VMmanager

Создание виртуальных машин с несколькими сетевыми картами (NIC)

Несколько сетевых карт в виртуальных машинах необходимо, например, для того, чтобы объединить несколько виртуальных машин внутренней локальной сетью.

Чтобы подключить несколько сетевых карт к виртуальной машине, необходимо при создании VM указать шаблон VM, в ресурсах которого указаны несколько сетей. При создании VM с таким шаблоном к ней будет подключено столько сетевых карт, сколько сетей в шаблоне VM. Каждый интерфейс будет связан с соответствующей сетью libvirt, причем сетевые интерфейсы связываются по порядку: виртуальный интерфейс eth0 будет привязан к первой сети, eth1 - ко второй и так далее.

libvirt при запуске VM включает соответствующие сетевые интерфейсы в мосты, указанные в настройках сетей.

Например, на узле кластера, на которм настроено три сети, создана VM с тремя сетевыми интерфейсами.

Конфигурация в libvirt будет выглядеть так:

# virsh dumpxml  vmmultinic
 <domain type='kvm' id='2'>
   <name>vmmultinic</name>
   <uuid>bf23ea1f-458f-8be3-1c3e-2e053b3489a3</uuid>
   ...
   <devices>
     ...
     <interface type='network'>
       <mac address='52:54:00:61:ac:df'/>
       <source network='Basic'/>
       <target dev='vnet1'/>
       <model type='virtio'/>
       <filterref filter='vm-vmmultinic'>
         <parameter name='IP' value='172.31.224.13'/>
         <parameter name='IPV6' value='2a01:230::bef6:85ff:fed7:4062'/>
       </filterref>
       <alias name='net0'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
     </interface>
     <interface type='network'>
       <mac address='52:54:00:6f:d0:1e'/>
       <source network='B2'/>
       <target dev='vnet2'/>
       <model type='virtio'/>
       <alias name='net1'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
     </interface>
     <interface type='network'>
       <mac address='52:54:00:9f:11:bb'/>
       <source network='b3'/>
       <target dev='vnet3'/>
       <model type='virtio'/>
       <alias name='net2'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
     </interface>
     ...
   </devices>
   ...
 </domain>
Список сетевых мостов:
# brctl show
bridge name	bridge id		STP enabled	interfaces
virbr0		8000.525400fb1ab4	yes		virbr0-nic
vmbr0		8000.525400ff6734	no		eth0
                                    vnet1
vmbr1		8000.fe54006fd01e	no		vnet2
vmbr2		8000.fe54009f11bb	no		vnet3

Видно, что первый интерфейс VM (eth0) подключен к мосту vmbr0 и к основному интерфейсу узла кластера. Второй интерфейс - eth1 виртуальной машины подключен к мосту vmbr1, а третий - к vmbr2

Все остальные VM с таким же шаблоном будут подключены аналогичным образом, а значит все вторые интерфейсы таких VM будут связаны в единую сеть.

Например, все узлы кластера связаны между собой внутренней сетью 10.1.1.0/24 через вторые интерфейсы eth1. Чтобы предоставить доступ VM к этой сети, необходимо cвязать интерфейс eth1 узла кластера и мост vmbr1. После этого виртуальные машины будут связаны с внутренней сетью кластера через вторые интерфейсы.

Пример ручной настройки сети

Пример настроек сети