The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Балансировка TCP-соединений во FreeBSD"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"Балансировка TCP-соединений во FreeBSD"  +/
Сообщение от Luxor email(??) on 30-Июл-09, 18:57 
Здравствуйте!
Подскажите программку для балансировки TCP-сессий между двумя серверами. Акцентирую внимание что мне надо чтобы не пакеты раскидывались, а именно TCP-сессии, т.е. первый пользователь подключаясь по ip=10.0.0.1 попадает на один сервер (и в дальнейшем работает с ним) второй пользователь подключаясь по ip=10.0.0.1 попадает на второй сервер.
Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

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


1. "Балансировка TCP-соединений во FreeBSD"  +/
Сообщение от BlackHawk (ok) on 30-Июл-09, 19:55 
>Здравствуйте!
>Подскажите программку для балансировки TCP-сессий между двумя серверами. Акцентирую внимание что мне
>надо чтобы не пакеты раскидывались, а именно TCP-сессии, т.е. первый пользователь
>подключаясь по ip=10.0.0.1 попадает на один сервер (и в дальнейшем работает
>с ним) второй пользователь подключаясь по ip=10.0.0.1 попадает на второй сервер.
>

squid/nginx/apache на выбор

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

2. "Балансировка TCP-соединений во FreeBSD"  +/
Сообщение от Luxor email(??) on 30-Июл-09, 23:49 
>>Здравствуйте!
>>Подскажите программку для балансировки TCP-сессий между двумя серверами. Акцентирую внимание что мне
>>надо чтобы не пакеты раскидывались, а именно TCP-сессии, т.е. первый пользователь
>>подключаясь по ip=10.0.0.1 попадает на один сервер (и в дальнейшем работает
>>с ним) второй пользователь подключаясь по ip=10.0.0.1 попадает на второй сервер.
>>
>
>squid/nginx/apache на выбор

не подходит, весь трафик пойдет через один сервер который будет "узким горлышком" данного решения, хотелось бы чтобы группа серверов сама "делила" между собой пользователей. С помощью протокола CARP такое можно, во FreeBSD поддержка на уровне ядра, но балансировка по source IP есть только в свежих версиях которые с OpenBSD еще не портированы на фряху... OpenBSD ставить не хочется потому что есть серьезные опасения что она плохо работает с многопроцессорными системами... т.е. поддержка SDM "кое-какая" там есть но весь потенциал от многопроцессорных систем она не выжимает (что в приниципе не странно ввиду того что разработчики позиционируют ее ОС с уклоном на безопасность). Развейте мои сомнения насчет OpenBSD если я не прав :)
для FreeBSD есть программулина реализующая протокол VRRP (аналог CARP), может он сможет ?

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

3. "Балансировка TCP-соединений во FreeBSD"  –3 +/
Сообщение от angra (ok) on 31-Июл-09, 00:35 
Зачем задавать вопрос про tcp и сессии, а затем бравировать знанием умных слов, относящихся к голому IP уровню? Создается впечатление что топик создан, чтобы потроллить и/или козырнуть своими знаниями. Найди другой способ самовыражения, а на вопрос тебе уже ответили.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Балансировка TCP-соединений во FreeBSD"  +/
Сообщение от Luxor email(??) on 31-Июл-09, 08:54 
>Зачем задавать вопрос про tcp и сессии, а затем бравировать знанием умных
>слов, относящихся к голому IP уровню? Создается впечатление что топик создан,
>чтобы потроллить и/или козырнуть своими знаниями. Найди другой способ самовыражения, а
>на вопрос тебе уже ответили.

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

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

4. "Балансировка TCP-соединений во FreeBSD"  +/
Сообщение от BlackHawk (ok) on 31-Июл-09, 04:11 
>[оверквотинг удален]
>версиях которые с OpenBSD еще не портированы на фряху... OpenBSD ставить
>не хочется потому что есть серьезные опасения что она плохо работает
>с многопроцессорными системами... т.е. поддержка SDM "кое-какая" там есть но весь
>потенциал от многопроцессорных систем она не выжимает (что в приниципе не
>странно ввиду того что разработчики позиционируют ее ОС с уклоном на
>безопасность). Развейте мои сомнения насчет OpenBSD если я не прав :)
>
>для FreeBSD есть программулина реализующая протокол VRRP (аналог CARP), может он сможет
>?
>

