[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Замерзание бриджей в XEN



Alexander GQ Gerasiov пишет:
На Tue, 03 Jun 2008 22:33:39 +0400
Oleg Frolkov <info@of.pp.ru> записано:

Evgeny Yugov пишет:
Здравствуйте.

А поподробнее можно?

У меня есть 2 сервера:

1) XEN 3.1.2, 4 VM, почтовый траффик (порядка 300 клиентов)
2) XEN 3.2, 3 VM, телефония в основном

даже при регулярном dist-upgrade "замерзаний" не заметил...

Шлюз по умолчанию на твоем dom0 смотрит в сторону роутера который на этой-же машине в domU
или в сторону внешнего роутера? Так вот сделай виртуальную машинку
чисто роутер и поставь
шлюзом по умолчанию в dom0 - думаю неприятно удивишься.
У нас default gw на другой машине и все воспроизводится (хоть и не
так сильно как у тебя).
С default gw на другой машине все работает как часы и не только тут, это-же не
первый построенный мною xen сервер. В принципе у меня один P4 3.2Ghz/2Gb RAM
Обслуживал нужды целого провайдера (с небольшим трафиком - порядка 100Gb
внешнего и 1.5Tb внутреннего (проходящего через эту машину)) трафика. На этой
машине крутился и шейпинг и роутинг и биллинг и веб и VPN сервер. И еще пара
доменов для тестов висела, в общем-то все работало как часы если только на dom0 не пытаться что-то тянуть с интернета. Первый раз я с этой проблемой столкнулся в декабре сетапя эту машину, но в итоге не поборол и просто с нее ничего не тащил и не апдейтил.

Возможно у тебя проблема с трафиком между 2мя domU - там есть какая-то
оптимизация (через общую память что ли), но она работает криво (в чем
дело не помню, там пакеты иногда бились, кажется), попробуй ее отключить.
Между хоть 10 domU проблем НЕТ. Все работает как часы!
Проблема начинается когда тащу файл находясь на dom0
через роутер в domU. Причем если просто с виртуалок в domU
- проблем тоже нет.
Плюс еще есть проблемы с пропускной способностью между 2мя доменами на
одной машине - там получается очень низкая скорость.
Подробнее можно почитать вот тут:
http://vice.gq.net.ru/staff/text.odt
Не знаю.... с низкими скоростями не сталкивался. В принципе 150Mbit по iperf меня вполне устраивают (на том компе на котором могу померять сейчас - померял), не знаю каким боком тут сетевушки но в бытность тестирования xen на интеловой матери у меня роутер в domU отдавал на соседнюю машину 800Mbit iperf-ом. между доменами не помню..... с тех пор тестированием на скорость не заморачивался, но есть подозрение что
все сильно зависит от драйвера сетевушки.

Есть еще Intel Core Quad с установленным Debian/lenny amd64 -
опять-же с ядром от /etch. Там смоделировал такую-же ситуацию
- результат тот-же но более странный. Сейчас попробую как-то внятно отразить. Сеть у меня бриджевая, правда некоторыми трюками удалось без всяких модификаций скриптов заставить дефолтные скрипты работать так как хочется, а не так как в идеологии xen. Идеология по умолчанию предусматривает переименование физического интерфейса и в моем случае (использование VLAN) это ведет к неработоспособной сети.
Рабочий вариант:
auto vlan101
iface vlan101 inet manual
	vlan_raw_device eth1

auto vlan102
iface vlan102 inet manual
	vlan_raw_device eth1

auto br-san
iface br-san inet manual
	bridge_ports vlan101

auto br-vpn
iface br-vpn inet manual
	bridge_ports vlan102

то есть бриджы поверх вланов, а не наоборот.

Не... я уж лучше буду наоборот использовать.... за исключением этого косяка все остальное работает и требует всего 1 vif на виртуальную машину и потом в этой машине без рестартов могу поднимать сколько угодно vlan без проблем перекидывая vm на любой другой xen комп включенный
в транковый интерфейс.

Тем более что у xen есть проблемы с количеством vif-ов. Вот например:

# cat /proc/interrupts
.....
261:     108563     Dynamic-irq  blkif-backend
262:    2386218     Dynamic-irq  vif1.0
263:      38593     Dynamic-irq  blkif-backend
264:     206569     Dynamic-irq  blkif-backend
265:     133837     Dynamic-irq  vif2.0


т.е. для каждого vif еще и виртуальное прерывание аллоцируется.
По дефолту всего 8 vif можно распределить и добавление их количества
достаточно нетривиальная задача :) - надо передать параметр модулю
netloop а в этом народ пока не достиг согласия. Кто-то пытается передать
как параметр ядру, кто-то грузит из /etc/modules, кто-то где-то еще.... я пока
делаю так:

/etc/xen/scripts/network-bridge

modprobe netloop nloopbacks=32 > /dev/null 2>&1 || true

и так:

/etc/modules
netloop nloopbacks=32

Первое на всякий случай.... второе наверняка :)

В общем-то делать бриджи поверх VLANов не хочу....
теряется вся красота решения, когда виртуальные машины живут в
drbd контейнерах, контейнеры живут на 2х хостах хосты при этом живут
только в 1м VLAN а все остальные VLAN уже распределяются внутри
виртуальных машин и на некоторых роутерах может быть по паре десятков VLAN.
В итоге получаем прозрачную конфигурацию и возможность пускать domU на любом
из 2х хостов. Пробовал живую миграцию сделать - но к сожалению нет 2х одинаковых
машинок, а с P4 на AMD Athlon домен мигрирует и трапается.

Сорри за много букавок :)

Олег.


Reply to: