Я настраиваю довольно простой HA-кластер Proxmox (Debian) с 3 хостами. Все виртуальные машины должны находиться в одной подсети, и при переключении одной из них на другой хост внутри виртуальной машины не требуется реконфигурации, и подключение ко всем виртуальным машинам на оставшихся хостах должно оставаться.
Я могу легко добиться этого с помощью туннелей OpenVSwitch GRE на мосту OVS, который все виртуальные машины используют в такой топологии сетки:
ovs-vsctl add-br vmbr1
ip addr add 10.0.10.110/24 dev vmbr1
ovs-vsctl add-port vmbr1 gre0 -- set interface gre0 type=gre options:remote_ip=1.1.1.1
ovs-vsctl add-port vmbr1 gre1 -- set interface gre1 type=gre options:remote_ip=2.2.2.2
Где 1.1.1.1 и 2.2.2.2 будут внешними IP-адресами двух других хостов, а 10.0.10.110/24 - это IP-адреса хостов в подсети, предназначенной для виртуальных машин. Очевидно, я должен повторить это с соответствующими параметрами на двух других хостах.
Проблема в том, что я получаю петлю и, следовательно, полностью нефункциональную сеть на vmbr1
. Смотря на http://docs.openvswitch.org/en/latest/faq/issues/ Я могу исправить цикл, добавив
ovs-vsctl set bridge vmbr1 stp_enable=true
к смеси. Это работает, но по какой-то причине у меня теперь всегда есть два хоста (кажущиеся случайными, какие именно два), которые не подключаются напрямую, а используют третий хост в качестве промежуточного.
Это приводит к удвоению задержки для этих двух и ненужному трафику для хоста 3, который является промежуточным. Я хотел бы это исправить, но пока не нашел способа сделать это. Я читал, что использование OpenFlow каким-то образом может помочь, но не понял, как это сделать. Есть ли способ получить здесь настоящую ячеистую сеть?
Предлагаю вам попробовать это с каким-нибудь контроллером SDN. Может быть, вы можете использовать ONOS или Open Day Light. Или, если вы хотите гибкого исследования, вы можете использовать контроллер Ryu, вот какой-то контроллер Ryu с веб-интерфейсом https://github.com/dektiram/SDNColdBrew