|
|
3.10, nanodaemon (ok), 04:07, 19/08/2009 [^] [^^] [^^^] [ответить]
| +/– |
по каким же причинам рекомендуют ? pf в *BSD умел балансировать задолго до того как прикрутили мультипл роут тейблс во фрибсд. да и при помощи ipfw можно сделать по-человечески, я думаю, не прибегая ко мультипл роут тейблс. предназначение мультипл роут тейблс иное чем балансинг каналов.
и да, не надо забывать, что мало одной балансировки, нужно чтобы при падении одного из линков все пакеты заворачивались на соседний канал. впрочем в отстутствии бгп это решаемо только sh скриптами пингующими яндыкс раз в минуту по очереди через каждый канал или как-то так. :(
| |
|
2.9, iZEN (ok), 00:14, 19/08/2009 [^] [^^] [^^^] [ответить]
| +/– |
Насчёт балансировки трафика между двумя каналами есть статья в журнале "Системный администратор" №2(51)'2007, но там в основном про IPFW. Однако автор всё же обмолвился и про PF.
Алгоритм балансировки трафика round-robin между двумя каналами на PF:
pass in on ed0 route-to { (rl0 10.0.1.1), (rl1 10.1.1.1) } round-robin from 192.168.0.0/24 to any keep state
здесь: ed0 — внутренний интерфейс, смотрящий на клиентов; rl0 и rl1 — внешние интерфейсы, смотрящие на провайдеров; 10.0.1.1 — адрес шлюза провайдера А; 10.1.1.1 — адрес шлюза провайдера Б; 192.168.0.0/24 — локальная сеть.
Этим правилом входящий трафик на внутреннем интерфейсе (т.е. исходящий для пользователей) будет распределяться между интерфейсами rl0 и rl1 с соответствующими шлюзами по алгоритму round-robin (то есть внешний интерфейс будет меняться циклически — первое соединение будет использовать rl0, второе — rl1, третье — снова rl0 и так далее). Опция keep state сохраняет состояние, благодаря чему все пакеты в рамках одного соединения будут использовать один и тот же шлюз. В итоге нагрузка будет распределяться между двумя каналами — нельзя сказать, что трафик поделится абсолютно поровну, но при рассмотрении за большой период времени можно считать, что балансировка будет приближаться к этому.
Для решения проблемы привязки соединений клиента к определённому IP-адресу, которое требуется для некоторых серверов (а в данном случае каждое новое соединение от одного и того же клиента к определённому серверу будет проходить с большой вероятностью через разные маршруты/интерфейсы), нужно использовать опцию sticky-address в правиле nat или route-to.
Чтобы распределять трафик между интерфейсами в определённой пропорции в правиле PF нужно использовать опцию probability.
Обсуждение: http://forum.lissyara.su/viewtopic.php?f=8&t=17906&p=166055
| |
|
1.4, shutdown now (?), 14:52, 18/08/2009 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
а почему два раза "prob 0.5", по идее, должно быть один раз, а то 1/4 трафика будет 40-ым правилом обрабатываться.
| |
|
2.6, pehlle (?), 15:23, 18/08/2009 [^] [^^] [^^^] [ответить]
| +/– |
вы правильно говорите.
правильнее будет так:
$cmd add 20 prob 0.5 setfib 0 tcp from 192.168.0.0/16 to not 192.168.0.0/16 setup keep-state
$cmd add 30 setfib 1 tcp from 192.168.0.0/16 to not 192.168.0.0/16 setup keep-state
| |
|
1.5, terminus (ok), 15:05, 18/08/2009 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Проверяли, это нормально работает? Просто мне кажется что при таком конфиге TCP пакеты с вероятностью 1/2 будут прыгать между каналами, даже в случае когда обмен происходит в рамках одной сесии (IP:TCP <-> IP:TCP). Если потом пропускать еще и через нат, то в итоге IP_назначения будет получать TCP пакеты с двух IP.
ЕМНИП то дополнительные параметры такие как prob будут срабатывать даже при проходе через check-stale. У nuclight подробно было написано про это:
http://nuclight.livejournal.com/124348.html
| |
1.7, pehlle (?), 16:26, 18/08/2009 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
сорри :(, оказывается такое не работает. заметку можно удалить или наоборот дополнить, может быть у кого нить что нибудь с данным направлением че нить получиться. Меня сбило с понтолыки, что пакетики бегали на обоих каналах, оказывается, при проверке когда в правило ставиш флаг setup, то при keep-state, оно должно как бы закэшироваться, но не кэшируется.
| |
|
2.12, XoRe (ok), 16:20, 19/08/2009 [^] [^^] [^^^] [ответить]
| +/– |
>сорри :(, оказывается такое не работает. заметку можно удалить или наоборот дополнить,
>может быть у кого нить что нибудь с данным направлением че
>нить получиться. Меня сбило с понтолыки, что пакетики бегали на обоих
>каналах, оказывается, при проверке когда в правило ставиш флаг setup, то
>при keep-state, оно должно как бы закэшироваться, но не кэшируется.
Да ладно, рациональное зерно все равно есть)
Могу порекомендовать тот вариант, который я описал ниже.
| |
|
1.11, XoRe (ok), 16:19, 19/08/2009 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Для раскидывания пакетов по двум каналам не обязательны множественные таблицы маршрутизации.
Достаточно двух fwd в ipfw и двух натов.
После некоторго исследования этой темы могу сказать свое имхо.
Если пакеты одного клиента будут лететь через двух разных провайдеров (пусть даже с сохранением сессии, т.е. до одного ip адреса - через один канал), все равно возникнут проблемы с порталами типа mail.ru, vkontakte и т.д.
Там может слетать авторизация, если запросы клиента будут приходить то с одного ip адреса, то с другого.
Помню, mail.ru ругалась, когда я примерно через такую систему на неё заходил.
То могут быть проблемы с любым более менее серьёзным интернет проектом, который имеет более одного ip адреса.
В конце концов, самый стабильный вариант - распределение юзеров по каналам.
Их просто можно сделать динамическим.
То есть написать скриптик, который анализирует загруженность каналов и пущает нового юзера через наименее загруженный канал.
Ну и запоминает, какой юзер через какой канал ходит.
И удаляет юзеров, которые не проявляли сетевой активности какое-то время (и которых не осталось открытых сессий).
Ну и плюс там пингование шлюзов и т.д.
Полной балансировки нагрузки, конечно, не получится.
Но я думаю, что к этому будет стремиться.
| |
|
|
3.15, XoRe (ok), 13:05, 21/08/2009 [^] [^^] [^^^] [ответить]
| +/– |
>PF&ALTQ
А можно поподробнее?
Если честно, не понятно, о чем это вы)
Вы поддерживаете мою мысль и говорите, чем это можно сделать?
Или хотите сказать, что с помощью PF&ALTQ можно сделать балансировку без проблем с mail.ru?
| |
|
|
5.18, XoRe (ok), 13:05, 22/08/2009 [^] [^^] [^^^] [ответить] | +/– | gt оверквотинг удален Ход ваших мыслей мне понятен Во всяком случае, я на это... большой текст свёрнут, показать | |
|
|
|
|
1.14, Alive (??), 13:58, 20/08/2009 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Согласен с товаришем XoRe. Без полноценного multipath routing правильную балансировку не сделаешь.
| |
|
2.16, XoRe (ok), 13:05, 21/08/2009 [^] [^^] [^^^] [ответить]
| +/– |
>Согласен с товаришем XoRe. Без полноценного multipath routing правильную балансировку не сделаешь.
>
Я бы сказал, без своих IP адресов)
| |
|
1.20, ro (?), 20:50, 25/08/2009 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
а можно сделать ,как в линуксе,чтобы в зависимости от нагрузки каналов распределял?
| |
|
2.21, XoRe (ok), 21:48, 31/08/2009 [^] [^^] [^^^] [ответить]
| +/– |
>а можно сделать ,как в линуксе,чтобы в зависимости от нагрузки каналов распределял?
>
А можно поподробнее про "как в линуксе"? )
| |
|
3.22, Merridius (?), 23:54, 19/12/2010 [^] [^^] [^^^] [ответить]
| +/– |
>>а можно сделать ,как в линуксе,чтобы в зависимости от нагрузки каналов распределял?
А можно купить циску в которой есть и multipath routing и ip sla и не парить себе мозг.
| |
|
|
|