Задать вопрос

load balancer — как лучше сделать и где воткнуть varnish?

привет, рисую схему серверов для теста, и вот думаю где поставить varnish.
раньше хорошо работала схема:
USERS <-> ([VARNISH:80]{NGINX:8080}[APC]php-fpm:9000{memcached}[DB])
както так…

но нагрузка стала расти от количества пользователей соответственно, и решил я вставить балансер и разбить все на 3-4 сервера + сервер под базу данных.
тоесть встал вопрос как расположить кеш и веб сервера после балансера.
1. USERS <-> Nginx LBS <-> (Varnish|Webserver1) <-> [Webserver2] <-> [DB]
2. USERS <-> Nginx LBS <-> (Varnish1|Webserver1) <-> (Varnish2|Webserver2) <-> [DB]
3. USERS <-> Nginx LBS <-> (Varnish) <-> [Webserver1] <-> [Webserver2] <-> [DB]

можно настроить балансер чтобы равномерно распределял юзеров и цеплял их каждый к одному серверу только.

и потом чтото типа
upstream varnish {
server Varnish;
}

upstream webserver {
ip_hash;
server Webserver1;
server Webserver2;
}

location /
proxy_pass varnish;

if error 40x 50x = @webserver

location @webserver
proxy_pass webserver;

илиже воткнуть варниш впереди затем нжинкс и баланс на два сервера…
- ({NGINX:80}[APC]php-fpm:9000{memcached}) -
USERS <-> [VARNISH] <-> {NGINX LBS} | | <-> [DB]
- ({NGINX:80}[APC]php-fpm:9000{memcached}) -


или сделать как в самом первом варианте только вытинуть бд?


- ([VARNISH:80]{NGINX:8080}[APC]php-fpm:9000{memcached}) -
USERS <-> {NGINX LBS} | | <-> [DB]
- ([VARNISH:80]{NGINX:8080}[APC]php-fpm:9000{memcached}) -


кто что скажет?
  • Вопрос задан
  • 4575 просмотров
Подписаться 13 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 6
VBart
@VBart
Может стоит для начала кэширование как следует настроить?

В магазинах, как правило, основная динамика — это поиск и заказ. Последний происходит относительно редко и большой нагрузки не представляет. Поиск надо оптимизировать на стороне приложения. Все остальные страницы, в том числе, страницы с описаниями товаров лучше всего генерировать только при добавлении\изменении информации на них, а дальше уже отдавать статически.
Ответ написан
redbutcold
@redbutcold Автор вопроса
магазин, куча пользователей на одном сервере 16г\рам при 512М memory_limit,10к продутов база данных, хочется немного свободы для начала, разбавить народ по серверам идея интересная чем просто памяти еще впихнуть.
Ответ написан
redbutcold
@redbutcold Автор вопроса
читал смотрел раньше про Redis, ок пошел ставить.
а товаров добавляют каждый день, да и народу много налазит с каждым днем.
хм, линоде… мне всетаки дешевле взять еще сервер и маленький серверочек и замутить самому.
спасиб
Ответ написан
Комментировать
redbutcold
@redbutcold Автор вопроса
Зачем вам Varnish?
nbonvin.wordpress.com/2011/03/24/serving-small-static-files-which-server-to-use/
Update 2 (Apr 14, 2011)
@VBart
Varnish Cache 3.0.2
Submitted by tfheen on Wed, 2011-10-26 16:08
Ответ написан
@sevmax
Как насчет варианта:
Users — Varnish+Nginx LB — [WebServer1..N] — Memcached — DB
Т.е. Varnish будет принимать соединения от пользователей на 80 порту, отдавать кеш, затем все остальное форвардить на localhost:8080 где сидит Nginx, который распределяет трафик далее по нодам.
Удачи!
Ответ написан
redbutcold
@redbutcold Автор вопроса
думаю вернее будет начать с такого
1. USERS <-> Nginx LBS <-> (Varnish|Webserver1) <-> [Webserver2] <-> [DB]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы