Xen - сеть bridge

Модератор: Модераторы разделов

Аватара пользователя
joub
Сообщения: 170
ОС: Debian

Xen - сеть bridge

Сообщение joub »

День добрый всем админам!

Недавно занялся настройкой хост-сервера виртуальных машин XEN.
С большего разобрался, даже удалось подключится к консоли управления с помощью virt-manager-а.
Но возникла одна неприятная проблема - не могу осилить настройку сети по типу bridge...
По сути, на текущий момент, виртуалку крутятся в своей собственной сети выделенный им xen-сервером, а хотелось бы чтоб они были видны напрямую из сети, и вели себя как реальные сервера...

Подскажите конфиг, или где-что подправить - дабы оно наконец-то заработало!

система:
Linux version 2.6.32-5-xen-686 (Debian 2.6.32-31) (ben@decadent.org.uk) (gcc version 4.3.5 (Debian 4.3.5-4) ) #1 SMP Wed Mar 9 01:27:54 UTC 2011

/etc/xen/xend-config.sxp

Код: Выделить всё

(xend-http-server yes)
(xend-unix-server yes)
(xend-port            8000)
(network-script network-bridge)
(vif-script vif-bridge)
(dom0-min-mem 196)
(enable-dom0-ballooning yes)
(total_available_memory 0).
(dom0-cpus 0)
(vncpasswd '')


виртуалки создавал и настраивал через virt-manager.

За ранее спасибо.
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Xen - сеть bridge

Сообщение Ленивая Бестолочь »

а в чём проблема то сама?
создавайте домен с сетью типа такой:
vif = [ 'bridge=br0' ]
(имя бриджа поправьте, я не помню, какое оно по дефолту. brctl show)

iУведомление от модератора
переношу в виртуализацию
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Аватара пользователя
joub
Сообщения: 170
ОС: Debian

Re: Xen - сеть bridge

Сообщение joub »

Ленивая Бестолочь писал(а):
19.04.2011 06:22
а в чём проблема то сама?
создавайте домен с сетью типа такой:
vif = [ 'bridge=br0' ]
(имя бриджа поправьте, я не помню, какое оно по дефолту. brctl show)


Вот тут-то у меня и проблема - куда это вписать ? (путь и имя файла)

ибо конфиг сети у меня представляет из себя:

Код: Выделить всё

<network>
  <name>default</name>
  <uuid>3afcb228-fc69-e605-bc2d-b0985c8d23a0</uuid>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='on' delay='0' />
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254' />
    </dhcp>
  </ip>
</network>
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Xen - сеть bridge

Сообщение Ленивая Бестолочь »

joub писал(а):
19.04.2011 09:32
Вот тут-то у меня и проблема - куда это вписать ? (путь и имя файла)

обычно в ксене конфиги доменов лежат в /etc/xen, иногда /etc/xen/vm (sles), /etc/xen/domains.
что такое virt manager я по серости не знаю :)
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Аватара пользователя
joub
Сообщения: 170
ОС: Debian

Re: Xen - сеть bridge

Сообщение joub »

!!!! Xen 4.0.1 !!!! - может это натолкнет на верную мысль...

Ленивая Бестолочь писал(а):
19.04.2011 19:11
joub писал(а):
19.04.2011 09:32
Вот тут-то у меня и проблема - куда это вписать ? (путь и имя файла)

обычно в ксене конфиги доменов лежат в /etc/xen, иногда /etc/xen/vm (sles), /etc/xen/domains.
что такое virt manager я по серости не знаю :)



там у меня только следующее:

Код: Выделить всё

/etc/xen/
-----------scripts/
-----------vnc/
-----------xend-config.sxp
-----------xend-pci-permissive.sxp
-----------xend-pci-quirks.sxp


Но есть нечто похожее на правду здесь:

Код: Выделить всё

root@srv:/var/lib/xend# ls -l
итого 16
drwx------ 5 root root 4096 Апр 14 13:53 domains
drwxr-xr-x 2 root root 4096 Апр 12 15:52 images
srwxr-xr-x 1 root root    0 Апр 18 16:11 relocation-socket
drwxr-xr-x 3 root root 4096 Апр 11 14:37 state
drwx------ 2 root root 4096 Апр 12 15:45 storage
srwxr-xr-x 1 root root    0 Апр 18 16:11 xend-socket


