У нас есть 8 серверов API REST-ish с Nginx, использующих FastCGI с PHP-FPM для обработки запросов. В настоящее время мы используем кэширование FastCGI Nginx (например, директивы fastcgi_cache_path
). Это означает, что ответы API кэшируются, но для каждого сервера существует отдельный кеш.
Есть ли хороший способ разделить кеш-память между всеми восемью серверами?
Мы рассмотрели возможность использования Redis в качестве общего хранилища, но для доступных модулей требуется изменение приложения. В некоторых случаях мы можем захотеть кэшировать ответы вне нашего контроля (через HTTP для внешних API). В идеале должна быть доступна встроенная замена Nginx для быстрого кэширования ответов FastCGI и HTTP.
Ответы:
Похоже, на этой странице есть довольно новое сообщение в блоге на https://www.nginx.com/blog/shared-caches-nginx-plus-cache-clusters-part-1/ . Этот первый пример может быть полезен, если вы используете более двух серверов кеша nginx.
Особенно вторая часть поста звучит интересно для моего текущего варианта использования, где я хочу автоматически повторно сканировать измененные элементы в мои кеши.
Он также должен работать с версией NGINX с открытым исходным кодом. По сути, он работает, передавая запрос каскадно через каждый сервер NGINX (Nginx-Cache1-> NGinx-Cache2-> Origin-Server), каждый сервер кэширует из соответствующего апстрима, и при желании можно также создать кластер высокой доступности. https://www.nginx.com/blog/shared-caches-nginx-plus-cache-clusters-part-2/
источник