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

Подключение виртуальной сети к реальной локальной сети в кластере OpenNebula

Я использую Open Nebula с 1 контроллером кластера и 3 узлами.

Я зарегистрировал узлы на внешнем контроллере и могу запустить виртуальную машину Ubuntu на одном из узлов.

Однако из моей сети я не могу пропинговать виртуальную машину. Я не совсем уверен, правильно ли я настроил виртуальную машину.

Все узлы имеют br0 интерфейсы, соединенные с eth0. IP-адрес находится в диапазоне 192.168.1.x.

Файл шаблона, который я использовал для vmnet:

NAME = "VM LAN"
TYPE = RANGED

BRIDGE = br0 # Replace br0 with the bridge interface from the cluster nodes

NETWORK_ADDRESS = 192.168.1.128 # Replace with corresponding IP address
NETWORK_SIZE    = 126
NETMASK         = 255.255.255.0
GATEWAY         = 192.168.1.1
NS              = 192.168.1.1

Однако я не могу связаться ни с одной из виртуальных машин, хотя Sunstone сообщает, что виртуальная машина запущена и onevm list также заявляет, что виртуальная машина работает.

Было бы полезно узнать, что мы используем KVM в качестве гипервизора, и я не совсем уверен, может ли быть проблемой интерфейс virbr0, который был автоматически создан при установке KVM.

Когда вы впервые приступаете к настройке OpenNebula, консоль на основе VNC становится вашим помощником. я настоятельно рекомендую настройте это, прежде чем пытаться диагностировать что-либо еще, потому что очень полезно иметь возможность смотреть на состояние вашей виртуальной машины, даже если ее сетевая конфигурация нарушена. Серьезно - не проходите, не собирайте 200 долларов - попробуйте запустить компонент noVNC, а затем вернитесь к другой работе по настройке OpenNebula.

Что касается вашего фактического вопроса - проблема почти наверняка в том, что вы используете стандартный образ ОС без каких-либо сценариев контекстуализации сети. OpenNebula по своей задумке фактически не управляет IP-адресами, хотя поддерживает их пул и «сдает в аренду». На самом деле он назначает MAC-адрес виртуальному интерфейсу Ethernet, который имеет желаемый IP-адрес, закодированный в последних 4 байтах MAC-адреса, и операционная система должна распознать это и назначить IP-адрес соответствующим образом.

OpenNebula имеет некоторая документация о контекстуализации, но это, честно говоря, не так уж и хорошо. Я обнаружил, что проще просто прочитать источник пример скрипта vmcontext.sh и настроить мои виртуальные машины для использования этого механизма, запустив vmcontext при запуске в соответствующей точке процесса загрузки.

Я столкнулся с той же проблемой, и это была виртуальная машина, которую я установил с помощью ubuntu vmbuilder.

Проверить это вступление, которое включает полный vm. Я уверен, что это должно сработать для вас.

Помимо прочего, они предоставляют сценарий инициализации, который настраивает определенные параметры сети при загрузке, так что, вероятно, это и есть суть проблемы. Oни более полно объясните это здесь с контекстуализацией.

Общий метод контекста

Таким образом, оказывается, что установка файлов контекстуализации в виртуальную машину - довольно простая задача.

Если вы используете vmbuilder для создания своей виртуальной машины, вы можете использовать ловушку после установки (и я уверен, что другие методы сборки также имеют различные ловушки после установки).

Создайте файл копии (hostfile to guestfile, убедитесь, что он разделен одним пробелом?)

copy.cfg

<path>/rc.context /etc/init.d/vmcontext
<path>/postinstall.sh /tmp/postinstall.sh

Создайте хук после установки

postinstall.sh

#!/bin/bash
# create mount point for context image
mkdir /mnt/context
# setup vmcontext at runlevel 2 service level 1
ln -s /etc/init.d/vmcontext /etc/rc2.d/S01vmcontext

Создать скрипт для chmod для гостевой виртуальной машины

chvm.sh

#!/bin/bash
# vmbuilder passes vmguest root as $1
chroot $1 /tmp/postinstall.sh

Наконец, отредактируйте файл конфигурации vmbuilder для виртуальной машины.

yourvm.cfg

...
copy = <full_path>/copy.cfg
execscript = <full_path>/chvm.sh
...

Затем создайте с помощью vmbuilder

sudo vmbuilder kvm ubuntu -c vmbuilder.cfg

Добавляем vnc на основе туманности

Включите что-то подобное в свой контекст

GRAPHICS = [
  LISTEN = 0.0.0.0,
  PORT   = 5900,
  TYPE   = vnc ]

Затем туннель ssh к компьютеру, который находится в сети гостевых машин

ssh -L 5900:127.0.0.1:5900 yourserver.com

И откройте клиент vnc по адресу 127.0.0.1 на локальном компьютере.

Мысли

Nebula не может заставить kvm / libvirt запускать ваши диски на hd * / sh *, поэтому вам нужно поиграть с тем, где они заканчиваются (и отредактируйте rc-файл, чтобы отразить это). Например. с моей настройкой Ubuntu изображение qcow2 получает / dev / sda, а изображение контекста получает / dev / sr0.

У меня также была проблема, из-за которой kvm или nebula не могли угадать формат моего изображения .qcow2. Следовательно, в DISK мне пришлось включить DRIVER = qcow2. Эта же проблема возникает для архитектуры процессора, поэтому в ОС мне пришлось включить ARCH = x86_64 (поскольку я работал с гостевой системой amd64).

Удачи