и это:

Код: Выделить всё

root@srv08:/var/lib/xend/domains/26977a03-62a8-3c5a-dc08-c9c249d920b9# cat config.sxp
(domain
    (domid 6)
    (vcpus_params ((cap 0) (weight 256)))
    (PV_args )
    (PV_bootloader )
    (cpus (()))
    (memory_sharing 0)
    (superpages 0)
    (VCPUs_live 1)
    (actions_after_crash restart)
    (uuid 26977a03-62a8-3c5a-dc08-c9c249d920b9)
    (PV_ramdisk )
    (name_label bf2)
    (VCPUs_at_startup 1)
    (HVM_boot_params ((order c)))
    (platform
        ((timer_mode 1)
            (hpet 0)
            (vpt_align 1)
            (apic 1)
            (loader /usr/lib/xen-default/boot/hvmloader)
            (rtc_timeoffset 0)
            (serial pty)
            (parallel none)
            (usb 1)
            (tsc_mode 0)
            (usbdevice tablet)
            (device_model /usr/lib/xen/bin/qemu-dm)
            (boot c)
            (nomigrate 0)
            (xen_platform_pci 1)
            (pci ())
            (pae 1)
            (viridian 0)
            (acpi 1)
        )
    )
    (PV_kernel )
    (memory_static_min 0)
    (HVM_boot_policy 'BIOS order')
    (VCPUs_max 1)
    (memory_static_max 536870912)
    (actions_after_shutdown destroy)
    (memory_dynamic_max 536870912)
    (is_a_template False)
    (memory_dynamic_min 536870912)
    (Description )
    (target 0)
    (PV_bootloader_args )
    (other_config ())
    (auto_power_on False)
    (actions_after_reboot restart)
    (on_crash restart)
    (uuid 26977a03-62a8-3c5a-dc08-c9c249d920b9)
    (bootloader_args )
    (vcpus 1)
    (name bf2)
    (on_poweroff destroy)
    (on_reboot restart)
    (cpus (()))
    (description )
    (bootloader )
    (maxmem 512)
    (memory 512)
    (shadow_memory 5)
    (vcpu_avail '1')
    (features )
    (on_xend_start ignore)
    (on_xend_stop ignore)
    (start_time 1302776477.74)
    (image
        (hvm
            (kernel )
            (superpages 0)
            (tsc_mode 0)
            (hpet 0)
            (boot c)
            (loader /usr/lib/xen-default/boot/hvmloader)
            (serial pty)
            (vpt_align 1)
            (xen_platform_pci 1)
            (rtc_timeoffset 0)
            (parallel none)
            (pci ())
            (pae 1)
            (viridian 0)
            (acpi 1)
            (timer_mode 1)
            (apic 1)
            (nomigrate 0)
            (usbdevice tablet)
            (device_model /usr/lib/xen/bin/qemu-dm)
            (usb 1)
            (notes (SUSPEND_CANCEL 1))
        )
    )
    (status 1)
    (state ------)
    (store_mfn '1044476')
    (device
        (vif
            (bridge virbr0)
            (mac 00:16:36:44:53:cd)
            (script /etc/xen/scripts/vif-bridge)
            (uuid cfcd5b99-0e3f-d1d6-f641-63bd7c8ef0f2)
            (backend 0)
        )
    )
    (device
        (vbd
            (uuid e8ab6fa0-2930-2a65-1153-e65eadd99b19)
            (bootable 1)
            (dev hda:disk)
            (uname file:/var/lib/libvirt/images/bf2.img)
            (mode w)
            (backend 0)
            (VDI )
        )
    )
    (device
        (vbd
            (uuid 53bce5b8-b944-b017-ad7c-ebc4f6ca4240)
            (bootable 0)
            (dev hdc:cdrom)
            (uname file:/home/iso/debian-6.0.0-i386-DVD-1.iso)
            (mode r)
            (backend 0)
            (VDI )
        )
    )
    (device (vkbd (backend 0)))
    (device
        (vfb
            (vncunused 1)
            (keymap en-us)
            (vnc 1)
            (uuid 955e3b79-4ad9-108b-a618-d28909c87376)
        )
    )
)
Спасибо сказали:
Аватара пользователя
vr13
Сообщения: 874
ОС: gentoo