а что мешает к тому, что я предложил добавить CARP?

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

6. "Балансировка TCP-соединений во FreeBSD"  +/
Сообщение от Luxor email(??) on 31-Июл-09, 08:58 
>[оверквотинг удален]
>>с многопроцессорными системами... т.е. поддержка SDM "кое-какая" там есть но весь
>>потенциал от многопроцессорных систем она не выжимает (что в приниципе не
>>странно ввиду того что разработчики позиционируют ее ОС с уклоном на
>>безопасность). Развейте мои сомнения насчет OpenBSD если я не прав :)
>>
>>для FreeBSD есть программулина реализующая протокол VRRP (аналог CARP), может он сможет
>>?
>>
>
>а что мешает к тому, что я предложил добавить CARP?

я же выше описал причину почему CARP не могу использовать, если кратко - на FreeBSD на данный момент не портирована последняя версия CARP из OpenBSD с поддержкой балансировки трафика по IP, а OpenBSD ставить побаиваюсь потому что слабо реализованна поддержка многопроцессорных систем. Может быть на FreeBSD есть аналог CARP который бы помог мне решить мою задачу ?

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

7. "Балансировка TCP-соединений во FreeBSD"  +/
Сообщение от BlackHawk (ok) on 31-Июл-09, 11:00 
>[оверквотинг удален]
>>>
>>
>>а что мешает к тому, что я предложил добавить CARP?
>
>я же выше описал причину почему CARP не могу использовать, если кратко
>- на FreeBSD на данный момент не портирована последняя версия CARP
>из OpenBSD с поддержкой балансировки трафика по IP, а OpenBSD ставить
>побаиваюсь потому что слабо реализованна поддержка многопроцессорных систем. Может быть на
>FreeBSD есть аналог CARP который бы помог мне решить мою задачу
>?

а причем тут балансировка с помощью CARP? я имел ввиду использование CARP для устранения "бутылочного горлышка" - не более. балансировкой предлагал заниматься squid/nginx/apache
тем более вы спрашивали про уровень TCP сессий...


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

8. "Балансировка TCP-соединений во FreeBSD"  +/
Сообщение от Smile (??) on 31-Июл-09, 11:17 
на используемом ДНС завести 2 ип на одно имя, открывать соединение по имени.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Балансировка TCP-соединений во FreeBSD"  +/
Сообщение от BlackHawk (ok) on 31-Июл-09, 11:34 
>на используемом ДНС завести 2 ип на одно имя, открывать соединение по
>имени.

при падении одной из машин будет 50% потерь соединений... не канает такой вариант в большинстве случаев :)

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

18. "Балансировка TCP-соединений во FreeBSD"  +/
Сообщение от Денис Юсупов email on 10-Сен-09, 17:39 
>при падении одной из машин будет 50% потерь соединений... не канает такой
>вариант в большинстве случаев :)

Если выставить TTL 0, то не будет, только небольшое замедление работы почуствуется при открытии новых сессий.

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

21. "Балансировка TCP-соединений во FreeBSD"  +/
Сообщение от Alexey Bobok on 24-Окт-09, 22:24 
>>на используемом ДНС завести 2 ип на одно имя, открывать соединение по
>>имени.
>
>при падении одной из машин будет 50% потерь соединений... не канает такой
>вариант в большинстве случаев :)

Ну если включить фантазию и сделать следующее:
1) в ДНС 2 адреса (на самом деле их может быть больше)
2) оба адреса повешены на каждом сервере:
serv1: ip1@carp0 (master); ip2@carp1 (slave)
serv2: ip1@carp0 (slave); ip2@carp1 (master)
в таком варианте какой из серверов бы не упал, IP будет отвечать на втором сервере.
Ето работает на 2 серверах по ~800 одновременных подключений.
а дальше nginx, в котором прописан балансер с обоих виртуальных адресов на опять таки оба виртуальных. система полностью живуча.
порблема была только когда поломалось железо, но система кое как работала, carp отвечал и в итоге половина запросов таки не работала. но ето уже другая тема для разговора.


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

10. "Балансировка TCP-соединений во FreeBSD"  +/
Сообщение от Luxor email(??) on 31-Июл-09, 11:36 
>[оверквотинг удален]
>>- на FreeBSD на данный момент не портирована последняя версия CARP
>>из OpenBSD с поддержкой балансировки трафика по IP, а OpenBSD ставить
>>побаиваюсь потому что слабо реализованна поддержка многопроцессорных систем. Может быть на
>>FreeBSD есть аналог CARP который бы помог мне решить мою задачу
>>?
>
>а причем тут балансировка с помощью CARP? я имел ввиду использование CARP
>для устранения "бутылочного горлышка" - не более. балансировкой предлагал заниматься squid/nginx/apache
>
>тем более вы спрашивали про уровень TCP сессий...

в том то и дело что CARP-ом не устранить это узкое место! на данный момент во FreeBSD портирована версия CARP 2006 года, эта версия раскидывает трафик с помощью протокола arp (разных хостам отдает разные MAC-адреса одного IP) соответсвенно работать такая схема будет в одном коммутируемом пространстве, если запросы клиентов пойдут через маршрутизатор то весь трафик пойдет на одни сервер (маршрутизатор раз прорезолвит IP и всё, ВЕСЬ трафик будет коммутироваться на этот MAC-адрес).

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

11. "Балансировка TCP-соединений во FreeBSD"  +/
Сообщение от BlackHawk (ok) on 31-Июл-09, 11:47 
>[оверквотинг удален]
>>
>>тем более вы спрашивали про уровень TCP сессий...
>
>в том то и дело что CARP-ом не устранить это узкое место!
>на данный момент во FreeBSD портирована версия CARP 2006 года, эта
>версия раскидывает трафик с помощью протокола arp (разных хостам отдает разные
>MAC-адреса одного IP) соответсвенно работать такая схема будет в одном коммутируемом
>пространстве, если запросы клиентов пойдут через маршрутизатор то весь трафик пойдет
>на одни сервер (маршрутизатор раз прорезолвит IP и всё, ВЕСЬ трафик
>будет коммутироваться на этот MAC-адрес).

man carp on FreeBSd 7.2:
     For firewalls and routers with multiple interfaces, it is desirable to
     failover all of the carp interfaces together, when one of the physical
     interfaces goes down.  This is achieved by the preempt option.  Enable it
     on both host A and B:

           sysctl net.inet.carp.preempt=1

     Assume that host A is the preferred master and 192.168.1.x/24 is config-
     ured on one physical interface and 192.168.2.y/24 on another.  This is
     the setup for host A:

           ifconfig carp0 create
           ifconfig carp0 vhid 1 pass mekmitasdigoat 192.168.1.1/24
           ifconfig carp1 create
           ifconfig carp1 vhid 2 pass mekmitasdigoat 192.168.2.1/24

     The setup for host B is identical, but it has a higher advskew:

           ifconfig carp0 create
           ifconfig carp0 vhid 1 advskew 100 pass mekmitasdigoat 192.168.1.1/24
           ifconfig carp1 create
           ifconfig carp1 vhid 2 advskew 100 pass mekmitasdigoat 192.168.2.1/24

     Because of the preempt option, when one of the physical interfaces of
     host A fails, advskew is adjusted to 240 on all its carp interfaces.
     This will cause host B to preempt on both interfaces instead of just the
     failed one.

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

