Назад | Перейти на главную страницу

Создание виртуальной сети для гостей KVM, охватывающей несколько хост-машин

У меня 5 физических машин под управлением Ubuntu 14.04, все они вместе в сети. Все они имеют статические IP-адреса. Каждая из этих машин имеет от 1 до 4 виртуальных машин через KVM / QEMU под управлением Ubuntu 14.04. Мне разрешено использовать DHCP для получения нестатических адресов для всех виртуальных машин в физической сети, но для моего распределенного программного обеспечения мне нужно, чтобы все виртуальные машины имели статические IP-адреса в виртуальной сети (поскольку я не могу получить подробнее о физической сети). Однако эта виртуальная сеть должна охватывать всех гостей на всех виртуальных машинах. Кроме того, одна из виртуальных машин также должна иметь статический адрес в физической сети.

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

Это моя желаемая схема:

123.45.144.0/28 (physical network)
192.168.0.0/16 (virtual network for all the vms)

123.45.147.3 (host)
    192.168.122.101, 123.45.147.49 (vm)
    192.168.122.102 (vm)
    192.168.122.103 (vm)
    192.168.122.104 (vm)

123.45.147.4 (host)
    192.168.122.105 (vm)

123.45.147.5 (host)
    192.168.122.106 (vm)

123.45.147.6 (host)
    192.168.122.107 (vm)
    192.168.122.108 (vm)

123.45.147.7 (host)
    192.168.122.109 (vm)
    192.168.122.110 (vm)

Вот результаты работы ifconfig:

Один из хозяев:

eth0      Link encap:Ethernet  HWaddr 5c:f9:dd:75:07:72  
          inet addr:123.45.147.3  Bcast:123.45.151.255  Mask:255.255.248.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

virbr0    Link encap:Ethernet  HWaddr 52:54:00:bd:2b:39  
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

Виртуальная машина с мостовым интерфейсом (eth1) и интерфейсом для виртуальной сети (eth0)

eth0      Link encap:Ethernet  HWaddr 52:54:00:59:2d:c8  
          inet addr:192.168.122.101  Bcast:192.168.122.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth1      Link encap:Ethernet  HWaddr 52:54:00:4d:d0:59  
          inet addr:123.45.147.49  Bcast:123.45.151.255  Mask:255.255.248.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

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

Когда вы создаете виртуальную сеть на каждом хосте, обратите внимание на ifconfig показывает "virbr0" как имеющий адрес "192.168.122.1". Попробуйте отредактировать файл конфигурации виртуальной сети на каждом хосте после создания виртуальной сети так, чтобы «virbr0» содержал другой IP-адрес (например, 192.168.122.2 на хосте 2, 192.168.122.3 на хосте 3, 192.168.122.4 на хосте 4, 192.168. 122,5 на хосте 5).

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

Возможно, вам придется включить пересылку пакетов, чтобы эта работа работала

sudo sysctl net.ipv4.ip_forward=1

Если у вас есть отдельный интерфейс ethX в системе с подключением к физической сети, создайте второй мост на этом интерфейсе. Затем вы можете настроить физический адрес на этом виртуальном мосту.

Статический адрес можно настроить на виртуальной машине. Это упрощает поддержание стабильного адресного пространства.