Назад | Перейти на главную страницу

Можно ли сделать приложение балансировки нагрузки nginx и серверы кеширования «параллельно»?

Я только что прочитал это Статья Digital Ocean и было интересно, если топология в последнем примере можно реализовать с помощью nginx.

Я заинтересован в как балансировщик нагрузки обрабатывает два выделенных сервера кеширования, которые НЕ находятся перед серверами приложений. Они описывают процесс так:

  1. Балансировщик нагрузки проверяет кеш-серверную часть, чтобы узнать, кэшируется ли запрошенный контент (попадание в кеш) или нет (промах в кеше)
  2. Если попадание в кеш: вернуть запрошенный контент в балансировщик нагрузки и перейти к шагу 7. Если сбой в кеше: кеш-сервер перенаправляет запрос в приложение-серверную часть через балансировщик нагрузки
  3. Балансировщик нагрузки перенаправляет запрос в серверную часть приложения.
  4. app-backend читает из базы данных, а затем возвращает запрошенный контент в балансировщик нагрузки
  5. Балансировщик нагрузки пересылает ответ на серверную часть кеша.
  6. cache-backend кэширует контент, а затем возвращает его в балансировщик нагрузки
  7. Балансировщик нагрузки возвращает запрашиваемые данные пользователю

Я предполагаю, что балансировщик нагрузки должен иметь две группы в восходящих директивах:

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 выглядит избыточной.