nginx + memcache

Sergey Shepelev temotor на gmail.com
Чт Ноя 24 01:37:39 UTC 2011


2011/11/24 Дугин Сергей <drug at qwarta.ru>:
> Здравствуйте, Alexandr.
>
> Туплю, не могу понять для чего нужен memcache в nginx :)
> доку прочитал http://nginx.org/ru/docs/http/ngx_http_memcached_module.html
> по прежнему туплю.
>
> Теперь вопрос.
>
> Есть два сервера на одном стоит
> memcache (допустим он висит на ip 8.8.8.8:11211)
> на  втором  сервере  тоже  стоит  memcache   (допустим  он висит на ip 8.8.4.4:11211)
>
> На третьем сервере стоит nginx и php скрипты
> может  ли  nginx  с  помощью этого модуля раскидывать запросы от php к
> мемкешу   в   качестве   прокси-балансировщика   между  двумя  мемкеш
> серверами.
>
> То  есть  в  пхп  скрипте я делаю коннект к 10.0.0.10:11211 на этом IP
> висит nginx и запросы перекидывает на один из двух мемекеш серверов.
>
> И если есть возможость киньте пример какой-нить.
>
> Спасибо.
>

Нет. Единственная задача модуля memcached в стандартной поставке
nginx: отдавать пользователю ответы из мемкеша. В случае, если в
мемкеше нужных ключей нет, продолжается обычная обработка (например
proxy_pass на php).

Чтобы *балансировать* нагрузку между двумя мемкешами, вы можете
воспользоваться, например, haproxy.

Но балансировать нагрузку между мемкеш серверами - это что-то
мифическое-фантастическое, потому что никакой нагрузки мемкеш не
создаёт, нечего балансировать. Обычно приложение подключается ко всем
мемкеш серверам и использует несколько серверов для увеличения
доступного объёма кеша. То есть часть ключей приложение кладёт (и
читает) на первый мемкеш-сервер, часть на второй и т.д. Есть простые и
хорошие алгоритмы для распределения ключей по серверам. В любом
случае, всем этим занимается приложение, без промежуточных проксей.


Подробная информация о списке рассылки nginx-ru