Re: Xen - сеть bridge

Сообщение vr13 »

идея сети в xen через bridge очень простая и прозрачная (о том как эта идея реализуется в разных дистрибутивах - не знаю, у меня самосборное)

Код: Выделить всё

(network-script network-bridge)
(vif-script vif-bridge)

эти две строчки /etc/xen/config.sxp делают следующее:
  • переименовывают первый сетевой интерфейс eth0 в peth0 (типа - physical eth0)
  • создают bridge с именем eth0, и подключают к нему физический интерфейс peth0. в результате, dom0 подключен в сеть. для неувеличения энтропии, mac-адрес интерфейса bridge делается таким же как физический, подключенный в сеть, поэтому манипуляций xen с интерфейсами в сети никто не видит
  • все стартующие domU подключаются к этому же bridge и т.образом, видят друг друга и сеть
в результате, конфигурация bridge для, например, трех работающих виртуальных машин выглядит так:

Код: Выделить всё

# brctl show
bridge name  bridge id                  STP enabled  interfaces
eth0         8000.e0cb4e520dc6          no           peth0
                                                     vif4.0
                                                     vif5.0
                                                     vif6.0

при этом, конфигурация сети domU (канонически файлы конфигурации находятся в /etc/xen, как писалось ЛБ):

Код: Выделить всё

...
vif = [ 'mac=0a:11:10:24:14:20' ]
...

mac-адрес можно не указывать, xen выделит динамический, уникальный в пределах инсталляции xen. интерфейсы vifX.Y - создаются dom0 (драйвер-доменом в общем случае) при старте domU и уничтожаются при останове domU. визуально легко представить как второй конец ethernet витой пары, которая "подключается" в bridge (первый - "подключен" в виртуальный сетевой адаптер domU). X и Y идентификатор domU и номера интерфейса в domU, соответственно

более сложные конфигурации bridge-сети в xen делаются "вручную", на сколько хватит фантазии конфигуратора или/и дистрострителя, например в моем случае - каждый домен включен в два bridge, первый подключен в настоящую сеть, а второй, организует изолированную сеть, в которой domU видят только друг друга:

Код: Выделить всё

# brctl show
bridge name  bridge id                  STP enabled  interfaces
eth0         8000.e0cb4e520dc6          no           peth0
                                                     vif1.0
                                                     vif2.0
                                                     vif3.0
heartbeat    8000.e2bd63e1584e          no           pdummy0
                                                     vif1.1
                                                     vif2.1
                                                     vif3.1

сделано таким образом (/etc/xen/config.sxp):

Код: Выделить всё

...
(network-script my-network-bridge)
...

а /etc/xen/scripts/my-network-bridge совсем простой:

Код: Выделить всё

...
  /sbin/modprobe dummy
  ${dir}/network-bridge start
  ${dir}/network-bridge start bridge=heartbeat netdev=dummy0
...

конфигурация сети в domU в этом случае будет такой:

Код: Выделить всё

...
vif = [ 'mac=0a:11:10:24:14:16',
        'mac=0a:99:10:24:14:16,bridge=heartbeat,script=vif-bridge' ]
...

идеи взяты из книжки "running xen"

все написанное справедливо для xen версии < 4.1: там конфигурация сетевой инфраструктуры, говорят, полностью отдана на откуп операционной системе драйвер-домена (dom0). у меня пока до этого не руки не дошли, пока немножко подправил стартовые скрипты нового xen и 4.1 работает как 4.0
Спасибо сказали:
Аватара пользователя
vr13
Сообщения: 874
ОС: gentoo

Re: Xen - сеть bridge

Сообщение vr13 »

joub писал(а):
19.04.2011 22:32

Код: Выделить всё

...
    (device
        (vif
            (bridge virbr0)
...

вероятно ваша проблема - тут (libvirt скорее всего помещает конфигурацию domU в /var/lib/xend/domains/<uuid-domU>. посмотрите, что при этом говорит brctl show. куда этот virtbr воткнут?
Спасибо сказали:
Аватара пользователя
joub
Сообщения: 170
ОС: Debian

Re: Xen - сеть bridge

Сообщение joub »

vr13 писал(а):
19.04.2011 22:33
идея сети в xen через bridge очень простая и прозрачная...


как все красиво но увы - не пашет :(
начнем хотя-бы с того что у меня конфигурация разительно отличается по структуре и размещению в фс.
а описанный вами мануал я уже где-то читал... но и на этом спасибо.
буду капать дальше...


vr13 писал(а):
19.04.2011 22:47
joub писал(а):
19.04.2011 22:32

Код: Выделить всё

...
    (device
        (vif
            (bridge virbr0)
...

вероятно ваша проблема - тут (libvirt скорее всего помещает конфигурацию domU в /var/lib/xend/domains/<uuid-domU>. посмотрите, что при этом говорит brctl show. куда этот virtbr воткнут?



Код: Выделить всё

root@srv08:~# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0   966     2     r-----    111.1
bf2                                          1   512     1     r-----     26.1
linux                                        2   512     1     ------      0.3
qwe                                              512     1                 6.7



Код: Выделить всё

root@srv08:~# brctl show
bridge name     bridge id               STP enabled     interfaces
eth0            8000.000c767e0181       no              peth0
virbr0          8000.626a9a92d2ac       yes             tap1.0
                                                        tap2.0
                                                        vif1.0
                                                        vif2.0
virbr1          8000.000000000000       yes


видимо не туда куда надо...
Спасибо сказали:
Аватара пользователя
vr13
Сообщения: 874
ОС: gentoo

Re: Xen - сеть bridge

Сообщение vr13 »

joub писал(а):
19.04.2011 22:53

Код: Выделить всё

root@srv08:~# brctl show
bridge name     bridge id               STP enabled     interfaces
eth0            8000.000c767e0181       no              peth0
virbr0          8000.626a9a92d2ac       yes             tap1.0
                                                        tap2.0
                                                        vif1.0
                                                        vif2.0
virbr1          8000.000000000000       yes


видимо не туда куда надо...

об этом и говорится: vibr0 у вас не подключен в сеть. подключите все в bridge с названием eth0 (наверняка libvirt это делает мышкой :)), попробуйте заменить рукаим какой-нить один в /var/lib/xend/domains/... в секции vif: vibr0 на eth0 и перезапустите domU
Спасибо сказали:
Аватара пользователя
joub
Сообщения: 170
ОС: Debian

Re: Xen - сеть bridge

Сообщение joub »

vr13 писал(а):
19.04.2011 23:07
об этом и говорится: vibr0 у вас не подключен в сеть. подключите все в bridge с названием eth0 (наверняка libvirt это делает мышкой :)), попробуйте заменить рукаим какой-нить один в /var/lib/xend/domains/... в секции vif: vibr0 на eth0 и перезапустите domU


Увы - при создании сетевого интерфейса там даже нет упоминания про бридж (это в GUI).
Если подправить - то при перезапуске домена конфигурация обнуляется, видимо храниться где-то во вне...


вот: libvirt нашел интересное решение моей проблемы... попробую завтра, если что выйдет - отпишу )

кто может посоветовать какую GUI для управления XEN, желательно по сети!
Спасибо сказали:
Аватара пользователя
Ali1
Сообщения: 2250

Re: Xen - сеть bridge

Сообщение Ali1 »

кто может посоветовать какую GUI для управления XEN, желательно по сети!

virt-manager
Спасибо сказали:
Аватара пользователя
joub
Сообщения: 170
ОС: Debian

Re: Xen - сеть bridge

Сообщение joub »

Ну вроде поборол....
А подскажите пожалуйста - как сменить IP адрес домена ?

И с этим разобрался )) сего-то надо было через shutdown/create перезапустить )
Спасибо сказали:
Аватара пользователя
maskimko
Сообщения: 196
ОС: Fedora 18

Re: Xen - сеть bridge

Сообщение maskimko »

А можно еще разок объяснить как вы изменяли файлы в /var/lib/xend/domains/<uuid-domU> что-бы они не обнулялись?
Жизнь, как туалетная бумага! Кажется, что длинная, а тратишь на всякое дерьмо!
Спасибо сказали:
subputnik
Сообщения: 1
ОС: ubuntu

Re: Xen - сеть bridge

Сообщение subputnik »

У меня тоже подобная лажа, не поднимается peth0, хотя всё правельно сделал...
может кто поможет?
Спасибо сказали: