Действительно ли возможно заставить nginx загрузить серверы приложений баланса и серверы кэширования в “параллели”?

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

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

  1. Подсистема балансировки нагрузки проверяет бэкенд кэша, чтобы видеть, кэшируется ли требуемое содержание (удачное обращение в кэш) или не (неудачное обращение в кэш)
  2. Если удачное обращение в кэш: возвратите требуемое содержание подсистеме балансировки нагрузки и переход к Шагу 7. Если неудачное обращение в кэш: сервер кэширования передает запрос к бэкенду приложения через подсистему балансировки нагрузки
  3. Подсистема балансировки нагрузки передает запрос до бэкенда приложения
  4. чтения бэкенда приложения от базы данных затем возвращают требуемое содержание подсистеме балансировки нагрузки
  5. Подсистема балансировки нагрузки вперед ответ на бэкенд кэша
  6. бэкенд кэша кэшируется, содержание затем возвращает его подсистеме балансировки нагрузки
  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 выполнять шаги выше, или если это возможно вообще.

Спасибо :)

2
задан 23 September 2015 в 20:30
1 ответ

Nginx может одновременно балансировать нагрузку и кэшировать, вам просто нужно настроить зону кеширования с помощью директивы proxy_cache_path и назначить ее конкретному серверу {} или местоположение {} с использованием proxy_cache . Итак, в заключение, если использовать nginx и как балансировщик нагрузки, и как кэш, архитектура Digital Ocean выглядит избыточно.

1
ответ дан 3 December 2019 в 12:44

Теги

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