<---> NGX CACHE - NODE A \
REQUESTS <---> LB <--> <----> SHARED FS (NAS)
<---> NGX CACHE - NODE B/
Я пытаюсь выполнить что-то вроде этого, запросы сбалансированы по нагрузке между несколькими узлами, которые должны обслуживать общий кешированный контент, когда он доступен. Мы испытываем случайные результаты MISS, хотя содержимое хранилось в файловой системе кэша одним из других узлов. Из журналов видно, что иногда узел A идентифицирует содержимое HIT, кэшируемое узлом B, но иногда это не так.Содержимое общего кэша в балансировке нагрузки nginx proxy
В соответствии с документацией https://www.nginx.com/blog/nginx-caching-guide/ обязательный параметр keys_zone устанавливает зону общей памяти для хранения ключей кеша и метаданных, чтобы быстро определить, является ли запрос HIT или MISS без необходимости обращения на диск.
Это соответствующая часть нашей конфигурации:
proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=my_zone:10m max_size=10g inactive=60m use_temp_path=off;
: : :
location ~* ^/api/rdPage.aspx {
resolver 10.0.0.1;
add_header X-Cache-Status $upstream_cache_status;
proxy_cache_bypass $http_pragma;
proxy_cache_key "$proxy_host$uri$request_body";
proxy_cache_valid 200 10m;
proxy_ignore_headers Cache-Control Expires Set-Cookie;
proxy_cache_methods POST;
proxy_cache_min_uses 0;
proxy_cache my_zone;
# WITH PROXY LB SERVER
proxy_pass http://api-server/rdPage.aspx$is_args$args;
proxy_headers_hash_bucket_size 128;
proxy_connect_timeout 15;
proxy_send_timeout 15;
proxy_read_timeout 1800;
}
Какой keys_zone «общий» зона работы памяти для нескольких узлов? Если это в памяти, как это можно использовать? Любые альтернативы без добавления настраиваемых модулей, таких как SR Cache, в nginx (https://www.nginx.com/resources/wiki/modules/sr_cache/)?