12. "Балансировка TCP-соединений во FreeBSD"  +/
Сообщение от Luxor email(??) on 31-Июл-09, 13:14 
>[оверквотинг удален]
>           ifconfig
>carp1 vhid 2 advskew 100 pass mekmitasdigoat 192.168.2.1/24
>
>     Because of the preempt option, when one
>of the physical interfaces of
>     host A fails, advskew is adjusted to
>240 on all its carp interfaces.
>     This will cause host B to preempt
>on both interfaces instead of just the
>     failed one.

Зачем вы привели кусок мана описывающий процесс резервирования с помощью протокола CARP ? Я не решаю вопрос резервирования, я решаю вопрос балансировки.
Сразу после куска мана что вы вставили идет кусок как CARP раскидывает запросы с помощью ARP Balancing, такая схема работать не будет за маршрутизатором по понятным причинам

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

13. "Балансировка TCP-соединений во FreeBSD"  +/
Сообщение от BlackHawk (ok) on 31-Июл-09, 15:13 
>[оверквотинг удален]
>>240 on all its carp interfaces.
>>     This will cause host B to preempt
>>on both interfaces instead of just the
>>     failed one.
>
>Зачем вы привели кусок мана описывающий процесс резервирования с помощью протокола CARP
>? Я не решаю вопрос резервирования, я решаю вопрос балансировки.
>Сразу после куска мана что вы вставили идет кусок как CARP раскидывает
>запросы с помощью ARP Balancing, такая схема работать не будет за
>маршрутизатором по понятным причинам

почему не будет? как раз мы резервируем сервер, который будет заниматся балансировкой, чтоб убрать "бутылочное горлышко"... CARP же не будет заниматся балансировкой, а только резервированием

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

14. "Балансировка TCP-соединений во FreeBSD"  +/
Сообщение от Luxor email(ok) on 31-Июл-09, 16:19 
>[оверквотинг удален]
>>
>>Зачем вы привели кусок мана описывающий процесс резервирования с помощью протокола CARP
>>? Я не решаю вопрос резервирования, я решаю вопрос балансировки.
>>Сразу после куска мана что вы вставили идет кусок как CARP раскидывает
>>запросы с помощью ARP Balancing, такая схема работать не будет за
>>маршрутизатором по понятным причинам
>
>почему не будет? как раз мы резервируем сервер, который будет заниматся балансировкой,
>чтоб убрать "бутылочное горлышко"... CARP же не будет заниматся балансировкой, а
>только резервированием

"бутылочное горлышко" меня смущает не в свете отсутствия резервирования, а в классическом значении данного понятия - самое медленный элемент системы определяющий пропускную способность всей системы. Конкретно к моему случаю - я уже раскидывал сессии с помощью ipfw который поддерживается фряхой на уровне ядра, такое решение намного производительней чем то что вы предлагает, меня сам по себе такой подход - с сервером который будет молотить ВЕСЬ трафик не устраивает, меня привлекает решения сетевого кластера в котором бы раскидывались подключения пользователей между серверами входящими в кластере БЕЗ промежуточного звена... тогда пропускная способность такого узла будет бесконечной при сравнительно маленьких затратах (покупка недорогих серверов средней, если так можно выразиться, мощности). Моя предметная область это VPN-подключения пользователей по протоколу pptp, именно vpn-подключения пользователей между серверами я и собираюсь раскидывать... не знаю может есть специальные программы конкретно под эту задачу...

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

19. "Балансировка TCP-соединений во FreeBSD"  +/
Сообщение от Денис Юсупов email on 10-Сен-09, 17:40 
> Моя предметная область это
>VPN-подключения пользователей по протоколу pptp, именно vpn-подключения пользователей между серверами я
>и собираюсь раскидывать... не знаю может есть специальные программы конкретно под
>эту задачу...

Вот конкретно VPN-подключения мы как раз и делали через DNS round-robin с выставленным TTL 0. Семь серверов было, работало просто на ура.


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

