The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Раздел полезных советов: Объединение сетeвых интерфейсов в U..."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Объединение сетeвых интерфейсов в U..."  +/
Сообщение от auto_tips (ok) on 07-Апр-10, 23:41 
В статье рассказано, как объединить два физических сетевых интерфейса в один для увеличения пропускной способности или для повышения отказоустойчивости сети. В Linux это делается при помощи модуля bonding и утилиты ifenslave. В большинстве новых версий дистрибутивов модуль ядра bonding уже есть и готов к использованию, в некоторых вам придется собрать его вручную. Я настраивал данное решение на Ubuntu 8.04 server amd64, поэтому примеры установки ПО взяты оттуда.


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

    aptitude install ifenslave ethtool

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

Подробнее о режимах работы bonding можно почитать [[http://www.linuxfoundation.org/collaborate/workgroups/networ... здесь]].

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

    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.


URL: http://sudouser.com/join-netifs-with-bonding.html
Обсуждается: https://www.opennet.ru/tips/info/2344.shtml

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

1. "Объединение сетeвых интерфейсов в Ubuntu Linux при помощи 'b..."  +/
Сообщение от ffsdmad (ok) on 07-Апр-10, 23:41 
пригодится
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "Объединение сетeвых интерфейсов в Ubuntu Linux при помощи 'b..."  +/
Сообщение от VecH email(ok) on 08-Апр-10, 04:23 
Допустим у меня bond0
Если одна из линий отвалится где то на протяжении пути (то есть ни один из компьютеров/серверов не поймет что канал пропал)
Нормально ли пойдут пакеты? или половина будет потеряна
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "Объединение сетeвых интерфейсов в Ubuntu Linux при помощи 'b..."  +/
Сообщение от slepnoga (??) on 08-Апр-10, 07:29 
каких таких линий ? это девайс L2, т.е езернет - если кабель порвется/свитч сгорит, что ли ?
Тогда да, фсе фреймы пойдут по второй сетевой .

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

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "Объединение сетeвых интерфейсов в Ubuntu Linux при помощи 'b..."  +/
Сообщение от VecH email(ok) on 08-Апр-10, 07:39 
>каких таких линий ? это девайс L2, т.е езернет - если кабель
>порвется/свитч сгорит, что ли ?
>Тогда да, фсе фреймы пойдут по второй сетевой .
>
>Наверно стоит добавить, что для вменяемого юзежа данной фичи нужны вменяемые умные
> L2 свитчи - иначе почти пропадает смысл юзать данный девайс.
>

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

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

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

5. "Объединение сетeвых интерфейсов"  +/
Сообщение от Аноним (??) on 08-Апр-10, 09:47 
Чем это отличается от бриджа? Извините за такой вопрос)
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

6. "Объединение сетeвых интерфейсов"  +/
Сообщение от VecH email(ok) on 08-Апр-10, 09:49 
>Чем это отличается от бриджа? Извините за такой вопрос)

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

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

7. "Объединение сетeвых интерфейсов в Ubuntu Linux при помощи 'b..."  +/
Сообщение от dry (ok) on 08-Апр-10, 10:26 
Теоретически да. Практически - как повезет.
Давно использую бондинг и надо сказать реализация оного в линуксе стала более менее вменяемым только в последних ядрах. В 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

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

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

8. "Объединение сетeвых интерфейсов"  +/
Сообщение от dry (ok) on 08-Апр-10, 10:30 
>>Чем это отличается от бриджа? Извините за такой вопрос)
>
>Увеличивает пропускную способность задействовав 2 сетевые карты с обоих сторон

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

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

9. "Объединение сетeвых интерфейсов"  +/
Сообщение от VecH email(ok) on 08-Апр-10, 11:12 
>>>Чем это отличается от бриджа? Извините за такой вопрос)
>>
>>Увеличивает пропускную способность задействовав 2 сетевые карты с обоих сторон
>
>сильно зависит от режима. не вводите людей в заблуждение.

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

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

10. "Объединение сетeвых интерфейсов в Ubuntu Linux при помощи 'b..."  +/
Сообщение от Anon on 14-Апр-10, 12:08 
А причём тут bonding????
И да ответом на вопрос будет: "в зависимости от режима работы". В режиме A/S при обрыве на Active канале у вас ничего не пойдёт через Slave. Включайте голову и логику, bonding по сути работает на выявление обрыва на линии между ним и устройством коммутации (если host2host то до хоста). Все что творится далее не его дело.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

11. "Объединение сетeвых интерфейсов в Ubuntu Linux при помощи 'b..."  +/
Сообщение от Anon on 14-Апр-10, 12:09 
>каких таких линий ? это девайс L2, т.е езернет - если кабель
>порвется/свитч сгорит, что ли ?
>Тогда да, фсе фреймы пойдут по второй сетевой .
>
>Наверно стоит добавить, что для вменяемого юзежа данной фичи нужны вменяемые умные
> L2 свитчи - иначе почти пропадает смысл юзать данный девайс.
>

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

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

12. "Объединение сетeвых интерфейсов в Ubuntu Linux при помощи 'b..."  +/
Сообщение от Anon on 14-Апр-10, 12:11 
>Теоретически да. Практически - как повезет.
>Давно использую бондинг и надо сказать реализация оного в линуксе стала более
>менее вменяемым только в последних ядрах. В 2.6.18 (CentOS-5) это работает
>в режиме "не дышать". Во-первых, модуль bonding может произвольно трапнуть ядро,
>такое случается не часто, может 1-2 раза за полгода, но случается.
>Во-вторых как вы говорите "кабель порвется", пробовали: рвали кабели вырубали свичи.
>Вероятность восстановления как в том анекдоте про динозавра 50/50. Может нормально
>восстановиться, может после восстановления всю сетевую подсистему зафризить, может ядро трапнуть
>- как повезет.
>В свежих ядрах такой проблемы нет. Точную версию затрудняюсь сказать, но из практического опыта на ядрах > 2.6.25 я такого не наблюдал.

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

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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