The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Объединение сетeвых интерфейсов в Ubuntu Linux при помощи "bonding"
В статье рассказано, как объединить два физических сетевых интерфейса в один
для увеличения пропускной способности или для повышения отказоустойчивости
сети. В Linux это делается при помощи модуля bonding и утилиты ifenslave. В
большинстве новых версий дистрибутивов модуль ядра bonding уже есть и готов к
использованию, в некоторых вам придется собрать его вручную. Я настраивал
данное решение на Ubuntu 8.04 server amd64, поэтому примеры установки ПО взяты оттуда.


Установим нужное ПО:

    aptitude install ifenslave ethtool

Затем добавим модуль bonding в автозагрузку и пропишем опции для его запуска,
для этого в конец файла /etc/modules добавим текст из примера ниже, примеров
будет два: для создания одного интерфейса из двух физических и для создания
двух интерфейсов из четырех физических.

Подробнее о режимах работы bonding можно почитать здесь.

Пример для одного виртуального интерфейса из двух физических:

    alias bond0 bonding
    options bonding mode=0 miimon=100

Пример для создания двух интерфейсов из четырех физических:

    alias bond0 bonding
    alias bond1 bonding
    options bonding mode=0 miimon=100 max_bonds=2

Затем загрузим модуль bonding

    ## Один виртуальный интерфейс
    modprobe bonding mode=0 miimon=100
    ## Два виртуальных интерфейса
    modprobe bonding mode=0 miimon=100 max_bonds=2

