Я только что прочитал это Статья Digital Ocean и было интересно, если топология в последнем примере можно реализовать с помощью nginx.
Я заинтересован в как балансировщик нагрузки обрабатывает два выделенных сервера кеширования, которые НЕ находятся перед серверами приложений. Они описывают процесс так:
Я предполагаю, что балансировщик нагрузки должен иметь две группы в восходящих директивах:
upstream cachebackend {
server cache-1.example.com;
server cache-2.example.com;
}
upstream appbackend {
server app-1.example.com;
server app-2.example.com;
}
а затем из директивы сервера:
location / {
proxy_pass http://cachebackend;
# if that one is a MISS, request this one:
# proxy_pass http://appbackend;
# and then save the response on the cachebackend
# before returning it to the client
}
Я хочу знать, как сказать nginx, чтобы он выполнял описанные выше шаги, и возможно ли это вообще.
Спасибо :)
Nginx может одновременно балансировать нагрузку и кэшировать, вам просто нужно настроить зону кеширования, используя proxy_cache_path
директиву и назначьте ее конкретному server {}
или location {}
с помощью proxy_cache
. Итак, в заключение, при использовании nginx и в качестве балансировщика нагрузки, и в качестве кеша, архитектура Digital Ocean выглядит избыточной.