Организация обработки запроса несколькими серверами?

seva2

Партнер PHPClub.ru
Организация обработки запроса несколькими серверами?

Собираемся делать такую структуру:

NGINX распределяет
/ \
веб-сервер N1 веб-сервер N2
\ /
MYSQL

Вопрос, что думаете о такой структуре?
На случай если NGINX сервер откажет, как быть?)
И вообще, может есть что лучше?
 

HraKK

Мудак
Команда форума
на случай если откажет - должен быть прописан запасной возможно на него стоит переложить любой из веб серверов если есть недостаток серверов
 

phprus

Moderator
Команда форума
seva2
Не будет ли в данной схеме самым узким местом сервер MYSQL?
 

seva2

Партнер PHPClub.ru
Почему слишком Жирно? Если трафик под 50 тысяч?
Просто как еще 2 веб сервера организовать работу.

Мне кажется слабое место это NGINX)

Wicked спасибо!
 

MiksIr

miksir@home:~$
Нет, нада рассказать что есть и что хочется.... если есть желание, что бы помогли ;)
- прибор?
- 50!
- что "50"?
- а что "прибор"?

-~{}~ 23.07.08 19:18:

Если не ясен пой предыдущий вопрос, то... сколько есть серверов и что хочется получить - отказоустойчивость (на сколько серверов) или распределение нагрузки или и то и другое (при 2-х серверах не доступно)
 

seva2

Партнер PHPClub.ru
сейчас есть 1 веб и 1 mysql
Собираюсь покупать еще 1 веб и 1 для NGINX
 

MiksIr

miksir@home:~$
В таком случае отдельный под nginx и правда жирно. nginx кушает мало процессора и умерено памяти.

Имея 3 сервера вполне можно реализовать LB+HA схему.
Т.е. два сервера - nginx+backend, один - только backend, хотя для более легкой переносимости конфигов (если сервера более-менее одинаково сконфигурены) можно и все три сделать nginx+backend.

Каждый nginx знает про все три бекенда и на них ходит. HA тут достигается для nginx-а - или hearbeat или carp; для бекенда - сам nginx.

LB самого nginx-а дело вкуса и схемы данных. Если захочется делать все же делать - тут можно и DNS-ом, но в принципе можно и остановиться на схеме - один nginx работает, другой отдыхает.

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

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

Вот тут как раз и видно, можно ли балансить nginx или нет. Если продукт можно настроить так, что бы по закачке чего-то он это чего-то клал и на вторую ноду, то спокойно балансим nginx. Если такая схема трудна, то можно по крону просто rsync-ать с активной ноды на пассивную и nginx не балансить. Тогда, правда, не забыть для nginx написать правило, что бы POST он слал только на свой бекенд. Тут придумали еще кучу разных схем... заполнение нод "по запросу" и т.д., ну да долго о всех рассказывать.

Если реализуете такую схему - слабым местом станет только один сервер базы данных. Что, кстати, странно, ибо база то, обычно, начинает быстрее стучать в потолок, чем бекенды. Может подумать все же о схеме 2(nginx и бекенд)+2 (mysql) b определиться что важнее LB или HA.
 

seva2

Партнер PHPClub.ru
Нет сейчас 8 ядровый сервак держит норм, загружен на 1/8 только.

А вот NGINX часто выдает time-out + 502/504

Что надо 2 веб сервера это точно) шас дам прочесть твой ответ админу, потом сам прокоменчу)
 

MiksIr

miksir@home:~$
seva2 502/504 говорит о том, что nginx-у не ответил бекенд, т.е. он чем-то занят. Т.е. это проблема бекенда, а не nginx.
 

seva2

Партнер PHPClub.ru
А что думаете по такой схеме:
мы поднимаем на 3-х серверах полные наборы апач+нгинкс
На главном мы прописываем бекенды для распределение нагрузки
из 8 клиентов 2 останутся на внешнем сервере и по 3 уудт на бекенды сервера 2 и 3
+ отдельный сервер под mysql


Что думаете и какие слабые стороны у такой системы есть?
 
Сверху