LINUX.ORG.RU
ФорумAdmin

Объединение бриджей в Proxmox на 2х нодах в кластере.

 , , , ,


1

3

Доброго дня!

Есть сервер с виртуалками на базе Proxmox (KVM + OpenVZ). Допустим есть 2 бриджа (их больше, но суть не в этом) - vmbr0, который связан с физ. интерфейсом eth0 и связан с «внешним миром». Есть vmbr99 - который не связан с физическими интерфейсами и служит аналогом свитчка, в который «воткнуты» все виртуалки, с интерфейсами в подсети 192.168.99.0/24.

И есть виртуалка router, которая имеет 2 сетевых интерфейса, один подключен к vmbr0, другой к vmbr99. Соотв. она шлюз по умолчанию для связи всех виртуалок с «внешним» миром. Маршруты у неё динамические, через OSPF.

Т.е. задумка в том, что весь траф до виртулок (на которых крутятся сервисы), ходят через router, где этот трафик контролируется и фаерволлится. Т.к. пакеты крутятся только внутри ядра физической ноды, то задержек тут практически нет.

Соб-но вопрос в том, что теперь добавилась вторая нода Proxmox в кластер и есть желание организовать HA-кластер на этом деле, точнее хотя бы Failover с DRDB. С кластером вроде всё понятно, доки есть.

А вот как быть с сетью 192.168.99.0/24? Ведь бридж vmbr99 существует только в пределах одной физической ноды. Надо сделать так, чтобы виртуалки можно было мигрировать с одной ноды на другую, без изменения IP адреса.

Как это наиболее корректно сделать в данном случае? У меня навскидку мысль: на 2ой ноде поднимается такой же бридж vmbr99. Бриджи vmbr99 соединяются на обоих нодах через отдельный физический интерфейс, ну или через VLAN. Получаем как бы 2 виртуальных свитча, в каскаде друг с другом.

Но получается, что трафик с обоих нод ходит через виртуалку router на одной ноде, хотя вторая нода тоже подключена к «внешнему» миру.

Можно ли как-то на данном этапе сделать 2 виртуалки с роутерами на обоих нодах и каким-то образом «определять», какие из виртуалок находятся на какой физической ноде и соотв. трафик гнать через свой маршрутизатор? Пока вижу это в виде костыльного скрипта, который будет «точечные маршруты» (с маской /32) прописывать в OSPF, в зависимости от запущенной локально виртуалки. Но может есть более изящные решения?


А вот как быть с сетью 192.168.99.0/24? Ведь бридж vmbr99 существует только в пределах одной физической ноды. Надо сделать так, чтобы виртуалки можно было мигрировать с одной ноды на другую, без изменения IP адреса.

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

stave ★★★★★
()
Ответ на: комментарий от petav

Вы желаете HA кластер на уровне вирт.машин или приложений?

На уровне вирт. машин. Точнее, как я уже писал - мне нужен Failover. Балансировать нагрузку на уровне машин ес-но не нужно.

nstorm
() автор топика
Ответ на: комментарий от stave

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

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

nstorm
() автор топика
Ответ на: комментарий от nstorm

На уровне вирт. машин. Точнее, как я уже писал - мне нужен Failover. Балансировать нагрузку на уровне машин ес-но не нужно.

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

petav ★★★★★
()
Ответ на: комментарий от nstorm

Т.е. возъмем что у нас 10 виртуалок. Вы их 5 на одной ноде запустите, еще 5 на другой. Если одна из них упадет, то все 10 будут работать на одной.

хотелось бы чтобы трафик к своим «виртуалкам» приходил на физический интерфейс соотв. ноды (там, где эта виртуалка запущена в данный момент).

Эта проблема не на уровне виртуализации. Виртуализация здесь боком. если я все верно понял. Просто разгоните трафик по VLAN. VLAN прицепите к виртуалкам, через их конфиги. Все VLAN в транк и на порты узлов proxmox, что бы все VLAN были доступны обоим гипервизорам. Когда гость файловер, то он свой VLAN сам «найдет». Ну или в HA кластер включать управление коммутатором при файловере.

petav ★★★★★
()
Ответ на: комментарий от petav

Не настолько просто получается, мне failover нужен, но при этом пока обе ноды «живы» на обоих работают разные виртуальные машины и надо чтобы они были в одной «общей» подсети.

nstorm
() автор топика
Ответ на: комментарий от petav

Эта проблема не на уровне виртуализации. Виртуализация здесь боком. если я все верно понял.

Да, правильно поняли. Это больше задача «сетевого» уровня, но ноги у неё с виртуализации растут, поэтому и описал ситуацию.

Просто разгоните трафик по VLAN. VLAN прицепите к виртуалкам, через их конфиги. Все VLAN в транк и на порты узлов proxmox, что бы все VLAN были доступны обоим гипервизорам. Когда гость файловер, то он свой VLAN сам «найдет».

Хмм... да, кажется в общих чертах понял. Если я понял - тут желательно чтобы «умный» коммутатор, который будет решать по какому порту транка нужный VLAN был физически непосредственно к портам нод подключен (чтобы он знал на каком порту у него MAC'и нужных VLAN'ов)?

nstorm
() автор топика
Ответ на: комментарий от stave

https://pve.proxmox.com/wiki/Network_Model и транк-линк от коммутатора

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

Спасибо, stave и petav!

nstorm
() автор топика
Ответ на: комментарий от nstorm

Хмм... да, кажется в общих чертах понял. Если я понял - тут желательно чтобы «умный» коммутатор, который будет решать по какому порту транка нужный VLAN был физически непосредственно к портам нод подключен (чтобы он знал на каком порту у него MAC'и нужных VLAN'ов)?

Не совсем понял, о чем Вы. Суть моего предложения.

  • С коммутатора в ноды идет витая пара, физический кабель;
  • В физическом кабеле набор VLAN одинаковый для двух node;
  • Вируальные машины сажаем на VLAN, пример куска из конф. файла для машины:
     <vlan trunk='yes'>
        <tag id='42'/>
        <tag id='47'/>
      </vlan>

Все. Машину перекидываем на вторую ноду. Она запускается и видит свой трафик.

petav ★★★★★
()
Ответ на: комментарий от petav

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

{Свитч}<->{eth0 на node1}<->[vmbr0 на node1]<->[veth101.1 (vmbr0), на CT101 РОУТЕР]<->[veth101.99 (vmbr99) на CT101]<->[vmbr99 на node1]<->[veth10x.99 на CT10x]

При этом к мосту vmbr99 не привязаны никакие физические сетевые интерфейсы ноды.

nstorm
() автор топика
4 июня 2014 г.

«vmbr0, который связан с физ. интерфейсом eth0»- а как это сделать в promox?

leikocid
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.