Я просто прочитал эту статью 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
и назначить ее конкретному серверу {}
или местоположение {}
с использованием proxy_cache
. Итак, в заключение, если использовать nginx и как балансировщик нагрузки, и как кэш, архитектура Digital Ocean выглядит избыточно.