15. "Балансировка TCP-соединений во FreeBSD"  +/
Сообщение от artemrts email(??) on 02-Авг-09, 01:53 
>Здравствуйте!
>Подскажите программку для балансировки TCP-сессий между двумя серверами. Акцентирую внимание что мне
>надо чтобы не пакеты раскидывались, а именно TCP-сессии, т.е. первый пользователь
>подключаясь по ip=10.0.0.1 попадает на один сервер (и в дальнейшем работает
>с ним) второй пользователь подключаясь по ip=10.0.0.1 попадает на второй сервер.
>

Суть понятна. А если взять такой вариант. Поставить пусть недорогой но шустрый комп, скжем 4 ядра. Потом установит 2 гигабитки, смотрящие в локалку, а 2 - в мир и использовать lagg для балансировки.
  Сам так не пробовал, просто как вариант.

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

16. "Балансировка TCP-соединений во FreeBSD"  +/
Сообщение от Luxor email(ok) on 02-Авг-09, 21:49 
>[оверквотинг удален]
>>Подскажите программку для балансировки TCP-сессий между двумя серверами. Акцентирую внимание что мне
>>надо чтобы не пакеты раскидывались, а именно TCP-сессии, т.е. первый пользователь
>>подключаясь по ip=10.0.0.1 попадает на один сервер (и в дальнейшем работает
>>с ним) второй пользователь подключаясь по ip=10.0.0.1 попадает на второй сервер.
>>
>
>Суть понятна. А если взять такой вариант. Поставить пусть недорогой но шустрый
>комп, скжем 4 ядра. Потом установит 2 гигабитки, смотрящие в локалку,
>а 2 - в мир и использовать lagg для балансировки.
>  Сам так не пробовал, просто как вариант.

вы предлагаете мне сделать шаг назад. Я пытаюсь уйти от варианта с одним сервером, а вы предлагаете к нему вернуться. На данный момент сервер HP DL380G5 два двухядерных Xeon 3.0GHz не справляются, следующий этап сервер с четырьмя провессорами это стоимость под 350к, и со старым сервером надо что-то делать ). Короче вопрос остается отрытымым.
На данный момент я собираю примерно такой же по железу сервер на OpenBSD, если производительность будет вменяемая то решу вопрос CARP-ом, но конечно хотелось бы все это на фряхе реализовать...

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

17. "Балансировка TCP-соединений во FreeBSD"  +/
Сообщение от artemrts email(ok) on 03-Авг-09, 10:12 
>[оверквотинг удален]
>>Суть понятна. А если взять такой вариант. Поставить пусть недорогой но шустрый
>>комп, скжем 4 ядра. Потом установит 2 гигабитки, смотрящие в локалку,
>>а 2 - в мир и использовать lagg для балансировки.
>>  Сам так не пробовал, просто как вариант.
>
>вы предлагаете мне сделать шаг назад. Я пытаюсь уйти от варианта с
>одним сервером, а вы предлагаете к нему вернуться. На данный момент
>сервер HP DL380G5 два двухядерных Xeon 3.0GHz не справляются, следующий этап
>сервер с четырьмя провессорами это стоимость под 350к, и со старым
>сервером надо что-то делать ). Короче вопрос остается отрытымым.

Если сможете решить этот вопрос на FreeBSD, отпишитесь на форуме, как это сделали, самому интересно.

P.S.: а вообще странно, что такой сервак не справляется, может тюнингу немного, поллинг...

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

20. "Балансировка TCP-соединений во FreeBSD"  +/
Сообщение от Денис Юсупов email on 10-Сен-09, 17:42 
>>[оверквотинг удален]
>вы предлагаете мне сделать шаг назад. Я пытаюсь уйти от варианта с
>одним сервером, а вы предлагаете к нему вернуться. На данный момент
>сервер HP DL380G5 два двухядерных Xeon 3.0GHz не справляются, следующий этап
>сервер с четырьмя провессорами это стоимость под 350к, и со старым
>сервером надо что-то делать ).

Чего-то вы конкретно такое загнули, расскажите про конфиг. Надеюсь, на mpd4/5 вы уже перешли, ng_nat и ng_car пользуете?

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

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

Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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