Настроим параметры сетевых интерфейсов bonding`a, для этого отредактируем файл
настроек интерфейсов /etc/network/interfaces. В примере шаблоны для настройки
двух виртуальных интерфейсов.

    # The bond0 network interface
     auto bond0
     allow-hotplug bond0
     iface bond0 inet static
            address <ip-address>
            netmask <netmask>
            network <network-address>
            broadcast <broadcast-address>
            gateway <gateway-address>
            dns-nameservers <nameserver-one> <nameserver-two>
            dns-search <domain-name>
            up /sbin/ifenslave bond0 eth0
            up /sbin/ifenslave bond0 eth1

     # The bond1 network interface
     auto bond1
     allow-hotplug bond1
     iface bond1 inet static
            address <ip-address>
            netmask <netmask>
            network <network-address>
            broadcast <broadcast-address>
            gateway <gateway-address>
            dns-nameservers <nameserver-one> <nameserver-two>
            dns-search <domain-name>
            up /sbin/ifenslave bond1 eth2
            up /sbin/ifenslave bond1 eth3

Более подробно по опциям файла /etc/network/interfaces можно прочитать выполнив
команду man interfaces

После того как прописаны настройки интерфейсов нужно перезапустить сеть
командой /etc/init.d/networking restart и проверить, поднялись ли интерфейсы
bond0, и если настраивали два, то bond1.
 
06.04.2010 , Автор: Stepanoff , Источник: http://sudouser.com/join-netifs-wit...
Ключи: linux, kernel, ubuntu, bonding, link, ethernet
Раздел:    Корень / Администратору / Сетевая подсистема, маршрутизация / Ethernet, ARP, привязка MAC адресов.

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, ffsdmad (ok), 23:41, 07/04/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    пригодится
     
  • 1.2, VecH (ok), 04:23, 08/04/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Допустим у меня bond0
    Если одна из линий отвалится где то на протяжении пути (то есть ни один из компьютеров/серверов не поймет что канал пропал)
    Нормально ли пойдут пакеты? или половина будет потеряна
     
     
  • 2.3, slepnoga (??), 07:29, 08/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    каких таких линий ? это девайс L2, т.е езернет - если кабель порвется/свитч сгорит, что ли ?
    Тогда да, фсе фреймы пойдут по второй сетевой .

    Наверно стоит добавить, что для вменяемого юзежа данной фичи нужны вменяемые умные  L2 свитчи - иначе почти пропадает смысл юзать данный девайс.

     
     
  • 3.4, VecH (ok), 07:39, 08/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >каких таких линий ? это девайс L2, т.е езернет - если кабель
    >порвется/свитч сгорит, что ли ?
    >Тогда да, фсе фреймы пойдут по второй сетевой .
    >
    >Наверно стоит добавить, что для вменяемого юзежа данной фичи нужны вменяемые умные
    > L2 свитчи - иначе почти пропадает смысл юзать данный девайс.
    >

    SRV1(bond0)
    |  |
    H1 H2
    |  |
    H3 H4
    |  |
    SRV2 (bond0)

    Если между одними из хабов (H1-H3 или H2-H4) кабель порвется
    фреймы все пойдут по оставшейся линии без потери?
    и после восстановления обратно восстановится или придется что либо делать?

     
     
  • 4.7, dry (ok), 10:26, 08/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Теоретически да. Практически - как повезет.
    Давно использую бондинг и надо сказать реализация оного в линуксе стала более менее вменяемым только в последних ядрах. В 2.6.18 (CentOS-5) это работает в режиме "не дышать". Во-первых, модуль bonding может произвольно трапнуть ядро, такое случается не часто, может 1-2 раза за полгода, но случается. Во-вторых как вы говорите "кабель порвется", пробовали: рвали кабели вырубали свичи. Вероятность восстановления как в том анекдоте про динозавра 50/50. Может нормально восстановиться, может после восстановления всю сетевую подсистему зафризить, может ядро трапнуть - как повезет.
    В свежих ядрах такой проблемы нет. Точную версию затрудняюсь сказать, но из практического опыта на ядрах > 2.6.25 я такого не наблюдал.

    В ubuntu server 9.10, про которую автор тут так яростно расписывал есть другая проблема.
    Автор изначально грузил bonding по колхозному, через modprobe, хотя есть стандартный механизм - в описании интерфейса
           slaves eth0 eth1
           bond-mode 4
           bond-miimon 100
    но фишка в том, что при таком подходе очень часто получается так, что бондинг после поднятия не работает. экспериментально было выяснено, что нужна пауза 1-3 сек между тем как будет загружен bonding и тем как отработает ifenslave.
    лично я дублирую таким образом
    # cat /etc/modprobe.d/bonding.conf
    alias bond0 bonding
    options bonding mode=4 miimon=100

    но это уже проблемы конкретно убунты.

     
     
  • 5.12, Anon (?), 12:11, 14/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >Теоретически да. Практически - как повезет.
    >Давно использую бондинг и надо сказать реализация оного в линуксе стала более
    >менее вменяемым только в последних ядрах. В 2.6.18 (CentOS-5) это работает
    >в режиме "не дышать". Во-первых, модуль bonding может произвольно трапнуть ядро,
    >такое случается не часто, может 1-2 раза за полгода, но случается.
    >Во-вторых как вы говорите "кабель порвется", пробовали: рвали кабели вырубали свичи.
    >Вероятность восстановления как в том анекдоте про динозавра 50/50. Может нормально
    >восстановиться, может после восстановления всю сетевую подсистему зафризить, может ядро трапнуть
    >- как повезет.
    >В свежих ядрах такой проблемы нет. Точную версию затрудняюсь сказать, но из практического опыта на ядрах > 2.6.25 я такого не наблюдал.

    Все нормально работает. Bonding - это прослойка, а поэтому нужны нормальные карточки и нормальные драйверы для сетевушек. Intel, Broadcom - все работает и на 2.4 даже.

     
  • 4.10, Anon (?), 12:08, 14/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    А причём тут bonding????
    И да ответом на вопрос будет: "в зависимости от режима работы". В режиме A/S при обрыве на Active канале у вас ничего не пойдёт через Slave. Включайте голову и логику, bonding по сути работает на выявление обрыва на линии между ним и устройством коммутации (если host2host то до хоста). Все что творится далее не его дело.
     
  • 3.11, Anon (?), 12:09, 14/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >каких таких линий ? это девайс L2, т.е езернет - если кабель
    >порвется/свитч сгорит, что ли ?
    >Тогда да, фсе фреймы пойдут по второй сетевой .
    >
    >Наверно стоит добавить, что для вменяемого юзежа данной фичи нужны вменяемые умные
    > L2 свитчи - иначе почти пропадает смысл юзать данный девайс.
    >

    Зачем??? Есть режимы TLB, ALB. Им не нужны умные свитчи... или вы что имеете в виду?

     

  • 1.5, Аноним (-), 09:47, 08/04/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Чем это отличается от бриджа? Извините за такой вопрос)
     
     
  • 2.6, VecH (ok), 09:49, 08/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >Чем это отличается от бриджа? Извините за такой вопрос)

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

     
     
  • 3.8, dry (ok), 10:30, 08/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >>Чем это отличается от бриджа? Извините за такой вопрос)
    >
    >Увеличивает пропускную способность задействовав 2 сетевые карты с обоих сторон

    сильно зависит от режима. не вводите людей в заблуждение.

     
     
  • 4.9, VecH (ok), 11:12, 08/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >>>Чем это отличается от бриджа? Извините за такой вопрос)
    >>
    >>Увеличивает пропускную способность задействовав 2 сетевые карты с обоих сторон
    >
    >сильно зависит от режима. не вводите людей в заблуждение.

    Прошу прощения, только сейчас читаю и на днях собираюсь попробовать

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру