avva: (Default)
[personal profile] avva
Под лж-катом — красивая картинка внутренней сетки ЖЖ (как устроены все сервера и как они между собой общаются). Если что-то непонятно или интересно, можно спрашивать.



Date: 2003-11-11 07:30 am (UTC)
From: [identity profile] avva.livejournal.com
BigIP - firewall, load balancer (его главная функция).

2. Практически везде Debian Linux, stable. Исключение - NetApp и BigIP, на которых бежит их специальный софт (что не NetApp, я не знаю, а на BigIP старая сильно модифицированная BSDi, если не ошибаюсь).

3. apache+mod_ssl. Вообще этот сервер простаивает, он практически только для платежей и используется пока что. В будущем, наверное, будет secure login итп.

4. proxy web - apache + mod_proxy + mod_rewrite . Эти машины ничего не кэшируют, они работают как reverse proxy: получают запрос, выбирают один из свободных веб-серверов (раньше этот выбор шёл через load balancing BigIP, но недавно я написал rewriter balancer, демон, который бежит на них и получает нотификации от апачей на веб-серверах насчёт их занятости. apache на proxy-web машине обращается (через mod_rewrite) к rewrite balancer'у и тот переписывает ему URL на один свободных веб-серверов), пересылают запрос ему, получают полностью ответ, и после этого отсылают юзеру. Смысл их существования в сокращении времени работы тяжёлых mod_perl-овских веб-серверов: они принимают на себя общение с end-юзером на его относительно медленной скорости. Этих машин сейчас три или четыре штуки, не помню точно.

5. apache+mod_perl. Всё дерево сайта (htdocs, перловские библиотеки итп.) они видят через NFS с одного центрального места. Статики на сайте очень мало, в основном всякие мелкие иконки (юзерпики не считаем, они особь статья). Вся эта статика есть в рабочем дереве, так что веб-серверы её видят и могут выдавать, но на практике статика напрявляется на отдельный сервер (здесь не указанный ради экономии места) на уровне BigIP.

Date: 2003-11-11 07:46 am (UTC)
From: [identity profile] godegisel.livejournal.com
насчет 4 - отчего не mod_accel? imho как reverse proxy просто идеален.

а rewrite/load balancer - просто тупо по кругу выдает очередной сервер или используется что-то вроде mod_backhand?

Date: 2003-11-11 08:04 am (UTC)
From: [identity profile] avva.livejournal.com
Не знаю, а чем он так лучше mod_proxy? Я с ним не знаком, но вот сейчас посмотрел немного - все его улучшения типа busy locks или ограничения числа подключений нам не нужны. У нас главное именно load balancing бэкенда, а он в этом смысле ничего нового не даёт.

Вот умеет ли он делать transparent redirect? Скажем, если бэкенд возвращает 301 (или какой-то кастомный код, неважно), он не пересылает его юзеру, а сам внутри идёт по новому адресу, берёт оттуда то, что надо, и посылает юзеру как ответ на первоначальный запрос? Вот такая штука нам нужна, а mod_proxy её не поддерживает; если не найдём что-то готовое, я буду в mod_proxy это добавлять.

rewrite balancer - использует что-то вроде mod_backhand, но не сам mod_backhand, он нам не подходил. На веб-серверах бежит модуль Apache::SendStats (custom, тоже мной написан), который броадкастит в UDP количество свободных детей данного сервера в конце каждого запроса. rewrite balancer-ы, бегущие на машинах mod_proxy, слушают эту статистику и выбирают для передачи mod_rewrite один из свободных серверов по weighted average.

(вместо броадкаста надо, наверное, по-хорошему сделать мультикаст, но мы не собрались пока).

Date: 2003-11-11 08:30 am (UTC)
From: [identity profile] godegisel.livejournal.com
>> У нас главное именно load balancing бэкенда, а он в этом смысле ничего нового не даёт.

Очень даже дает. Тут (http://sysoev.ru/mod_accel/readme.html#mod_proxy) есть описание, в чем mod_proxy лажает при работе с backend'ом.

Возможностей performance tuning'а гораздо больше чем с mod_proxy. Опять же хорошо обрабатывает авторизацию по cookies и можно тонко управлять expires.

В тему - с mod_deflate же контент очень хорошо жмется (автор тот же). Все pitfalls учтены.

Насчет transparent redirect - самому надо. В mod_accel есть hook - note "accel_rewrite_response". Т.о. пишется нехитрый модуль и все. Лично у меня руки как-то не доходят.

Date: 2003-11-11 06:42 pm (UTC)
From: [identity profile] avva.livejournal.com
Спасибо!

Мы внимательно посмотрим на mod_accel и, возможно, будем пользоваться именно им. Я действительно не знал о недостатках mod_proxy в вопросе ускорения бэкенда.

Date: 2003-11-17 05:42 am (UTC)
From: [identity profile] isysoev.livejournal.com
Как уже было замечено, для транспарент редиректа можно использовать accel_rewrite_response - в обработчике делать sub_request.

Примитивный (на основе dns) load-balancing и fault-tolerance есть. Более умный можно прикрутить через hook open_backend.

Можно кэшировать ответ с учётом куки, то есть, обычные и залогиненые пользователи получат разные ответы. Не знаю, правда, даст ли что-нибудь в вашем случае кэширование.

В общем, вопросы - welcome.

Но должен заметить, что mod_accel - это вчерашний день.
Я сейчас пишу веб и прокси-сервер, который работает на select/kqueue/etc
Так вот, там будет фич по-более посравнению с mod_accel.

Date: 2003-11-22 02:38 pm (UTC)
From: [identity profile] avva.livejournal.com
Большое спасибо.
Я, видимо, буду пристально изучать mod_accel на следующей неделе. Если будут вопросы, напишу.

Кэширование в нашем случае бесполезно. Очень важна совместимость с mod_rewrite, но, насколько я понял, она есть.

Веб-сервер мы вряд ли будем менять, т.к. основная работа у нас происходит в Перле, и всё завязано на mod_perl ;)

Если Вы пишете аппликации на select/kqueue, возможно, стоит взглянуть на epoll (select в Линуксе начинает тормозить с большим количеством подключений). Есть неплохая библиотека libevent, которая абстрагирует разные методы оповещения в общий интерфейс; я воспользовался ей при написании memcached, которым мы сейчас пользуемся в больших масштабах.

Date: 2003-11-11 01:35 pm (UTC)
From: [identity profile] meshko.livejournal.com
2. Практически везде Debian Linux, stable. Исключение - NetApp и BigIP, на которых бежит их специальный софт (что не NetApp, я не знаю, а на BigIP старая сильно модифицированная BSDi, если не ошибаюсь).

Человек, от которого мы унаследовали наш NetApp, говорил, что на нём FreeBSD (естественно сильно переделанная), но доказательств у меня нет.
Мне кажется, lj тоже раньше были не на Дебиане, если это так, почему на него перешли?

Date: 2003-11-11 01:41 pm (UTC)
From: [identity profile] avva.livejournal.com
Когда-то очень давно LJ был на FreeBSD, но это было в очень древние времена (когда всего было 3-4 сервера. Меня тогда в ЖЖ не было, конечно). Из-за проблем со скоростью TCP-стэка (не знаю, были эти проблемы вызваны реальными недостатками FreeBSD, или плохим драйвером/плохой конфигурацией. Брэд, по-моему, и сам это не помнит) было решено перейти на Линукс, и сначала поставили RedHat. Но потом, примерно два года назад или чуть больше, Брэд решил перейти с RedHat на Дебиан, в основном потому что ему очень нравится дебиановская система package management. Ну и во всём остальном Дебиан себя оправдала.

оффтопик

Date: 2003-11-11 01:54 pm (UTC)
From: [identity profile] meshko.livejournal.com
Ну и во всём остальном Дебиан себя оправдала.

Не пойму, Линукс вроде он? Дебиан я бы тоже сказал он? Или всё-таки она, т.к. операционная система? Или имеется в виду Дебора, которая первая в названии Дебиан? Вот про FreeBSD явно хочется сказать "она".

Re: оффтопик

Date: 2003-11-11 01:56 pm (UTC)
From: [identity profile] avva.livejournal.com
Она - система в данном случае.
Я и про FreeBSD скажу она, и про Дебиан.

Date: 2006-11-07 11:23 pm (UTC)
From: [identity profile] nm-work.livejournal.com
проблемы со скоростью стека с FreeBSD - миф.

нужно просту увеличисть радиус кривизны рук :)

January 2026

S M T W T F S
    1 2 3
45678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 5th, 2026 02:33 am
Powered by Dreamwidth Studios