Балансировка нагрузки с помощью переключателя с допуском отказа

9

Во время обучения на сертификаты Cisco и Microsoft я много читал о NIC Teaming, Etherchannels и подобных вещах.

Я знаю, что вы можете выполнять статическую группировку в MS Windows Server или создавать порт-канал в Cisco или использовать динамические протоколы, такие как LACP и PAgP. Но все они предлагают балансировку нагрузки, используя MAC-адрес источника или назначения или IP-адрес, комбинацию XOR вместе или похожие вещи, верно? И кажется, что нет никакого способа увеличить вашу фактическую пропускную способность, если у вас есть длинная длинная передача файлов с одного сервера на другой (например, если 4 GigE соединены вместе, чтобы увеличить его до 4 Гбит / с).

Интересно, правда ли это? Есть ли способ использовать всю пропускную способность связанных интерфейсов? Из нескольких источников я слышал, что есть что-то вроде SLB (Switch-Assisted Load Balancing с Fault Tolerance), который поддерживает полную балансировку нагрузки и позволяет использовать полную пропускную способность (например, 4 Гбит / с из моего примера между двумя серверами в одной транзакции).

Я слышал много противоречивых вещей об этом, и я совершенно сбит с толку. Помоги мне, ребята!

Alex
источник
Неплохой вопрос, но у AFAIK нет способа увеличить пропускную способность отдельного потока данных с помощью балансировки нагрузки.
Пауска
Это не был ответ! Просто комментарий :-) подождите, пока более опытный парень придумает более подробный ответ.
pauska
Конечно, я буду :) Тем не менее, я немного скептически отношусь к тому, что это возможно, но некоторые продавцы говорят, что это так, и мой коллега (серверный парень) тоже сбит с толку :) Хочу исключить это
Alex
хаха, только что вспомнил: «Пожалуйста, не принимайте советы специалистов по продажам на уроках OSI несколько лет назад»
Alex

Ответы:

8

На уровне 2 вся балансировка нагрузки, в лучшем случае, выполняется с помощью XOR или хэша MAC-адреса источника и назначения, и, если вам повезет, он может даже считывать данные на уровне 3 и хэшировать эти данные.

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

Прежде чем я продолжу, балансировка для каждого пакета, как правило, плохо, потому что это может привести к неупорядоченной доставке пакетов, это может быть особенно ужасно с TCP-соединениями, но это, конечно, сводится к реализации и большинство современных стеков могут переносить это относительно хорошо.

Чтобы выполнить балансировку для каждого пакета, очевидно, одно требование состоит в том, чтобы исходные и конечные IP-адреса вообще не были подключены к устройствам, которые имеют несколько путей, поскольку они должны маршрутизироваться для обеспечения возможности балансировки. Избыточность может быть достигнута с помощью протокола маршрутизации, такого как BGP, OSPF, ISIS, RIP или, альтернативно, BFD или простого обнаружения состояния канала.

Наконец, существует, конечно, решение транспортного уровня - протоколы, такие как SCTP, поддерживают подключение к нескольким конечным точкам, и в TCP уже есть черновики, в которых будут добавлены опции для выполнения аналогичных действий. Или ... вы можете просто заставить ваше приложение открывать несколько сокетов.

Olipro
источник
Спасибо за ответы! Да, я знаю об этой балансировке нагрузки L3. И, в принципе, если вы хотите более одного концерта на втором уровне, пойти с 10 гиг? Особенно, если вы хотите сделать резервные копии между серверами @ уровня 2, которые подключены к одному коммутатору?
Алекс
В принципе, да - вы можете делать хакерские вещи на самом хосте, такие как создание искусственного моста, а затем переписывать целевой MAC каждого кадра, чтобы каждый выходил из другого интерфейса, но это действительно зависит от вашей операционной системы. , нетривиален и не масштабируем.
Олипро
У нас есть смесь RHEL и Win 08 R2
Alex
5

Во-первых, давайте будем реалистичны в отношении производительности вашей системы; Вы должны убедиться, что ваша система может последовательно распределять требуемую пропускную способность от диска до сетевых адаптеров (см. нижнюю часть ответа) ...

Если вы готовы использовать FTP для передачи файлов, вы можете использовать клиент, который поддерживает сегментацию файла с помощью RESTкоманды FTP для загрузки, и сервер, который поддерживает команду FTP COMBдля сегментированной загрузки. Используя FTP-клиенты, которые поддерживают сегментирование, вы можете открывать несколько сеансов FTP для каждой передачи файла и использовать преимущества хэширования LACP Layer4, поддерживаемого многими поставщиками коммутаторов ... независимо от того, используете ли вы соединения 1GE или 10GE, сегментированные передачи повышают вашу производительность через LACP.

CuteFTP для Windows поддерживает передачу REST, а Filezilla поддерживает команду COMB . Это только два из нескольких вариантов, которые вы можете использовать.


Системные ограничения

Я не знаю, какой у вас диск, но часто единственным ограничением системы является дисковый ввод-вывод ... здесь есть несколько интересных моментов ... с точки зрения контроллера ...

  • SATA (редакция 1) max xfer: 1,2 Гбит / с после 8b / 10b служебных данных
  • SATA (редакция 2) max xfer: 2,4 Гбит / с после 8b / 10b служебных данных
  • SATA (версия 3) max xfer: 4,8 Гбит / с после 8b / 10b служебных данных
  • 4G Fibre Channel max xfer: 3,56 Гбит / с

Другим возможным ограничением является скорость диска / шпинделя / руки ... если вы не используете SSD.

Наконец, вам нужны сетевые карты с достаточной емкостью для материнской платы ... проверьте, сколько линий на вашей сетевой карте PCIe. Я предполагаю, что вы находитесь в локальной сети, и что потеря / перегрузка пакетов не будет проблемой. Возможно, вы захотите включить jumbos, если обнаружите, что процессор является ограничивающим фактором для ваших переводов.

Майк Пеннингтон
источник
Я думаю, что мы используем FTP и SCP для передачи. Что касается производительности ввода-вывода, мы планируем перейти на iSCSI, и независимо от того, что я говорю, мы не можем позволить себе коммутатор высокой плотности на 10 гигабайт из-за ограниченного бюджета (который действительно необходим в этом случае), поэтому мы пытаемся импровизировать, как мы идем. Просто планирую.
Алекс
@ Алекс Я также работаю с ограниченным бюджетом и использую iSCSI. Коммутаторы Dell PowerConnect 8132 / 8164F стоят дешевле, чем каждый порт с SFP, а не с полным буфером портов. У нас был большой успех с ними.
pauska
Я посмотрю на них :)
Алекс
@ Алекс, я не предлагаю вам использовать коммутатор 10GE ... даже несколько 1GE, соединенных вместе, могут превышать емкость сервера ... Я обновил свой ответ, чтобы подчеркнуть, что я предлагаю вам использовать LACP
Майк Пеннингтон,