Задача: объединить группы серверов на Linux, находящиеся в одном ЦОД, в отказоустойчивую сеть так, чтобы выход из строя любого линка или коммутатора не приводил к потере связности. В качестве бонуса получить увеличение пропускной способности там, где это возможно. У каждого сервера 2 сетевые карты.
Для таких задач в Linux есть bonding. Вот самая полная
документация, которую я нашел.
Вопрос: какой режим bonding'а и какую организацию сети между свичами выбрать?
Если следовать документации, то выходит, что для отказоустойчивости подходит только active-backup:
11.2.1 HA Bonding Mode Selection for Multiple Switch Topology
In a topology such as the example above, the active-backup and
broadcast modes are the only useful bonding modes when optimizing for
availability; the other modes require all links to terminate on the
same peer for them to behave rationally.
То есть утверждается, что при работе в других режимах все линки от хостов должны заканчиваться в одном коммутаторе, иначе они будут работать «нерационально». Но непонятно, почему это так.
Разве не будет работать схема вроде такой, где каждый хост связывается с 2 свичами в режиме balance-alb, свичи для бондинга никак специально не конфигурируются, но при этом каждый свич связан с 2 другими с использованием STP? Тогда по идее мы получим и увеличение пропускной способности, и отказоустойчивость.
+-------+ +--------------+ +--------------+ +-------+
| HostA |.........| Switch1 |......| Switch3 |.........| HostX |
+-------+ . . +--------------+ +--------------+ . . +-------+
. . . . . .
. . . . . .
bonding x . STP . x bonding
. . . . . .
. . . . . .
+-------+ . . +--------------+ +--------------+ . . +-------+
| HostB |.........| Switch2 |......| Switch4 |.........| HostY |
+-------+ +--------------+ +--------------+ +-------+
Или для этой задачи существует более правильное решение, которое я не увидел?