Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Распределение нагрузки по серверам 
:(
    Опции темы
Wowa
Дата 5.3.2008, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Пишу проект на PHP, использую в качестве веб-сервера Apache.. Нужна система способная справиться с очень большим объемом посетителей на сайте. Переписать всё на яву - не предлагайте. Не вижу смысла. Мне кажется, что решения написанные на пхп должны без проблем справляться с любой нагрузкой, если распределить обработку пхп-скриптов по разным серверам (пример: wikipedia). А в Базу данных поставить на отдельном сервере/серверах. 

Т.е. со стороны Базы данны - проблем не предвидится, т.к. есть много хорого зарекомендовавших себя технологий. Интересная сторона PHP. Давайте пообсуждаем, как бороться и распределять нагрузку.

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


А если серверов достаточно, то как распределять нагрузку лучшим образом? Какие есть решения, предложения?
PM WWW   Вверх
awers
Дата 5.3.2008, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: нет
Всего: 31



Варианта всего два. Cisco - балансировщик нагрузок, либо грамотная реализация MVC. Других вариантов я не вижу
PM MAIL WWW ICQ Skype   Вверх
Wowa
Дата 5.3.2008, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Цитата(awers @  5.3.2008,  13:38 Найти цитируемый пост)
Cisco - балансировщик нагрузок

балансировщик ведь может быть любой.
PM WWW   Вверх
awers
Дата 5.3.2008, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: нет
Всего: 31



Wowa, я незнаю других ) 
PM MAIL WWW ICQ Skype   Вверх
Sardar
Дата 5.3.2008, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 2
Всего: 317



Цитата(Wowa @  5.3.2008,  13:28 Найти цитируемый пост)
Можно использовать в качестве веб-сервера nginx

Вообще то это не совсем вебсервер, а reverse-proxy, собственно то что тебе нужно. reverse-proxy - быстрая штука, распределяющая запросы на целую сетку серверов. Сам он ничего не вычисляет, просто держит/отдаёт статику, которую push'ат сервера на подобии apache.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Wowa
Дата 5.3.2008, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



ок, но как мне кажется самое простое и действенное решение, это распределять загрузку уже на уровне DNS (round robin DNS).

ДНС-сервера будут выдавать случайным образом IP-адрес какого-то веб-сервера. 

А с помощью этой штуки можно управлять распределеним. Например, временно убирать из списка перегруженные сервера.
http://www.math.utah.edu/~pocock/lbnamed.html


PM WWW   Вверх
Feldmarschall
Дата 5.3.2008, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: -2
Всего: 32



Стоило, наверное, посетить HighLoad или, хотя бы, Веборуб, если планировалась такая задача
Вообще, с нуля, на форуме такие вещи не делаются, имхо.
Ну что насоветуют такие советчики, как я? Тут действительно надо общаться со специалистами. 
Насколько я понимаю, тут же все в комплексе. 
отдельно - сервера с динамикой, ngnix + PHP fcgi
отдельно - с картинками, ngnix или что-то ещё легче.
фронтендами(ом?) в Мамбе, насколько мне известно, стоит ngnix
сессии в мемкеше.
вообще, можно посмотреть презентации с ХайЛоада, http://highload1.rutube.ru/
там должны быть, кажется, как раз, схемы.
PM   Вверх
marykone
Дата 5.3.2008, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2722
Регистрация: 2.5.2006
Где: Краснодар

Репутация: нет
Всего: 67



Цитата(Wowa @  5.3.2008,  16:02 Найти цитируемый пост)
(round robin DNS).


совместно можно srv - запись использовать !! 


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

PM   Вверх
Sardar
Дата 5.3.2008, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 2
Всего: 317



Цитата(Wowa @  5.3.2008,  15:02 Найти цитируемый пост)
ок, но как мне кажется самое простое и действенное решение, это распределять загрузку уже на уровне DNS (round robin DNS).

Тогда нужно истинно REST (state-less) сервисы, т.е. никаких PHP сессий. А это значит большую половину нынешнего кода в утиль. Хотя этот форум так разгрузить можно, он сессии свои в базе держит. Также могут быть траблы если целая сеть будет использовать DNS кеш, тогда все ломануться на твою прервую машину и так до обновления кеша...


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Endeveit
Дата 6.3.2008, 13:13 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 2.6.2006

Репутация: 1
Всего: 7



В самом простейшем случае - отказаться от монструозного апача в пользу "лайти", который имеет встроенный балансировщик.
Подробнее тут.
PM WWW   Вверх
FractalizeR
Дата 8.3.2008, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 27.12.2007
Где: Россия/Москва

Репутация: 1
Всего: 4



Подобная проблема уже обсуждалась на форуме неоднократно. И рекомендации приводились (типа папку для хранения сессий разместить на одном из серверов и примонтировать по NFS на все остальные). Думаю, сначала стоит прочитать все, что есть по этому вопросу на форуме и только потом начинать тему с вопросом.

Это сообщение отредактировал(а) FractalizeR - 8.3.2008, 13:37


--------------------
Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя.
PM MAIL   Вверх
IZ@TOP
Дата 12.3.2008, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Вов, чем тебе Nginx не угодил? У нас все проекты им прикрыты как балансером. Статику им же отдаем (картинки, css, js и т.п.). Посещаемость - от 1 млн. до 100 млн. обращений в сутки.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
WIPS
Дата 30.4.2008, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 22.5.2006
Где: Украина, Киев

Репутация: нет
Всего: 8



Сервера закрываем CARP-ом.
Сессии в БД или через NFS.
Скрипты либо дублируются по всем серверам, либо опять же доступны через NFS.

Хотя идея с NFS имеет один минус - если сервер отваливается, все процессы обращающиеся туда лочатся, что не очень приятно.
--------------------
Автопроизводители, машины, марки, модели!
PM MAIL WWW ICQ Skype   Вверх
Wowa
Дата 13.5.2008, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Стартовав эту тему я заблуждался думая. что проблем с Базой Данных не будет. На самом деле это самая серьезная проблема в сильно посещаемых проектах.

Для сессий и кеширования надо использовать memcache запущенный на отдельном(-ых) сервере(-ах). База при определённой нагрузке начнет не справляться с сессиями.
PHP масштабируется очень легко. Хотя бы даже через робин ДНС или nginx

Полнотекстовый поиск по БД - тут Сфинкс подойдет. Также масштабирование не вызовет проблем. 

А вот для базы данных  нужно ставить один Master(операции записи) и несколько Slave-серверов(операции чтения). Использовать репликацию. 

Но при определенной нагрузке, БД все равно не будет выдерживать. Поэтому базу и таблицу придеся сегментировать(прим. разделять на части).
IZ@TOP, у вас применяется сегментирование БД ? Интересно бы знать, когда без него уже не обойтись. При каком объеме данных и при каком кол-ве запросов.
PM WWW   Вверх
Kallisto
Дата 14.5.2008, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 163
Регистрация: 20.4.2007

Репутация: 2
Всего: -1



Wowa,  можешь написать какая стоит сейчас архитектура и что используется.
Самому интересно в дальнейшем будущем будет, прошу поделиться идеей.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.1076 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.