веб сервер балансировка нагрузки

1 23
A
На сайте с 10.10.2007
Offline
25
#21

Достаточно много балансеров, которые сохраняют треки tcp соединений с одним определенным бэкэндом. Попробуйте в тесте простой балансер, например, pen (http://siag.nu/pen/). (Работают они довольно просто, при желании Вы можете осилить написать собственный балансер, который будет работать по нужным Вам правилам.) Этим вскроете возможные подводные камни в части работы вашего веб-проекта с сессиями, потом можно внедрять более продвинутые балансеры.

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

------ это не завуалирование предложение себя в качестве эксперта. это мнение. Поведение в споре должно быть простым: (с) Стили спора (http://www.jvanetsky.ru/data/text/t7/stili_spora/?print=1) М.М.Ж.
D
На сайте с 05.06.2007
Offline
155
#22

Немного в тему )

А если один сервер не справляется отдавать фотографии (например узкий канал или измотаный HDD), как перенести нагрузку на другой сервер?

При загрузке фотографии грузить её сразу на 2 сервера, а потом для отображения менять урл на другой сервер?

ИЛИ можно настроить второй сервер так что если к нему обращаются за фоткой а её нет, то он берёт эту фотку и грузит с главного сервера себе, а при втором запросе уже грузит со своего ХДД. Есть ли такое готовое решение?

Т.е. сделать так чтобы статика сама забиралась разными серверами, при необходимости)

Написал не мало шедевров ;)
Boris A Dolgov
На сайте с 04.07.2007
Offline
215
#23

конфиг нгинкса типа

s1 - в /var/wwwroot/ заливаются картинки

s2 - балансировщик, выбирает откуда отдавать картинку

s3 - доп. сервер

s1:

server{
listen s1:80;
location / {
root /var/wwwroot;
}
}

s2:


upstream sN {
server s1;
server s3;
}
server {
listen s2:80;
location / {
proxy_pass http://sN:80/;
}
}

s3:


server {
listen s3:80;
location / {
root /var/wwwroot;
error_page 404 = @get;
}
location @get {
proxy_pass http://s1:80/;
proxy_store /var/wwwroot$original_uri;
}

Вот такое вот простое подобие кеширования.

Можно синхронизировать s1 и s3 rsync'ом, тогда у s3 будет конфиг как у s1.

В конфиге писал только основное, без доп. настроек для производительности и нормальной работы

Boris A Dolgov добавил 06.07.2008 в 16:16

А еще балансировку между s1 и s3 можно осуществлять не нгинксом на s2, а, напримеp, round robin'ом.

С уважением, Борис Долгов. Администрирование, дешевые лицензии ISPsystem, Parallels, cPanel, DirectAdmin, скины, SSL - ISPlicense.ru (http://www.isplicense.ru/?from=4926)
Andreyka
На сайте с 19.02.2005
Offline
822
#24
Dimanych:

ИЛИ можно настроить второй сервер так что если к нему обращаются за фоткой а её нет, то он берёт эту фотку и грузит с главного сервера себе, а при втором запросе уже грузит со своего ХДД. Есть ли такое готовое решение?

Готового неизвестно, но такое сделать самому вполне реально

Не стоит плодить сущности без необходимости
Dreammaker
На сайте с 20.04.2006
Offline
570
#25

Dimanych,

обсуждали со знакомым масштабирование проектов на Symfony (php-фреймворк) . Он нашёл плагин sfMogileFSPlugin, который позволяет работать с файловой системой MogileFS.

Эту файловую систему использует ряд известных интернет-проектов:

сайт Symfony:

MogileFS is an anagram for "OMG Files" and was created by LiveJournal to handle the storage, replication and retrieval of the large amount of file uploads they were, and continue to, experience. Many of the web's most popular sites use MogileFS as their file store. This includes Blip.tv, Digg, Last.fm, Friendster, Guba, Vox, and many others.

Сайт самой системы - http://www.danga.com/mogilefs/

Посмотрите может пригодится :)

A
На сайте с 15.01.2007
Offline
22
#26
qwartyr:
А не будут клиенты между серверами перепрыгивать ?

цитата с официального сайта


Директива задаёт метод распределения запросов по серверам на основе IP-адресов клиентов. В качестве ключа для хеширования используется сеть класса C, в которой находится адрес клиента. Метод гарантирует, что запросы клиента будут передаваться на один и тот же сервер. Если же этот сервер будет считаться неработающим, то запросы этого клиента будут передаваться на другой сервер. С большой долей вероятности это также будет один и тот же сервер.
Boris A Dolgov
На сайте с 04.07.2007
Offline
215
#27

только при использовании ip_hash, а он не позволяет задавать веса для серверов, что не удобно.

Вообще, сессии по хорошему надо на сетевой ФС хранить.. как вариант - в мемкешде.

1 23

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий